镜像签名是什么
镜像签名(cosign / Sigstore)对镜像的「摘要」签名并支持部署前校验:证明这个镜像确实由受信方构建、内容未被替换。keyless 模式不管理长期私钥:签名时用 OIDC 身份换取 Fulcio 的短时证书,签名记录写入 Rekor 透明日志,任何人可公开审计。校验时必须同时限定签发者身份与 OIDC 发行方,否则「有签名」没有意义。cosign 还能附加 SBOM 与证明(attest),把物料绑到同一摘要上。
基本信息
| 命令 | cosign sign / cosign verify(绑定签发者身份与 OIDC 发行方约束) |
|---|---|
| keyless | Fulcio 签发短时证书 + Rekor 透明日志,签名记录可公开审计 |
| 扩展 | cosign attach sbom / attest 附加物料与证明 |
| 信任要素 | identity 与 issuer 两个条件必须同时收紧 |
典型使用场景
- 发布门禁:部署前校验签名,来源不符直接拒绝。
- 集群准入:准入控制器校验签名,无有效签名的镜像不允许调度。
- OpenSSF 类供应链合规:把签名与来源证明纳入发布检查清单。
- 开源分发:官方镜像可被下游用户独立验证,替代校验和口口相传。
- 审计取证:Rekor 记录可查询,确认某次签名的发生时间与身份。
keyless 签名与校验
keyless 签名与校验
cosign sign registry.example.com/app@sha256:<digest>
cosign verify registry.example.com/app@sha256:<digest> \
--certificate-identity-regexp '^https://github.com/org/repo/' \
--certificate-oidc-issuer https://token.actions.githubusercontent.com
# 校验绑定 digest 而不是 tag两种模式对比
| 模式 | 密钥管理 | 适用 |
|---|---|---|
| keyless | 无长期私钥,信任来自 OIDC 身份 | 托管 CI 环境 |
| 密钥对 | 自管私钥(可存 KMS),轮换自理 | 离线、内网环境 |
校验要绑定签发者身份与发行方:只验证「有签名」会被任意密钥蒙混,两个条件缺一不可。
签名绑定的是摘要:部署引用也必须用 digest,否则标签被改指后校验对象与实际运行对象不是同一个东西。
校验失败要分类处理:未签名对应流程缺失、签名者不符对应配置错误、摘要不符疑似篡改,三类原因的响应动作完全不同。