OPA 冲突政策
Posted
技术标签:
【中文标题】OPA 冲突政策【英文标题】:OPA conflicting policy 【发布时间】:2020-06-17 22:21:00 【问题描述】:我已经写了一个示例 rego 代码
default allow = false
allow
some username
input.method = "GET"
input.path =["example", username]
input.user = username
allow
some username
input.method = "GET"
input.path = ["example", username]
input.user != username
当我尝试使用带有参数的 http://localhost:8181/v1/data/http/authz/allow API 验证策略时
"input":
"method": "GET",
"path": ["example", "sara"],
"user": "sara"
和
"input":
"method": "GET",
"path": ["example", "sara"],
"user": "notsara"
我得到响应:"decision_id":"xxxxx","result":true
这是预期的结果吗?如果存在冲突的策略,不应该出现错误吗?
【问题讨论】:
【参考方案1】:当您有多个规则定义时,您表示的是logical OR。因此,它们并不冲突;他们都被评估,如果任何规则匹配,你的结果是肯定的。
当您尝试将相同的规则定义为部分规则和完整规则时会发生规则冲突:
allow
some username
input.user = username
allow[id]
some username
input.user != username
1 error occurred: module.rego:3: rego_type_error: conflicting rules named allow found
(这个例子不是很好,也没有什么意义,但我想它可以作为一个例子)
【讨论】:
以上是关于OPA 冲突政策的主要内容,如果未能解决你的问题,请参考以下文章