1. 课程导论:Terraform 准入策略与 IDP 自助门户蓝图的关系
1.1 为什么需要准入策略
在云原生基础设施即代码(IaC)实践中,Terraform 已成为声明式资源编排的事实标准。然而,当开发团队通过内部开发者平台(IDP)自助门户提交 Terraform 蓝图时,缺乏有效的安全护栏会导致以下风险:
- 配置漂移:未经审核的变量注入导致生产环境与基线偏离
- 权限滥用:非预期的高危 IAM 角色绑定或安全组规则开放
- 成本失控:未标记成本的资源创建或超出预算的实例规格选择
- 合规缺口:违反 SOC2、PCI-DSS 或企业内部策略的资源定义
核心观点:准入策略(Admission Policy)是 IDP 自助门户与底层云 API 之间的策略执行层,它确保每个 Terraform 蓝图在进入执行管道前通过预定义的合规检查。
1.2 Terraform 准入策略与 IDP 自助门户蓝图的关系
IDP 自助门户通常提供预定义的 Terraform 蓝图模板,开发者通过表单或 YAML 配置快速生成基础设施。准入策略嵌入在蓝图提交流程中,形成三层防护:
| 层级 | 组件 | 职责 | 示例 |
|---|---|---|---|
| L1 | 蓝图模板约束 | 限制变量类型、枚举值、必填字段 | region 只能从 us-east-1 / eu-west-1 中选择 |
| L2 | 策略即代码引擎 | 执行 OPA/Sentinel/Rego 规则 | 禁止 instance_type 为 p3.16xlarge 以上规格 |
| L3 | 运行时准入 Webhook | 拦截 Terraform Plan 输出中的高风险变更 | 检测到删除生产数据库的 DROP 操作 |
三者协同工作:蓝图模板约束在 UI 层做第一道过滤,策略即代码在 CI 管道做语义检查,运行时准入在 apply 前做最终拦截。
1.3 高风险变更的定义
在本课程语境中,高风险变更指那些一旦执行可能引发安全漏洞、服务中断、数据丢失或严重成本超支的 Terraform 资源操作。根据变更影响范围,我们将其分为三类:
| 风险等级 | 定义 | 典型操作 | 影响 |
|---|---|---|---|
| 严重 | 直接导致数据丢失或服务不可用 | 删除 S3 存储桶、销毁 RDS 实例、修改 VPC 默认路由 | 业务中断 > 30 分钟 |
| 高 | 引入安全漏洞或合规违规 | 开放 0.0.0.0/0 入站规则、绑定 admin 角色给非特权用户 | 安全审计发现 / 合规罚款 |
| 中 | 导致成本异常或资源滥用 | 创建未标记成本的资源、选择 GPU 实例用于非计算任务 | 月度成本超支 > 20% |
注意:高风险变更的判定标准应随组织成熟度动态调整。本课程提供可配置的策略规则模板,而非硬编码阈值。
1.4 课程目标
完成本课程后,学员将能够:
- 设计:为 IDP 自助门户设计分层准入策略架构,覆盖蓝图模板、策略即代码和运行时 Webhook
- 实现:使用 OPA Rego 语言编写针对高风险变更的准入规则,并集成到 Terraform CI/CD 管道
- 测试:编写策略单元测试,确保规则在变更前准确拦截预期的高风险操作
- 治理:建立策略版本管理、审计日志和异常豁免流程,满足 DevSecOps 合规要求
1.5 目标受众
| 角色 | 前置知识 | 课程收益 |
|---|---|---|
| 平台工程师 | Terraform 基础、IDP 概念 | 掌握策略即代码集成方法,构建安全自助服务 |
| DevSecOps 工程师 | CI/CD 管道、安全策略基础 | 学会将合规检查左移到基础设施创建阶段 |
| 云架构师 | 云网络、IAM、成本管理 | 设计可扩展的准入策略框架 |
| SRE | 基础设施运维、变更管理 | 减少因配置错误导致的线上事故 |
建议:如果你对 OPA Rego 语法不熟悉,建议先学习本课程配套的《Rego 策略语言速成》章节(第 4 章),再回到准入策略实战部分。
1.6 课程路线图
本课程共 30 章,分为五个模块:
- 模块一(第 1-5 章):基础概念与架构设计
- 模块二(第 6-12 章):策略即代码实现与测试
- 模块三(第 13-20 章):IDP 自助门户集成实战
- 模块四(第 21-26 章):高风险变更场景专项治理
- 模块五(第 27-30 章):生产级运维与持续改进
1.7 课程环境准备
为了顺利完成本课程实验,请确保以下环境就绪:
# 最低版本要求
Terraform >= 1.5.0
OPA >= 0.50.0
Git >= 2.30.0
Docker >= 20.10.0 (用于本地策略测试沙箱)
# 推荐 IDE 插件
- VS Code: OPA Rego 语法高亮
- JetBrains: Terraform + HCL 支持
快速验证:在终端执行
terraform version && opa version,确认两个命令均返回版本号且无报错。