Open policy agent Open Policy Agent(OPA)Rego-在运行时访问输入对象嵌套字段
我试图创建一个有点通用的rego策略,它可以计算从输入中给定的嵌套对象字段。 例如:Open policy agent Open Policy Agent(OPA)Rego-在运行时访问输入对象嵌套字段,open-policy-agent,rego,Open Policy Agent,Rego,我试图创建一个有点通用的rego策略,它可以计算从输入中给定的嵌套对象字段。 例如: field_from_input := "spec.securityContext.runAsRoot" violation[{"msg": msg}] { fields := split(field_from_input, ".") # Somehow get the inner "runAsRoot" field va
field_from_input := "spec.securityContext.runAsRoot"
violation[{"msg": msg}] {
fields := split(field_from_input, ".")
# Somehow get the inner "runAsRoot" field value
nested_value := input.object[fields]
nested_value == "test"
msg := "some message..."
}
我尝试过使用内置的“object.filter”和“json.filter”函数,但它们似乎不适用于嵌套属性。
我还尝试过用“.”分割属性路径,并以某种方式按字段迭代对象,但没有成功
任何帮助都将不胜感激。这似乎是
步行的好例子。使用它遍历对象允许您检查路径和/或值,以匹配您可能希望的任何条件
package play
spec := {
"securityContext": {
"runAsRoot": true,
},
}
violation[{"msg": msg}] {
walk(spec, [path, value])
node := path[count(path) - 1]
node == "runAsRoot"
value == true
msg := "some message..."
}
参见操场示例