Sigstore镜像签名API集成与信任验证 - 第1节
1.1 Sigstore 项目背景与供应链安全现状
软件供应链攻击在过去三年内增长了超过 600%,攻击者不再直接攻击生产环境,而是将恶意代码注入到上游依赖、构建流水线或镜像仓库中。2021 年的 SolarWinds 事件与 Codecov 事件表明:传统基于“信任网络”的边界模型在分布式、多参与方的现代交付链中已完全失效。
Sigstore 项目由 Google、Red Hat、Purdue 大学等联合发起,于 2021 年 3 月进入 CNCF Sandbox,2023 年晋升为 CNCF Graduated 项目。其核心目标是为软件供应链提供一套 免费、开放、透明 的签名与验证基础设施,消除传统 PKI 中密钥管理的复杂性。
关键数据: 截至 2024 年底,Sigstore 已累计处理超过 1000 万次签名,被 Kubernetes、npm、PyPI、Maven 等主流生态集成。
1.1.1 供应链安全现状对比
| 维度 | 传统模式 | Sigstore 模式 |
|---|---|---|
| 密钥管理 | 自建 CA、HSM、密钥轮换复杂 | 无密钥(Keyless)或临时密钥 |
| 身份绑定 | 基于 X.509 证书,依赖信任锚 | 基于 OIDC 身份(GitHub/GitLab/Email) |
| 透明度 | 无公开审计日志 | Rekor 透明日志,全局可审计 |
| 验证成本 | 高(证书链、CRL、OCSP) | 低(单条 CLI 命令或 API 调用) |
| 镜像签名 | Docker Content Trust(DCT) | Cosign + OCI 制品签名 |
1.2 信任边界概念
在云原生镜像供应链中,信任边界 是指从一个可信实体(如开发者、构建系统、镜像仓库)到另一个实体之间,数据与元数据在传递过程中不被篡改、身份不被冒用的安全分界。传统信任边界依赖“网络边界”(VPN、防火墙),而现代信任边界必须建立在 密码学可验证 的基础上。
1.2.1 镜像供应链中的信任边界模型
下图展示了从代码提交到生产部署的完整信任边界链,以及 Sigstore 在每个边界点提供的保护机制:
1.3 课程目标与学习路径
1.3.1 课程目标
完成本课程后,你将能够:
- 理解 Sigstore 三大组件(Cosign、Fulcio、Rekor)的工作原理与交互流程
- 掌握 使用 Cosign 对 OCI 镜像进行 Keyless 签名与验证的完整命令与 API 调用
- 实现 在 GitHub Actions 中集成 Sigstore 签名流水线,自动生成并验证签名
- 构建 基于 Policy Controller 的镜像准入控制策略,在 Kubernetes 集群中强制验证信任边界
- 调试 常见的签名失败、证书过期、透明日志查询等生产问题
1.3.2 学习路径与章节结构
| 阶段 | 章节范围 | 核心产出 |
|---|---|---|
| 基础篇 | 第 1-4 章 | 理解 Sigstore 架构,完成本地 Keyless 签名与验证 |
| 接口实战篇 | 第 5-12 章 | 掌握 Cosign CLI、Rekor API、Fulcio 证书请求的完整调用 |
| 流水线集成篇 | 第 13-20 章 | 在 GitHub Actions、GitLab CI、Jenkins 中集成签名流水线 |
| 策略与治理篇 | 第 21-26 章 | 部署 Policy Controller,编写 CUE/Rego 策略,实现集群级准入控制 |
| 进阶与排错篇 | 第 27-30 章 | 多仓库签名策略、离线验证、透明日志审计、常见故障排查 |
1.3.3 推荐学习方式
学习建议: 每章都包含一个可运行的实战案例。建议在本地或临时云环境中准备一个 Kubernetes 集群(minikube 或 kind 均可),并安装 Cosign CLI(v2.0+)和 OCI 兼容的镜像仓库(如 Docker Hub 或 GitHub Container Registry)。跟随每章的代码块逐行执行,效果最佳。
1.4 Sigstore 核心组件架构
Sigstore 由三个核心服务组成,它们共同构成了一个 无密钥签名基础设施:
- Cosign:签名与验证客户端,支持容器镜像、Blob、SBOM、Attestation 等多种制品类型
- Fulcio:基于 OIDC 的短期证书颁发机构,为每个签名请求签发 X.509 证书
- Rekor:不可变透明日志,记录所有签名元数据,提供全局可审计性
下图展示了这三个组件在一次典型 Keyless 签名流程中的交互关系:
1.5 课程前置准备
在开始后续章节的实战之前,请确保你的环境满足以下最低要求:
| 工具/组件 | 最低版本 | 验证命令 |
|---|---|---|
| Cosign CLI | v2.2.0+ | cosign version |
| Docker / Podman | Docker 24+ / Podman 4+ | docker --version |
| Kubernetes 集群 | v1.28+ | kubectl version --short |
| OpenSSL | v3.0+ | openssl version |
| GitHub 账号 | (用于 OIDC 认证) | — |
注意: 如果你使用 Windows 环境,建议通过 WSL2 或 Docker Desktop 的 Linux 容器模式运行所有命令。Cosign 在原生 Windows 下的 OIDC 重定向流程可能存在兼容性问题。