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无需预先交换公钥,也无需管理长期私钥,极大降低了签名门槛。
实践要点: Cosign 支持
cosign sign、cosign verify、cosign attest 等子命令。在 DevSecOps 流水线中,通常将签名步骤放在镜像构建完成后的最后一个阶段,将验证步骤放在部署准入控制器(如 Kyverno、OPA Gatekeeper)中。
1.3 信任边界概念:从“隐式信任”到“显式验证”
信任边界(Trust Boundary)是系统安全架构中的关键概念,指数据或控制流从一个信任域跨越到另一个信任域时的安全分界线。在镜像供应链场景中,信任边界存在于以下关键节点:
- 开发者工作站 → 代码仓库:提交签名与身份绑定。
- 代码仓库 → CI/CD 构建环境:构建触发器的来源验证。
- 构建环境 → 镜像仓库:镜像签名与完整性证明。
- 镜像仓库 → 部署环境:准入控制与策略执行。
传统做法是“隐式信任”:只要镜像来自内部仓库,就默认可信。而信任边界驱动开发(Trust Boundary Driven Development, TBDD)要求在每个边界处显式执行密码学验证,将信任从“位置依赖”转变为“证据依赖”。
常见误区: 许多团队只在镜像仓库与部署环境之间设置验证,忽略了开发到构建、构建到仓库之间的信任边界。攻击者一旦突破构建环境,即可注入未签名的恶意镜像。信任边界必须覆盖全链路,而非仅关注最后一公里。
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),以便跟随实践。基础篇完成后,即可在真实项目中落地最小可行签名方案。