Skip to content

Policy as Code

类型:策略治理规范

复用规则:稳定复用的规范说明页

当前口径:截至 2026-03-17,Policy as Code 仍然更适合被定义为一类治理与工程实践,而不是单一正式标准;当前公开权威口径可参考 CNCF 对 Policy as Code 的定义,以及 Open Policy Agent 官方文档对策略语言、Bundle 分发和 Decision Logs 的工程实践

权威来源:CNCF Glossary、OPA 官方文档;当前方案不引入新策略组件,规范主要约束既有 Casbin 策略、网关规则、模型与工具治理配置的受控管理方式

当前方案执行点:Casbin 策略资产、门户 / BFF 规则配置、网关与运行时受控策略、发布流程与审计链路

当前定位

Policy as Code 是当前方案的策略资产化治理基线。

它要求把权限、审查、风险控制、工具可用范围、模型路由规则和关键阈值等“会改变系统行为的策略项”,从零散代码和人工口头配置中抽出来,变成可版本化、可评审、可测试、可发布、可回滚的受控资产。

规范约束什么

  • 哪些规则必须视为“策略资产”,不能只藏在业务代码或环境变量里。
  • 策略如何被编写、评审、测试、发布、审计和回滚。
  • 策略如何分发到各执行点,并在运行时产生可追踪的裁决记录。
  • 当策略执行失败、依赖不可用或上下文缺失时,系统如何兜底。

核心原则

  • 策略与业务代码分离,避免逻辑和规则耦合成不可审查黑盒。
  • 策略变更进入版本管理、评审和发布流程,而不是直接在线热改。
  • 关键策略在发布前要可测试、可校验、可做兼容性检查。
  • 运行时决策要可追踪,能看到命中规则、输入上下文和裁决结果。
  • 策略执行失败时要有清晰的失败模式和默认行为,不能默默放行。

在当前方案中的落点

  • Casbin 的模型与策略规则应作为正式策略资产纳入版本管理和发布流程。
  • 门户 / BFF / 工具层中的高风险动作限制、工具白名单、环境开关和租户规则,不应散落在临时代码分支中。
  • 模型路由、知识可见范围、Prompt 安全阈值和外部动作限制,都应按“策略资产”而不是“实现细节”管理。
  • 发布流程要支持策略测试、灰度、回滚和审计,避免“改了一条规则导致全平台行为漂移”。

与组件 / 协议关系

  • Casbin 的关系是“策略治理规范”与“策略裁决实现”的关系。
  • OpenAPI 的关系是:接口契约描述接口形态,策略资产定义接口在什么条件下可被调用。
  • OpenTelemetry 和审计链路配合时,应记录策略命中与决策结果,形成可复盘证据。
  • Maker-Checker 配合时,高风险策略变更本身也应纳入审批和双人复核。

适用场景

  • 授权与访问控制策略
  • 工具白名单、黑名单和动作分级
  • 数据访问、知识检索和租户隔离规则
  • 模型路由、成本阈值、风险阈值与发布门槛
  • 网关与平台运行时的统一策略收敛

边界

  • 不等于引入某一个特定开源项目;它首先是一种治理方法。
  • 不替代业务规则设计和责任归属,写成代码不代表策略本身正确。
  • 不替代审批流;高风险策略上线仍应走人工评审与受控发布。
  • 不意味着所有配置都要做成复杂 DSL,关键在于是否进入受控生命周期。

落地规则

  • 明确“哪些属于策略资产”,至少包括授权规则、工具限制、风险阈值、模型路由和关键安全开关。
  • 所有正式策略资产都应进入版本库,具备责任人、评审人、变更说明和回滚路径。
  • 策略发布前至少经过静态校验、示例测试和关键场景回归验证。
  • 运行时应记录策略版本、输入上下文摘要、命中规则与决策结果。
  • 策略执行失败时,涉及高风险动作应默认收敛到保守路径,而不是无声放通。

治理注意点

  • 要防止把环境差异、租户例外和历史兼容逻辑不断堆到同一套策略里,导致规则失控。
  • 要区分“平台级通用策略”和“业务场景特定策略”,避免职责边界模糊。
  • 要对策略变更建立分级门槛,尤其是权限、数据、外发动作和模型切换相关规则。
  • 要确保策略日志和审计日志能关联到请求、用户、应用和发布批次,形成闭环。

关联文档

参考资料

Open-source first, enterprise-ready.