镜像签名与验签怎么做,核心是让生产环境只运行来源可信、构建过程可追踪、发布链路可审计的镜像。它不是单个工具问题,而是 CI/CD、镜像仓库和 Kubernetes 准入策略的协同。本文会围绕供应链安全治理展开,说明签名链路、验签位置、密钥管理、异常处置和分阶段落地方法。
本文定位:面向平台工程、运维、安全或架构团队,关注生产环境中可执行、可审计、可回滚的镜像签名实践。

为什么只做漏洞扫描还不够
漏洞扫描能发现镜像中已知组件风险,但不能证明镜像是谁构建的、构建后有没有被篡改、是否经过授权发布。生产事故中,未授权镜像、被替换的 tag、绕过流水线的手工推送,往往不会被单纯的漏洞扫描拦住。
镜像签名解决的是来源可信和完整性验证问题。它把镜像摘要、签名身份、构建流水线和发布记录关联起来,让平台在部署前判断“这个镜像是否来自被授权链路”。镜像验签则把这个判断前移到准入控制或发布门禁,避免问题镜像进入集群。
更完整的容器供应链安全通常同时包含:
- 依赖和基础镜像治理,减少未知来源组件。
- 构建过程留痕,记录代码版本、流水线、构建人和产物摘要。
- 漏洞扫描与策略评估,识别已知风险和高危配置。
- 镜像签名与验签,确认产物来源和完整性。
- 准入控制与审计,阻断不符合策略的部署并保留证据。
签名链路:从构建流水线到镜像仓库
签名动作建议放在可信构建流水线中,而不是让开发者在本地手工签名。原因很简单:本地签名很难证明构建环境、代码版本、依赖来源和审批状态,审计价值有限。
一个较稳妥的签名链路如下:
- 代码合并触发流水线,记录提交、分支、审批和构建参数。
- 流水线构建镜像,并使用不可变摘要作为产物标识。
- 完成漏洞扫描、基础策略检查和必要测试。
- 通过发布门禁后,由受控身份对镜像摘要签名。
- 镜像和签名一起推送或关联到镜像仓库。
- 部署时使用摘要或受控 tag,避免 tag 被覆盖后绕过验签。
这里的关键判断是:签名对象应绑定到镜像摘要,而不是只信任 tag。tag 可以移动,摘要代表具体产物。如果生产部署只写可变 tag,签名和验签的可信度会明显下降。

验签位置:准入控制比人工检查更可靠
人工检查适合试点阶段,但不适合长期治理。生产环境更推荐在准入控制、发布平台或 GitOps 同步阶段做自动验签,把不符合策略的镜像挡在部署前。
验签策略可以按环境分级:
| 环境 | 推荐策略 | 目的 |
|---|---|---|
| 开发 | 先提示和告警 | 发现流程问题,避免阻塞研发 |
| 测试 | 对关键命名空间强制验签 | 验证策略和例外流程 |
| 预发 | 接近生产策略 | 提前发现发布链路缺口 |
| 生产 | 默认强制验签,少量例外审批 | 降低未授权镜像运行风险 |
验签失败时,错误信息要能指出原因,例如未签名、签名身份不可信、签名和摘要不匹配、镜像仓库不可访问或策略未命中。否则业务团队只会看到部署失败,却不知道该修流水线、仓库权限还是发布配置。
密钥与权限:签名能力必须可审计
镜像签名的安全性很大程度取决于签名身份和密钥管理。如果任何人都能拿到签名能力,签名就会变成形式。推荐由平台或安全团队统一管理签名权限,流水线以最小权限使用,并保留审计记录。
需要重点控制的事项包括:
- 签名密钥或签名身份不要放在普通代码仓库、镜像或应用 Secret 中。
- 不同环境、不同业务线可以使用不同签名身份,方便定位和吊销。
- 签名权限只授予受控流水线,不授予普通开发终端。
- 密钥轮换、吊销和应急禁用要有流程,不能只在文档中描述。
- 审计记录要包含签名时间、镜像摘要、流水线任务、触发人和审批信息。
如果发现签名密钥疑似泄露,应立即冻结对应签名身份,暂停信任新签名产物,复核近期签名记录,并按影响范围重新签名关键镜像。
落地路线:先关键系统,再扩大覆盖范围
镜像签名与验签适合分阶段落地。第一阶段先让流水线稳定生成签名,覆盖少量关键镜像;第二阶段在测试和预发环境启用验签告警;第三阶段对生产关键命名空间强制验签;第四阶段再扩展到更多团队和第三方镜像准入。
上线前建议检查:
- 关键镜像是否都由受控流水线构建并签名。
- 生产部署是否使用摘要或受控 tag,避免 tag 漂移。
- 验签失败是否有清晰提示、审批例外和回滚方式。
- 镜像仓库、签名存储和准入控制器是否纳入高可用和监控。
- 例外镜像是否有到期时间,避免永久白名单。
回滚并不等于关闭全部安全策略。更稳妥的做法是按命名空间、策略或镜像范围临时降级,并保留告警和审计,待流水线或仓库问题修复后再恢复强制验签。

小结
镜像签名与验签的重点是把可信构建、制品完整性和准入控制串起来。漏洞扫描能发现已知风险,签名和验签能降低未授权产物进入生产的概率。落地时建议先从关键系统试点,完善签名身份、验签策略、例外审批和审计记录,再逐步扩大覆盖范围。
常见问题
1. 镜像签名能替代漏洞扫描吗?
不能。签名解决来源可信和篡改识别问题,漏洞扫描解决已知风险识别问题,两者应组合使用。
2. 所有环境都需要强制验签吗?
生产环境和准生产环境更适合强制验签;开发环境可以先告警和提示,避免过早影响研发效率。强制策略应配合例外审批和清晰错误提示。
3. 签名密钥应该由谁管理?
签名密钥应由平台或安全团队统一管理,流水线按最小权限使用,并保留签名记录和审批信息。不建议把签名能力下放到个人终端。