Rego:如何指定没有多个条件

Rego: how to specify not having either of multiple conditions

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

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

但是,这只会拒绝没有 livenessProbereadinessProbe 的容器。如何指定拒绝缺少两个键中的 的容器?

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

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

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

对于 Rego 策略,规则是通过“或”运算结合在一起的,而规则主体语句也是通过“与”运算的。因此,如果您尝试表达 OR 条件,通常会针对每种情况寻找规则。