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