SuperAPI AI 工具集

securing-github-actions-workflows

部署与运维

查看项目

更新于 10-16 06:49

技能介绍

用途:当 GitHub Actions 作为 CI/CD 平台且工作流涉及密钥、生产部署或高权限时,用于加固工作流,防范供应链攻击、凭据窃取、权限提升,以及通过不可信 PR 标题、分支名、提交信息触发的脚本注入。不适用于其他 CI/CD 平台、应用漏洞扫描(用 SAST/DAST)或代码密钥检测(用 Gitleaks)。

前提:启用 GitHub Actions 的仓库、组织级管理员权限、了解工作流语法与事件。

主要能力与用法:

  1. 固定 SHA 摘要:将 uses: actions/checkout@v4 替换为不可变 SHA,例如 - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1;用 Dependabot(package-ecosystem: github-actions,每周)自动更新。
  2. 最小化 GITHUB_TOKEN 权限:工作流级 permissions: {},作业级仅授予所需权限(如 contents: read、deployments: write、id-token: write 用于 OIDC)。
  3. 防脚本注入:不要在 run 中直接插入 ${{ github.event.pull_request.title }};改用 env 变量传入(如 PR_TITLE),或用 actions/github-script。
  4. fork PR 处理:避免 pull_request_target,除非必要;必须使用时不要 checkout PR 代码(绝不写 ref: ${{ github.event.pull_request.head.sha }}),可配合标签门控。
  5. 保护密钥:使用 environment: production 需审批,不 echo 密钥,可加审计日志。
  6. 变更控制:用 .github/CODEOWNERS 要求安全与平台团队审批 .github/workflows/ 与 .github/actions/;组织设置限制 fork PR 政策、默认只读权限、禁止 Actions 创建和批准 PR。

相关工具:Dependabot、StepSecurity Harden Runner、actionlint、allstar、scorecard。

限制与坑点:仅固定 SHA 而不启用 Dependabot 会错过合法安全更新;权限过严可能中断正常流程;使用 pull_request_target 做标签门控时若 checkout PR 代码仍会暴露密钥。输出可生成工作流安全审计报告,含 SHA 固定、权限、注入、密钥检查及评分。