1. 课程导论:Sigstore 项目背景、云原生供应链安全挑战、课程目标与学习路径

1.1 云原生供应链安全挑战

云原生架构的普及使得软件供应链从“构建-发布-部署”的线性流程演变为高度动态、多参与方的复杂网络。容器镜像、Helm Chart、Kustomize 覆盖层、策略引擎等配置制品在流转过程中面临以下核心威胁:

威胁类别 典型攻击场景 影响范围
镜像篡改 攻击者劫持 CI/CD 管道,向镜像仓库推送带后门的镜像 运行时集群、下游消费者
配置注入 恶意 PR 修改准入策略或 ConfigMap,绕过安全基线 集群安全态势、合规审计
元数据伪造 伪造 SBOM、签名或 attestation,欺骗策略引擎 供应链透明度、取证溯源
密钥泄露 签名私钥被窃取,攻击者以合法身份发布恶意制品 信任链根证书、发布者身份
关键洞察: 传统 PKI 和手动签名流程无法适应云原生环境下的高频发布、多集群分发和声明式策略管理需求。供应链安全的核心矛盾已从“能否签名”转变为“能否在声明式工作流中自动验证并生成可审计的证据”。

1.2 Sigstore 项目背景

Sigstore 是由 Google、Red Hat、Purdue 大学等联合发起的开源项目,旨在为软件供应链提供一套无门槛、免密钥管理、可审计的签名与验证基础设施。其核心组件包括:

  • Cosign:容器镜像、Blob、Attestation 的签名与验证工具。
  • Fulcio:基于 OIDC 身份的无根证书颁发机构,签发短期签名证书。
  • Rekor:不可篡改的透明日志,记录所有签名元数据与证据。
  • Policy Controller:Kubernetes 准入控制器,基于 Sigstore 签名执行策略。

Sigstore 的设计哲学是“签名不应成为开发者的负担”。通过 OIDC 身份(如 GitHub、Google、Microsoft 账号)自动获取短期证书,签名过程无需管理私钥,验证过程依赖公共透明日志而非预分发公钥。

核心价值: Sigstore 将签名从“手动、易错、密钥密集”的操作转变为“自动、可审计、声明式”的云原生原语,为配置管理准入策略提供了可编程的信任基础。
Sigstore 核心组件架构与信任流 Sigstore 核心组件架构与信任流 开发者 / CI 管道 Cosign 签名 Fulcio CA Rekor 透明日志 制品仓库 Policy Controller 说明: 1. 开发者通过 OIDC 身份向 Fulcio 请求短期证书,无需管理私钥。 2. Cosign 使用该证书对制品签名,并将签名记录推送至 Rekor 透明日志。 3. Policy Controller 在准入阶段从 Rekor 查询签名证据,验证制品身份与完整性。

1.3 课程目标与学习路径

本课程旨在帮助学员掌握使用 Sigstore 工具链对云原生配置管理(如 Kubernetes 资源、Helm Chart、Kustomize 覆盖层)实施声明式准入策略,并生成可审计的发布证据。完成本课程后,学员将能够:

  • 理解 Sigstore 签名模型与透明日志原理。
  • 使用 Cosign 对容器镜像和 Kubernetes 配置清单进行签名与验证。
  • 部署并配置 Policy Controller,实现基于签名的准入策略。
  • 将签名与验证集成到 GitOps 工作流(ArgoCD / Flux)中。
  • 生成并管理符合 SLSA 和 SSDF 要求的发布证据链。

1.4 课程章节概览

模块 章节范围 核心实践
基础篇 第 1-5 章 Sigstore 环境搭建、Cosign 签名验证、Fulcio/Rekor 配置
策略篇 第 6-12 章 Policy Controller 部署、声明式准入策略编写、策略测试
集成篇 第 13-20 章 GitOps 集成、Helm/Kustomize 签名、多集群策略分发
证据篇 第 21-26 章 Attestation 生成、Rekor 查询、审计证据导出
实战篇 第 27-30 章 端到端供应链安全平台搭建、故障排查、生产最佳实践
学习建议: 建议学员具备基本的 Kubernetes 操作经验(kubectl、YAML 编写)和 CI/CD 概念。每章均提供可复现的代码示例和验证步骤,建议在本地 Kind 或 Minikube 集群中跟随操作。
课程学习路径与知识依赖图 课程学习路径与知识依赖图 基础篇 Sigstore 环境与工具链 策略篇 准入策略声明式管理 集成篇 GitOps 与多集群集成 证据篇 审计与证据链 实战篇 端到端供应链安全平台搭建 路径说明: 前四篇为递进关系,建议按顺序学习。实战篇综合前四篇知识,完成一个完整的供应链安全平台部署。

1.5 环境准备与前置要求

为顺利完成本课程实践,请确保以下环境就绪:

  • Kubernetes 集群:推荐使用 Kind v0.20+ 或 Minikube v1.30+,至少 4GB 内存。
  • 命令行工具:cosign v2.2+、kubectl v1.28+、helm v3.12+。
  • OIDC 身份:GitHub、Google 或 Microsoft 账号,用于 Fulcio 证书签发。
  • 可选:Docker 或 Podman 用于本地镜像构建与签名测试。
快速验证命令:
# 验证 Cosign 安装
cosign version

# 验证集群访问
kubectl cluster-info

# 测试 OIDC 身份(以 GitHub 为例)
cosign generate-key-pair
echo "环境就绪,可以开始第 2 章内容。"