CNCF:固定到不可变摘要、最小权限令牌和临时运行器——更安全的GitHub Actions管道实践指南
云原生计算基金会(CNCF)安全技术顾问组(TAG)于2026年5月4日发布了保护GitHub Actions CI/CD管道免受供应链攻击的实践指南。Marina Moore、Evan Anderson和Sherine Khoury提出了五项具体实践,并列举了zizmor、frizbee、pinact、ratchet和Dependabot等工具来执行这些实践。
本文由人工智能基于一手来源生成。
云原生计算基金会(CNCF)安全技术顾问组(TAG)于2026年5月4日发布了实践指南**《保护GitHub Actions CI依赖项——实践卡片》**。作者Marina Moore、Evan Anderson和Sherine Khoury专注于CI/CD管道中的供应链风险,为维护者和DevSecOps团队提供了五项具体的安全实践。
为什么GitHub Actions是供应链攻击的攻击面?
作者措辞犀利:**「运行第三方Action相当于克隆其代码并在您自己的权限空间内执行。」**被攻破的依赖项可能暴露密钥(API密钥、部署凭证)、在构建前修改代码或破坏包向注册表的发布流程。
五项推荐实践是什么?
-
使用前评估 — 优先使用来自可信组织或具有GitHub验证的Action,并关注定期更新和活跃社区。上次提交在一年前、只有3个贡献者的Action与未知软件包同样危险。
-
固定到不可变摘要 — 将可变标签(如
@v1)替换为唯一的提交SHA哈希值。否则,「任何有权限更新上游标签的人都可以更改您的成分」——上游账户的任何攻破都会以相同标签名称的静默重启传播。 -
自动更新依赖项 — 使用Dependabot或Renovate定期刷新Action,以「从最新的安全更新中受益」。固定而不自动更新会让您停留在过时版本上。
-
最小权限令牌访问 — 将GITHUB_TOKEN权限限制在工作流所需的最小范围。默认权限过于宽泛;明确声明工作流实际需要哪些权限可以在发生攻击时大幅减少波及范围。
-
选择运行器基础设施 — 在GitHub托管的临时运行器和自托管运行器之间做出选择,并了解安全权衡。临时运行器以干净的磁盘开始和结束每个作业;自托管运行器提供控制权,但需要自行加固。
CNCF具体推荐哪些工具?
CNCF文章列举了解决上述实践的具体开源工具:
- zizmor、frizbee — 扫描工作流安全问题
- pinact、pin-github-action、ratchet — 自动固定到提交SHA
- scorecard — 自动评分依赖仓库的安全性
- Dependabot、Renovate — 通过拉取请求进行自动更新
实践卡片格式具有可操作性——这不是理论分析,而是DevOps团队可以立即应用的检查清单。
文章于2026年5月4日在cncf.io上发布。
常见问题
- 为什么第三方GitHub Action是安全风险?
- 运行第三方Action相当于克隆其代码并在您自己的权限空间内执行,作者指出。被攻破的依赖项可能暴露密钥、修改代码或破坏包发布流程。
- 固定到不可变摘要意味着什么?
- 不使用可变标签(如@v1)——上游仓库所有者可以更改这些标签——而是绑定到唯一不可变的提交SHA哈希值。这确保对上游有访问权限的任何人都无法在您不知情的情况下更改您的依赖项。
- CNCF具体推荐哪些工具?
- 用于固定:pinact、pin-github-action、ratchet。用于工作流扫描:zizmor、frizbee。用于评分:scorecard。用于自动更新:Dependabot和Renovate。