← 中文资源

简体中文版本

发布产物签名工作流

在 CI 中为每个发布产物签名并记录来源证明,使部署的字节可追溯到具体提交与流水线。

阅读英文原文

目标

为了供应链安全,发布产物应带有可验证的签名与来源证明。本工作流以固定提交与锁定依赖确定性构建,对产物做无密钥签名并附加来源证明,把签名与证明与产物一起推送存放,最后在部署时以签名与来源证明校验作为门禁,确保只有预期工作流产出的产物能上线。

步骤要点

  1. 以固定提交与锁定依赖确定性构建。
  2. 无密钥签署产物并附加来源证明。
  3. 把签名与证明与产物一起推送存放。
  4. 在部署时以签名与证明做门禁。
cosign sign --yes ghcr.io/org/app@${DIGEST}
cosign attest --yes --predicate provenance.json --type slsaprovenance ghcr.io/org/app@${DIGEST}

验证

按顺序执行上述步骤后,逐项确认每个步骤的预期状态均已满足;只有全部预期状态成立,才认为本流程完成。若某一步未达到预期状态,应先按排错提示排查,不要跳过继续,以免掩盖问题。

排错提示

  • 按标签签名无法防止产物被替换,应按摘要。
  • 证明缺少提交信息即不可验证。
  • 仅告警模式会让未签名产物溜过。

适用边界

  • 需要支持 OIDC 的 CI。
  • 证明需包含提交与构建信息。