容器镜像签名与验证:用 cosign 守住供应链安全的最后一道门

概述 先说一个让我后怕的事。 去年我们一个内部镜像仓库的权限配置出了问题,松了几天。事后复盘虽然没发现被人动过手脚,但那几天我心里一直打鼓——万一有人往仓库里推了个同名 tag 的镜像,把 app:latest 换成他自己的版本,我们的部署流水线照样拉、照样跑,谁能发现? digest 确实会变。但那时候我们的部署根本没人去核对 digest。镜像这东西,默认的逻辑是"谁能推就信谁"。仓库里躺着一个 app:v1.2.3,你怎么知道它是你的 CI 构建推上去的,而不是别人冒名顶替推的? 答案很扎心:光看,你不知道。得有签名。 这篇文章讲的是怎么用 cosign(Sigstore 生态的核心工具)给容器镜像签名和验证,把"镜像从构建到运行"这条链条上的信任问题解决掉。核心思路是:CI 构建完镜像后签名,部署前验证签名,验不过的镜像根本不让进生产环境。 镜像供应链的安全威胁 在讲方案之前,得先搞清楚我们在防什么。 攻击路径 容器镜像供应链攻击的核心特点是:攻击者不需要直接入侵你的生产服务器,他只需要在镜像到达生产之前的任何一个环节动手脚。 典型的攻击路径: 攻击者 │ ├─ 路径1:上传恶意基础镜像到 Docker Hub │ → 开发者基于该镜像构建应用 │ → 恶意代码进入 CI/CD 流水线 │ → 部署到生产环境 │ ├─ 路径2:入侵 CI 系统,篡改构建产物 │ → 推送同名 tag 的篡改镜像 │ → 部署系统拉取"最新"镜像 │ → 后门进入生产 │ ├─ 路径3:中间人攻击,篡改镜像传输 │ → 拦截 docker pull 请求 │ → 返回篡改后的镜像层 │ └─ 路径4:内部人员误操作或恶意操作 → 直接推送未经验证的镜像到生产仓库 路径 1 和路径 2 是最常见的。2024 年安全研究人员在 Docker Hub 上发现了超过 10000 个镜像泄露了生产系统的敏感凭证。Sysdig 的容器安全报告显示,超过 65% 的容器镜像包含已知高危漏洞——这些漏洞往往来自基础镜像。...

July 20, 2026 · 6 分钟 · 1187 字 · 徐保金