首页 > 解决方案 > Rego:如何指定不具有多个条件中的任何一个

问题描述

如何验证 Rego for OPA 中是否存在两个单独的密钥?目前,我正在使用这样的not运算符:

deny["Containers must specify readiness and liveness probes"] {
  not container.readinessProbe
  not container.livenessProbe
}

但是,这只会拒绝没有livenessProbe和的容器readinessProbe。如何指定拒绝缺少两个键中的任何一个的容器

标签: open-policy-agentrego

解决方案


对于这种情况,我认为只为每个设置一个拒绝规则是有意义的:

deny["Containers must specify readiness probes"] {
  not container.readinessProbe
}

deny["Containers must specify liveness probes"] {
  not container.livenessProbe
}

使用 Rego 策略,规则是 OR'd 在一起,并且规则正文语句是 AND'd。因此,如果您尝试表达 OR 条件,通常会为每种情况寻找一个规则。


推荐阅读