0

我在其中一条规则中有 sprintf,但似乎没有用。这是非常基本的,但有人可以告诉我我做错了什么吗?在https://play.openpolicyagent.org/上在线以及在 opa 版本 0.32.0 上离线似乎都不起作用。

package cs

deny[reason] {
    input.spec.resourceAttributes.namespace == "sveltos"
    reason := sprintf("OPA: User (%v) must belong to valid group", input.spec.user)
}

输入:

{
  "spec": {
    "resourceAttributes": {
      "namespace": "sveltos",
      "resource": "pods"
    },
    "user": "jane"
  }
}
4

1 回答 1

2

这是我的错误, opa 还没有可变参数函数,所以 sprintf 的第二个参数必须是一个数组。在示例中:

package cs

deny[reason] {
    input.spec.resourceAttributes.namespace == "sveltos"
    reason := sprintf("OPA: User (%v) must belong to valid group", [input.spec.user])
}
于 2021-09-19T17:49:28.583 回答