策略即代码是什么
策略即代码(Policy as Code)把组织规则写成可测试、可版本化的策略文件:镜像来源限制、资源上限、必填标签、禁止特权容器等。载体常用 OPA/Rego、Kyverno YAML、conftest(本地测试);执行点分两层——CI 检查做快速反馈,集群准入做强制兜底,两层用同一份策略源。治理上,策略本身走评审、版本化,豁免要登记原因与到期时间。它的价值是把「规范文档里的要求」变成「提交时就会被拦下来的检查」。
基本信息
| 载体 | OPA/Rego、Kyverno YAML、conftest(本地测试) |
|---|---|
| 执行点 | CI 检查(快速反馈)与集群准入(强制兜底)双层 |
| 治理 | 策略与豁免都有评审与到期时间 |
| 报错 | 要指出违反的规则、字段与修复方式,否则修复成本高 |
典型使用场景
- 镜像来源统一:只允许来自受信仓库的镜像,其它直接拒绝。
- 资源规范:requests/limits 缺失、超限的负载不允许部署。
- 安全基线:禁止特权容器、宿主网络与敏感挂载。
- 标签规范:owner、环境、成本中心等标签必填,便于治理与分摊。
- 合规审计:策略文件即制度的技术表述,版本历史可作审计证据。
conftest 本地验证
conftest 本地验证
conftest test deploy.yaml -p policy/
# 集群侧用 Kyverno / OPA Gatekeeper 执行同源策略
# 推行节奏: 先 audit 只告警 -> 修完存量 -> enforce 阻断执行点对照
| 层 | 时机 | 反馈速度 |
|---|---|---|
| CI 检查 | 提交/流水线 | 分钟级 |
| 集群准入 | 部署时 | 即时阻断 |
策略报错要可行动:指出违反的规则、字段与修复方式,否则审批人只能反复试错。
策略从 audit 到 enforce 分阶段推进:直接阻断会卡住存量工作负载,先扫描存量、改完再切换强制。
定期统计策略命中率:长期零命中的策略与频繁误报的策略都要复核,保持策略集小而准。