opa rego 结果集表达式中的“location”键是什么?我可以获取输入 json 中导致违反政策的位置吗?
What's the `location` key in the opa rego resultset expression? can I get locations in input json that caused policy violation?
我正在使用 go rego 包,rego.ResultSet 编组时给出了这个:
[
{
"expressions": [
{
"value": {...},
"text": "data",
"location": { "row": 1, "col": 1 }
}
]
}
]
我打算在输入 JSON 中输出键导致失败的位置,以便我可以在构建错误上下文时使用它
我们之前使用 JSON 模式来验证 JSONs 并且它用于 return 我们可以映射错误的输入键。 https://www.jsonschemavalidator.net/
我想 rego 可以支持更复杂的决策制定,其中不止一个键负责做出最终结果,这可能是它不会指向失败上下文输入中的位置的原因。除非我遗漏了什么?
回答第一个问题:
OPA 解析的每个值都保留 "location" 信息,用于标识它在源 string/file 中的来源。结果集中的位置是创建 rego.Rego
对象时传递的查询中 表达式 的位置。
在您的情况下,查询是 "data"
,即您引用了 OPA 中的所有文档(包括可以从外部加载的基本文档以及由您创建的任何规则生成的虚拟文档)加载到 OPA 中。)在这种情况下表达式的位置不是很有趣:第 1 行,第 1 列。
回答你的第二个问题:
OPA 目前没有可靠的方法来返回输入中 JSON 值的位置,但是这很有价值,可以在将来添加。
我正在使用 go rego 包,rego.ResultSet 编组时给出了这个:
[
{
"expressions": [
{
"value": {...},
"text": "data",
"location": { "row": 1, "col": 1 }
}
]
}
]
我打算在输入 JSON 中输出键导致失败的位置,以便我可以在构建错误上下文时使用它 我们之前使用 JSON 模式来验证 JSONs 并且它用于 return 我们可以映射错误的输入键。 https://www.jsonschemavalidator.net/
我想 rego 可以支持更复杂的决策制定,其中不止一个键负责做出最终结果,这可能是它不会指向失败上下文输入中的位置的原因。除非我遗漏了什么?
回答第一个问题:
OPA 解析的每个值都保留 "location" 信息,用于标识它在源 string/file 中的来源。结果集中的位置是创建 rego.Rego
对象时传递的查询中 表达式 的位置。
在您的情况下,查询是 "data"
,即您引用了 OPA 中的所有文档(包括可以从外部加载的基本文档以及由您创建的任何规则生成的虚拟文档)加载到 OPA 中。)在这种情况下表达式的位置不是很有趣:第 1 行,第 1 列。
回答你的第二个问题:
OPA 目前没有可靠的方法来返回输入中 JSON 值的位置,但是这很有价值,可以在将来添加。