10月28日,GitHub正式推出GitHub Actions工作流依赖锁文件功能(正式版),距该功能进入公开预览阶段仅两周。工作流可保留清晰的标签和分支引用,运行器则执行.github/workflows/actions.lock文件中列出的代码提交,即便后续这些标签或分支引用发生变化也不受影响。该功能支持GitHub企业云版、含数据驻留的企业云版、团队版以及免费版,正式版包含预览阶段的所有功能。
本次更新旨在解决Actions依赖解析长期存在的短板。类似actions/checkout@v4或分支名这类引用可能发生变化,若某个Action被篡改,攻击者无需修改使用该Action的代码库即可向流水线注入恶意代码。团队虽可手动固定为完整提交SHA,但可读性变差,且无法固定复合Action的传递依赖。锁文件通过记录直接依赖和传递依赖的提交哈希,同时解决了这两个问题。
相关工具通过GitHub CLI的gh actions-lock扩展提供,用于生成和维护锁文件,并提供验证模式,可在不修改任何文件的情况下检查锁文件是否为最新状态,作为CI门禁发现工作流文件与锁文件之间的差异。Dependabot集成则解决固定依赖带来的引用过期问题:当某个Action发起版本更新时,锁文件条目会同步更新,两项变更出现在同一个拉取请求中。企业、组织和代码库管理员还可启用“Require lockfile”策略推动采用。
GitHub同时说明了该机制的局限性:锁文件只能保证运行时使用锁定的提交,无法保证这些提交本身安全,建议在锁定依赖前进行审查。此外,GitHub正在收紧Actions的其他默认安全策略,pull_request_target将从12月2日起默认被阻止。截至目前,其他同类平台尚未宣布推出类似原生功能,GitLab与Azure Pipelines的指南仍建议手动将依赖固定到提交SHA。
扫码查看视频号
咨询
咨询