素材阁

OPA 速查

共 23 条 Open Policy Agent 常用写法,涵盖基本用法、Rego 语法、测试与调试、Kubernetes 集成、其他场景。 支持搜索与分类筛选,点击即可复制。

基本用法

通用策略引擎,用 Rego 表达策略。

命令说明
评估策略(传入数据与输入)
交互式运行
服务模式
管道输入

Rego 语法

声明式策略语言。

命令说明
包与默认值
规则(条件成立即真)
多条规则(或关系)
存在量词
否定
引用 data(外部数据)

测试与调试

保证策略正确。

命令说明
运行测试(_test.rego 文件)
带 mock 输入的测试
解释评估过程(调试)
格式化 Rego
语法检查

Kubernetes 集成

Gatekeeper。

命令说明
Gatekeeper
两层定义
准入控制
审计

其他场景

OPA 的广泛应用。

命令说明
网关授权
IaC 校验
流水线
分发策略包

使用说明

Open Policy Agent(Rego)速查:基本用法、Rego 语法、测试与调试、Kubernetes 集成、其他场景;支持搜索与分类筛选,点击即可复制。

  1. 按用途点分类:基本用法、Rego 语法、测试与调试、Kubernetes 集成、其他场景。
  2. 点「写法」列复制,替换策略路径与输入后使用。
  3. 用 opa eval -d 策略文件 -i 输入文件 "data.包.规则" 做验证。
  4. 策略写测试(_test.rego)+ opa test 保证正确,再接入 CI 或 Gatekeeper。

常见问题

Rego 与传统 if-else 有什么不同?
Rego 是声明式的:你描述「在什么条件下结论为真」,而不是写控制流。规则体里多个语句用换行分隔表示「与」,多条同名规则表示「或」。
input 和 data 有什么区别?
input 是每次查询传入的当前请求数据(如要校验的资源),data 是预先加载的外部数据或本包其他规则,二者在规则里都可引用。
怎么和 Kubernetes 配合?
用 Gatekeeper 把 OPA 变成准入控制器:ConstraintTemplate 写 Rego,Constraint 实例化约束,不满足的策略会拒绝资源创建。

延伸阅读

相关工具