规则也是产物
策略即代码把组织意图变成文件:哪些区域可以存放数据、每个工作负载必须带哪些标签、哪些存储类型不能公开。规则进入仓库后便有了历史、评审和测试。重点不是语法,而是规则能针对真实输入执行并给出确定结论。
什么该写进代码
把客观且可检查的规则编码:命名、必需元数据、加密设置、网络暴露、镜像来源。需要大量背景判断的例外,应留在带有效期的评审流程里。一条需要一整段解释才能适用的规则,通常是设计决策而不是护栏。
先测试再强制
每条策略都需要测试夹具:应当通过的资源和应当失败的资源。没有夹具,一个拼写错误就可能静默放行一切,或者在关键时刻拦住合法发布。先以审计模式上线,统计违规数量,修正策略或工作负载,然后再切换为强制模式。
deny[msg] {
input.kind == "Deployment"
not input.metadata.labels.owner
msg := "Deployment must declare an owner label"
}
执行点
准入控制会在创建时拦截不合规资源。CI 能更早发现问题,但可以被绕过。云原生策略引擎持续评估存量资源,这是发现漂移的唯一方式。成熟的做法是让多个执行点共用同一份规则源,写一次、处处评估。
与人工评审的对比
人工评审依赖评审者的记忆和空闲时间,也不会留下检查记录。策略即代码更快、更一致、可审计,但它同样字面化:写得糟糕的规则会大规模拦住正常工作。把策略当软件对待,为它配测试、负责人和回滚方案,否则护栏本身就会变成故障源。