背景
镜像标签只能说明一个名字,不能说明产物来自哪个提交、在哪个环境构建。供应链证明应绑定不可变的镜像摘要。
核心判断
- SBOM 描述依赖,provenance 描述构建来源,签名证明被信任的身份。
- 部署使用 digest,并在准入或发布流程中验证身份与来源。
- 将失败验证设为阻断,而不是只把证明存到制品库。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
steps:
- uses: docker/build-push-action@v6
with: { push: true, provenance: mode=max, sbom: true }
边界与误区
示例只产生构建证明,不会自动生成独立可信签名。Action 的 major 标签也不是不可变引用,生产流水线应锁定审查过的 commit。
验证方式
修改源码或构建参数后检查 digest 与证明变化;再模拟错误签名身份和缺失证明,确认部署会被拒绝。避免构建证明泄露敏感构建参数。
小结
用 SBOM、provenance 和签名把镜像摘要绑定到源码提交和构建过程。