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 策略即代码的三大支柱

  1. 版本化: 策略存储在 Git 仓库中,与代码一起进行分支、合并、回滚。
  2. 自动化测试: 使用 OPA 测试框架对策略进行单元测试和集成测试,确保规则正确。
  3. 持续审计: 在部署前(CI)和运行时(Admission Controller)自动执行策略,并记录所有决策日志用于漂移分析。
课程聚焦: 本课程将重点放在“资源配额模型”上,即如何用 OPA 定义和管理 Kubernetes 命名空间级别的 CPU、内存、存储配额,并审计这些配额配置是否发生未经授权的漂移。

1.4 课程目标

完成本课程后,学员将能够:

  • 使用 Rego 语言编写资源配额策略,覆盖 CPU/内存限制、存储请求、对象数量等。
  • 将 OPA 集成到 Kubernetes 准入控制器中,实现创建/更新资源时的实时拦截。
  • 设计配置漂移审计框架:定期比对实际资源配额与 Git 中定义的基线策略。
  • 构建 DevSecOps 流水线,在 CI 阶段自动验证配额策略变更。

1.5 学习路径与章节地图

课程分为四个阶段,逐步深入:

课程学习路径图 阶段一:基础 OPA 原理 & Rego 语法 阶段二:配额模型 资源配额策略设计 阶段三:集成 K8s 准入 & CI/CD 阶段四:审计 漂移检测 & 报告 📌 章节对应关系 • 第1-5章:OPA 安装、Rego 基础、策略测试 • 第6-12章:资源配额模型定义、边界条件、冲突解决 • 第13-22章:K8s 准入控制器集成、Terraform 集成、CI 流水线 • 第23-30章:配置漂移检测算法、审计报告生成、事件响应

1.6 前置知识要求

  • 熟悉 Kubernetes 基本概念(Pod、Namespace、ResourceQuota)。
  • 了解 CI/CD 流水线(GitLab CI / GitHub Actions 等)。
  • 具备基础编程思维(无需精通 Rego,课程会从零讲解)。
注意: 本课程不涉及 OPA 的 RBAC 或网络策略管理,专注于资源配额模型的配置漂移审计。