【问题标题】:Open Policy Agent (OPA) Rego - Accessing Input Object Nested Fields At Runtime开放策略代理 (OPA) Rego - 在运行时访问输入对象嵌套字段
【发布时间】:2020-12-06 11:06:51
【问题描述】:

我正在尝试创建一个有点通用的 rego 策略,它可以评估从输入中给出的嵌套对象字段。 例如:

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”函数,但它们似乎不适用于嵌套属性。 我也试过用“。”分割属性路径。并以某种方式通过字段迭代对象,但没有成功。

任何帮助将不胜感激。

【问题讨论】:

    标签: open-policy-agent rego


    【解决方案1】:

    这对于walk built-in 来说似乎是一个很好的案例。使用它来遍历对象允许您检查路径和/或值以匹配您可能希望的任何条件。

    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..."
    }
    

    查看游乐场示例here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-17
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      相关资源
      最近更新 更多