问题标签 [rego]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - OPA (Rego) as Go lib:如何应用外部数据?
我遵循了https://www.openpolicyagent.org/docs/latest/#5-try-opa-as-a-go-library的示例。重要的代码片段:
如何添加外部数据 ( data.json
) 以便我可以使用,例如,data.wantedName
在 rego 策略中访问它?
我试图通读 go doc 和示例,但找不到任何有用的信息。
谢谢!
open-policy-agent - 迭代数组时,如何将输入数组与对象中的数组属性进行比较?
我希望规则评估为true
:
- 如果 input.resource == data.grants[i].resource或 data.grants[i].resource == '*'
- 和
- 如果 data.grants[i].scopes 中的每个 input.scopes 项目都完全匹配,或者如果 data.grants[i].scopes 中存在“category/*”
输入:
数据:
到目前为止,我尝试过的是这里。我无法弄清楚如何与input.scopes
单个对象进行比较并基于该对象data.grants
返回true
/ 。false
kubernetes - 安全评估多种类型的输入 - OPA Gatekeeper/Rego
我正在尝试将约束模板部署到我的 Kubernetes 集群,以强制PodDisriptionBudgets
包含maxUnavailable
高于给定百分比的百分比,并拒绝整数值。
但是,我不确定如何安全评估maxUnavailable
,因为它可以是integer 或 string。这是我正在使用的约束模板:
当我输入一个值太高的 PDB 时,我收到了预期的错误:
但是,当我使用具有整数值的 PDB 时:
这是因为endswith
规则试图评估一个字符串。Gatekeeper有什么办法解决这个问题吗?我指定的两个 PDB 都是有效的 Kubernetes 清单。我不希望将这个令人困惑的错误返回给我们的最终用户,而是希望澄清他们不能使用整数。
policy - 从开放策略代理 (OPA) 查询中传回一个值
我不想查看谁可以访问什么,而是想设置策略来返回每秒允许多少个连接,或者允许多少带宽。如何定义我的策略以返回值而不是 true/false?
go - OPA Rego 问题计数
我正在尝试编写规则,但遇到了问题。我设法从中提取以下内容作为我的输入:
我正在尝试计算具有值 use 的键出现的次数。但是,当我这样做时:
我认为这会创建一个列表,列出我想保留的所有内容,但操场错误:
我希望我可以列出它们,p
然后count(p) > 1
检查是否列出了更多。
open-policy-agent - 使用嵌套对象时如何在 rego 响应中返回每个对象的错误消息
我正在创建一个策略来验证对记录集合的访问。这些记录作为输入传递,并附加了一组权限。我根据存储在 OPA 中的权限数据验证它们。
例如,我可以通过执行以下操作返回可访问的记录集合
哪个会返回类似
当输入如下并且“权限”数据包含“service.legal.user”时
但是,我想返回类似以下内容的内容,其中列出了所有输入记录,并将错误消息分配给那些因所有失败原因而失败的记录
我尝试了增量规则,但我从 OPA 收到错误消息“完整规则不得产生多个输出”
欢迎任何帮助。
go - 如何检查 OPA Rego 文件是否正确
我创建了一个sample.rego
文件,并使用 base64 进行了编码。库中是否有任何方法Golang
可以验证 rego base64 编码值是否正确。
示例.rego 文件:
Base64 编码值为:
cGFja2FnZSBwb2xpY3kuYXV0aHoKCiMgbG9naWMgdGhhdCBpbXBsZW1lbnRzIHBvbGljeS4KZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHsKICBpbnB1dC5wb2xpY3kgPT0gImFiY2QiCn0=
现在我必须在 GoLang 库的帮助下验证我们编码的文件是否有效。
现在,如果我将 Sample.rego 文件更改为:
- Base64 编码值为:
cGFja2FnZSBwb2xpY3kuYXV0aHoKZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHSKICB3cm9uZyBkdW1teSBkYXRhCiAgaW5wdXQucG9saWN5ID09ICJhYmNkIgp9
现在我必须在 GoLang 库的帮助下验证我们编码的文件是无效的。
kubernetes - 使用 Kong 的嵌套 dbless 配置测试 k8s ConfigMap
我发现测试嵌套在此类 ConfigMap 中的 Kong 配置确实有问题(它是此 ConfigMap 的简短版本):
我要做的是使用conftest测试这个 ConfigMap,所以我从 ConfigMap 中“取出”Kong 的配置 YML 文件,如下所示:
kong_config变量是字符串类型,我找不到将其转换为类型对象或任何其他允许我引用 YML 键的类型的正确方法。Rego 的内置函数cast_object似乎不起作用。
有没有人已经遇到这个问题并有一些提示?
policy - 如何为白名单创建 OPA rego 策略?
我正在尝试在 OPA rego 中实施白名单策略。该策略的目的是阻止除已列入白名单的属性之外的所有属性。但是,我无法让它工作。
这是我的 rego 政策:
这是我的输入:
这是根据 Rego Playground 的输出:
如您所见,“允许”应该为真,因为在白名单中找到了输入。此外,“not_in_whitelist”应该为假,因为输入属性在白名单中。
kubernetes - rego opa 策略检查是否为在 kubernetes 中的部署提供了资源
我正在使用 OPA rego 代码检查部署 kubernetes 中是否提供了 key resources.limits。下面是代码,我正在尝试获取 resources.limits 键,它总是返回 TRUE。不管提供与否的资源。