1. 课程导论:软件供应链安全现状、Cosign在Sigstore栈中的角色、信任边界概念、课程目标与学习路径

1.1 软件供应链安全现状:从“开发安全”到“交付安全”的范式转移

现代软件交付已深度依赖开源组件、第三方基础镜像和自动化CI/CD流水线。攻击面从传统应用漏洞扩展至整个供应链环节:代码仓库、构建环境、镜像仓库、部署平台均可能成为突破口。2023年以来的典型攻击(如SolarWinds、Codecov、Log4j)表明,“信任”不再是默认属性,而必须通过可验证的密码学证据来建立。

当前供应链面临的核心威胁可归纳为以下四类:

威胁类别 典型攻击向量 影响范围
依赖混淆 恶意包上传至公共仓库,利用内部包名优先级漏洞 构建阶段,代码执行
镜像篡改 中间人攻击、仓库凭证泄露、镜像层替换 交付阶段,运行时后门
构建环境投毒 CI/CD Runner劫持、缓存污染、恶意插件 构建阶段,产物完整性
元数据伪造 伪造签名、篡改SBOM、篡改attestation 审计阶段,信任链断裂
关键洞察: 传统“扫描即安全”策略已不足以应对供应链攻击。攻击者不再直接攻击应用代码,而是通过破坏信任传递路径来植入恶意负载。安全左移必须延伸至右移的验证环节,即对交付物进行密码学级验证。

1.2 Cosign在Sigstore栈中的角色:轻量级签名与验证引擎

Sigstore是Linux基金会托管的开源软件签名与透明度基础设施,旨在解决“谁来签名、如何验证、密钥如何管理”三大难题。其核心组件包括:

  • Fulcio:无根CA,签发短期代码签名证书(基于OIDC身份)。
  • Rekor:不可变透明度日志,记录所有签名元数据,提供审计溯源能力。
  • Cosign:面向容器镜像、blob、SBOM、attestation的签名与验证客户端工具。

Cosign在Sigstore栈中承担“信任边界执行器”的角色:它将Fulcio颁发的身份证书与Rekor的日志证明绑定到具体工件上,形成可离线验证的签名包。与传统的GPG签名相比,Cosign无需预先交换公钥,也无需管理长期私钥,极大降低了签名门槛。

Sigstore 核心组件架构与 Cosign 角色 开发者 / CI Cosign 客户端 Fulcio 短期证书签发 Rekor 透明度日志 容器镜像仓库 (签名 + 镜像) 验证者 / 策略引擎 信任边界说明 1. Cosign 从 Fulcio 获取身份证书 2. 签名 + 证书推送至 Rekor 日志 3. 签名与镜像一并存入仓库 4. 验证者拉取签名并离线验证
实践要点: Cosign 支持 cosign sign、cosign verify、cosign attest 等子命令。在 DevSecOps 流水线中,通常将签名步骤放在镜像构建完成后的最后一个阶段,将验证步骤放在部署准入控制器(如 Kyverno、OPA Gatekeeper)中。

1.3 信任边界概念:从“隐式信任”到“显式验证”

信任边界(Trust Boundary)是系统安全架构中的关键概念,指数据或控制流从一个信任域跨越到另一个信任域时的安全分界线。在镜像供应链场景中,信任边界存在于以下关键节点:

  • 开发者工作站 → 代码仓库:提交签名与身份绑定。
  • 代码仓库 → CI/CD 构建环境:构建触发器的来源验证。
  • 构建环境 → 镜像仓库:镜像签名与完整性证明。
  • 镜像仓库 → 部署环境:准入控制与策略执行。

传统做法是“隐式信任”:只要镜像来自内部仓库,就默认可信。而信任边界驱动开发(Trust Boundary Driven Development, TBDD)要求在每个边界处显式执行密码学验证,将信任从“位置依赖”转变为“证据依赖”。

镜像供应链信任边界模型 信任域 A 开发 / 构建 源码 + 构建产物 信任边界 签名 + 验证 信任域 B 镜像仓库 签名镜像 信任边界 策略 + 准入 信任域 C 生产集群 运行容器
常见误区: 许多团队只在镜像仓库与部署环境之间设置验证,忽略了开发到构建、构建到仓库之间的信任边界。攻击者一旦突破构建环境,即可注入未签名的恶意镜像。信任边界必须覆盖全链路,而非仅关注最后一公里。

1.4 课程目标与学习路径

本课程旨在帮助学员掌握使用Cosign进行镜像供应链信任边界驱动开发与调优的完整方法论。通过30章的系统学习,学员将能够:

  • 理解 Sigstore 生态与 Cosign 的密码学原理。
  • 实施 从零搭建基于 Cosign 的镜像签名与验证流水线。
  • 设计 基于信任边界模型的策略引擎与准入控制规则。
  • 调优 签名性能、密钥轮换策略、离线验证与高可用部署。
  • 集成 Cosign 与 Kubernetes、GitHub Actions、GitLab CI、ArgoCD 等主流工具链。

课程分为四个阶段,每个阶段聚焦一个核心能力域:

阶段 章节范围 核心产出
基础篇 第1-8章 Cosign 安装、密钥管理、镜像签名/验证基础操作
信任边界设计篇 第9-16章 信任边界模型、策略即代码、多环境准入控制
DevSecOps集成篇 第17-24章 CI/CD 流水线集成、SBOM 签名、attestation 管理
调优与生产化篇 第25-30章 性能基准测试、密钥轮换、灾难恢复、生产级部署架构
学习建议: 每章均包含可运行的代码示例与验证步骤。建议学员准备一个 Kubernetes 测试集群(minikube 或 kind)和一个公共/私有镜像仓库(如 Docker Hub、Harbor),以便跟随实践。基础篇完成后,即可在真实项目中落地最小可行签名方案。