Rego: как указать отсутствие любого из нескольких условий
Как я могу подтвердить наличие двух отдельных ключей в Rego для OPA? В настоящее время я используюnot
оператор так:
deny["Containers must specify readiness and liveness probes"] {
not container.readinessProbe
not container.livenessProbe
}
Однако это отрицает только контейнеры без обоих livenessProbe
а также readinessProbe
. Как мне указать, чтобы запретить контейнеру не хватает одного из двух ключей?
1 ответ
Решение
В этом случае, я думаю, имеет смысл просто иметь правило запрета для каждого:
deny["Containers must specify readiness probes"] {
not container.readinessProbe
}
deny["Containers must specify liveness probes"] {
not container.livenessProbe
}
В политиках Rego правила объединяются по ИЛИ, а операторы тела правила объединяются по И. Поэтому, если вы пытаетесь выразить условие ИЛИ, обычно ищите правило для каждого случая.