首页/开发/CI/CD 与发布速查/构建证明(Attestation)实践
构建与制品管理58 条

构建证明(Attestation)实践

把「谁、用什么、怎么构建的」写成可验证声明(in-toto/证明规范),随制品发布并可被部署侧校验。

CI/CD 与发布速查开发更新于 2026-10-13

构建证明是什么

把「谁、用什么源码、怎么构建的」写成可验证声明(遵循 in-toto 证明规范),随制品发布并可被部署侧校验。内容骨架包括构建者身份、源码仓库与提交、构建命令或工作流、产物摘要;签名后附着到制品,或使用平台自带的 attestation 能力。验证链条是:先验签名,再校验来源约束,全部通过才允许部署。

基本信息

内容骨架构建者身份、源码仓库与提交、构建命令或工作流、产物摘要
载体签名后作为 OCI 制品附着镜像,或平台 attestation 能力
消费验证签名,校验来源约束,通过才允许部署
关联与 SLSA 等级对应,覆盖范围看等级定义
强度取决于验证点位,在准入控制处校验效果最直接

典型使用场景

  • 准入校验:部署前验证来源,非受信构建直接拒绝
  • 审计追溯:出事后回溯构建来源与过程参数
  • 合规交付:向客户提供可验证的构建声明
  • 供应链门禁:与证明策略核对,未附证明的制品不进生产
  • 平台集成:用 CI 平台原生能力生成证明,免去自建签名
  • 与签名互补:签名管完整性,证明管来源与过程

验证思路(cosign)

验证思路(cosign)
cosign verify-attestation --type slsaprovenance \
  registry.example.com/app@sha256:<digest>   # 验证证明签名与内容
cosign verify --certificate-identity <ci-identity> \
  registry.example.com/app@sha256:<digest>   # 验证镜像签名
# 通过后再把摘要与断言交给准入控制决定放行

验证步骤读法

步骤检查什么失败处置
验签名证明由受信密钥或身份签署拒绝未签名制品
校验身份构建者身份符合策略记录并阻断异常来源
校验源码仓库与提交符合预期防旁路构建混入
校验摘要产物摘要与证明一致不一致说明产物被替换
准入决策全部通过才部署任一步失败即拦截
证明链的强度取决于验证点位:在准入控制处校验,效果直接。
先定义策略再上证明:谁构建、从哪个仓库、走什么流程算合格,写成显式断言。
验证失败要可观察:拦截日志与告警配套,证明才不会沦为装饰。

易错点

  • 证明与制品分离存储:对应关系靠人工维护,附着到制品本身更稳
  • 验证策略在平台间不一致:写清信任根与规则并纳入代码评审
  • 只验签名不看身份:任何有效签名都放行等于没有约束,身份断言才是核心
  • 生成但从不消费:没有部署侧校验流程,证明产生不了实际安全价值

数据来源与参考

  • in-toto 规范(in-toto.io)
  • Sigstore 文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌