1. 课程导论:OPA与Serverless流水线安全概述、镜像签名的重要性、课程目标与学习路径
1.1 云原生安全的新挑战:从边界防御到供应链信任
在云原生与Serverless架构快速普及的今天,传统的边界安全模型(如防火墙、VPN)已无法有效保护动态、短生命周期的工作负载。攻击者的目标正从基础设施层转向软件供应链,尤其是容器镜像与函数代码的构建与分发环节。
Serverless流水线(如AWS CodePipeline、GitHub Actions、Tekton)具有以下安全痛点:
- 镜像来源不可控:开发者可能从公共仓库拉取包含恶意软件的镜像。
- 构建过程被篡改:CI/CD流水线中的镜像可能在构建后被注入后门。
- 缺乏细粒度策略:传统准入控制(如Kubernetes ImagePolicyWebhook)无法在流水线早期阻断风险。
- 策略与基础设施耦合:安全策略硬编码在流水线脚本中,难以审计与复用。
核心观点: 云原生安全需要将策略决策从基础设施执行层解耦,并在流水线早期(构建时/部署前)建立信任锚点。镜像签名验证是实现“构建一次,信任到底”的关键技术。
1.2 镜像签名:软件供应链安全的基石
镜像签名通过非对称加密技术,为容器镜像提供完整性与来源认证。其核心流程如下:
- 签名生成:镜像构建者使用私钥对镜像摘要(Digest)进行签名,生成签名文件(如cosign生成的.sig)。
- 签名存储:签名文件可存储在镜像仓库(OCI Registry)、密钥管理服务(KMS)或独立签名仓库(如Rekor)。
- 签名验证:部署或准入阶段,验证者使用公钥验证签名是否匹配镜像摘要。
| 安全属性 | 未签名镜像 | 已签名镜像 |
|---|---|---|
| 完整性 | 镜像内容可被篡改而不被发现 | 任何修改都会导致签名验证失败 |
| 来源认证 | 无法确认镜像由谁构建 | 通过公钥绑定构建者身份 |
| 防重放 | 旧版本镜像可被恶意替换 | 签名时间戳可防止重放攻击 |
| 审计追溯 | 缺乏签名记录,难以审计 | 签名日志(如Rekor)提供透明审计链 |
行业标准: Sigstore(cosign + Fulcio + Rekor)已成为CNCF孵化项目,是云原生镜像签名的事实标准。本课程所有实践均基于Sigstore生态。
1.3 OPA:策略即代码的通用引擎
Open Policy Agent(OPA)是一个开源的、通用的策略引擎,它将策略决策与策略执行分离。OPA使用高级声明式语言Rego编写策略,支持从JSON/YAML等数据源中查询并做出决策。
在Serverless流水线中,OPA可以扮演以下角色:
- 策略决策点(PDP):接收来自流水线(如Tekton、GitHub Actions)的输入(镜像元数据、签名状态、环境变量),输出允许/拒绝决策。
- 策略仓库:通过OPA的Bundle API或ConfigMap,集中管理所有安全策略,实现策略的版本控制与热更新。
- 与Serverless集成:OPA可作为Sidecar或独立服务运行,通过HTTP/gRPC接口与Serverless函数交互,不侵入函数代码。
1.4 课程目标与学习路径
本课程旨在帮助学员掌握如何利用OPA在Serverless流水线中实施镜像签名验证策略,构建从代码提交到函数部署的端到端安全防线。
| 模块 | 核心内容 | 实践产出 |
|---|---|---|
| 基础篇(第1-5章) | OPA/Rego基础、Serverless流水线架构、镜像签名原理 | 编写第一条Rego策略,搭建本地测试环境 |
| 策略篇(第6-15章) | 镜像签名验证Rego策略编写、签名数据解析、多公钥管理 | 完整的镜像签名验证策略库 |
| 集成篇(第16-25章) | 与Tekton/GitHub Actions/AWS CodePipeline集成、OPA Sidecar部署 | 生产级流水线集成方案 |
| 进阶篇(第26-30章) | 性能优化、策略测试、审计日志、故障排查 | 可观测性与持续改进体系 |
前置要求: 学员需具备基本的容器(Docker)使用经验,了解CI/CD流水线概念(如Tekton、GitHub Actions),熟悉至少一种云平台(AWS/GCP/Azure)的基础操作。无需OPA或Rego经验,本课程将从零开始讲解。
1.5 为什么选择OPA + Serverless + 镜像签名?
这三项技术的组合并非偶然,而是云原生安全演进的自然结果:
- Serverless 带来了极致的弹性与按需付费,但也意味着更短的攻击窗口和更少的运行时监控机会。安全策略必须在部署前完成。
- 镜像签名 提供了部署前的信任验证,但签名验证逻辑如果硬编码在流水线中,会导致策略僵化、难以审计。
- OPA 作为策略引擎,将签名验证规则从流水线代码中抽离,使得安全团队可以独立编写、测试和更新策略,无需修改流水线脚本。
1.6 课程实践环境概览
本课程所有实验均可在本地或免费云资源上完成,无需付费环境:
| 组件 | 版本/工具 | 用途 |
|---|---|---|
| OPA | v0.60+ | 策略引擎(本地运行或作为Sidecar) |
| Cosign | v2.2+ | 镜像签名与验证工具(Sigstore) |
| Tekton | v0.50+ | Serverless CI/CD流水线(可选Kubernetes) |
| Docker | v24+ | 容器镜像构建与测试 |
| Rego Playground | 在线 | 快速原型验证Rego策略 |
学习建议: 建议学员按照“基础篇 → 策略篇 → 集成篇 → 进阶篇”的顺序学习。每章末尾的“动手实验”环节是掌握技能的关键,请务必在本地或在线环境中实际操作。