1. 课程导论:OPA 与策略即代码(Policy as Code)的核心理念、课程目标与学习路径
1.1 为什么需要策略即代码?
在云原生环境中,基础设施、应用配置和运行时行为都在快速变化。传统的手动审批、静态策略文档或硬编码在应用中的权限检查,已经无法应对这种动态性。策略即代码(Policy as Code, PaC)将治理规则从人工流程和文档中剥离,转化为可执行、可版本控制、可自动测试的代码,从而在 CI/CD 流水线中实现持续合规。
核心转变: 从“人工审核 + 事后审计” → “自动执行 + 事前/事中拦截”。
1.2 OPA 的核心理念
Open Policy Agent(OPA)是一个开源的、通用的策略引擎,它将策略决策与策略执行解耦。OPA 不负责管理资源,而是通过统一的查询接口回答“是否允许”的问题。
| 概念 | 说明 | 类比 |
|---|---|---|
| 策略(Policy) | 用 Rego 语言编写的规则集合,描述“应该怎样”。 | 交通法规 |
| 输入(Input) | 外部系统(如 Kubernetes、Terraform)发送给 OPA 的请求数据。 | 车辆与驾驶员信息 |
| 数据(Data) | OPA 本地加载的上下文信息,如白名单、资源配额。 | 道路限速标志 |
| 决策(Decision) | OPA 根据策略、输入和数据计算出的结果(allow/deny)。 | 交警的放行/处罚决定 |
1.3 策略即代码的三大支柱
- 版本化: 策略存储在 Git 仓库中,与代码一起进行分支、合并、回滚。
- 自动化测试: 使用 OPA 测试框架对策略进行单元测试和集成测试,确保规则正确。
- 持续审计: 在部署前(CI)和运行时(Admission Controller)自动执行策略,并记录所有决策日志用于漂移分析。
课程聚焦: 本课程将重点放在“资源配额模型”上,即如何用 OPA 定义和管理 Kubernetes 命名空间级别的 CPU、内存、存储配额,并审计这些配额配置是否发生未经授权的漂移。
1.4 课程目标
完成本课程后,学员将能够:
- 使用 Rego 语言编写资源配额策略,覆盖 CPU/内存限制、存储请求、对象数量等。
- 将 OPA 集成到 Kubernetes 准入控制器中,实现创建/更新资源时的实时拦截。
- 设计配置漂移审计框架:定期比对实际资源配额与 Git 中定义的基线策略。
- 构建 DevSecOps 流水线,在 CI 阶段自动验证配额策略变更。
1.5 学习路径与章节地图
课程分为四个阶段,逐步深入:
1.6 前置知识要求
- 熟悉 Kubernetes 基本概念(Pod、Namespace、ResourceQuota)。
- 了解 CI/CD 流水线(GitLab CI / GitHub Actions 等)。
- 具备基础编程思维(无需精通 Rego,课程会从零讲解)。
注意: 本课程不涉及 OPA 的 RBAC 或网络策略管理,专注于资源配额模型的配置漂移审计。