问题标签 [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.

0 投票
1 回答
400 浏览

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 和示例,但找不到任何有用的信息。

谢谢!

0 投票
0 回答
48 浏览

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

0 投票
1 回答
52 浏览

kubernetes - 安全评估多种类型的输入 - OPA Gatekeeper/Rego

我正在尝试将约束模板部署到我的 Kubernetes 集群,以强制PodDisriptionBudgets包含maxUnavailable高于给定百分比的百分比,并拒绝整数值。

但是,我不确定如何安全评估maxUnavailable,因为它可以是integer 或 string。这是我正在使用的约束模板:

当我输入一个值太高的 PDB 时,我收到了预期的错误:

但是,当我使用具有整数值的 PDB 时:

这是因为endswith规则试图评估一个字符串。Gatekeeper有什么办法解决这个问题吗?我指定的两个 PDB 都是有效的 Kubernetes 清单。我不希望将这个令人困惑的错误返回给我们的最终用户,而是希望澄清他们不能使用整数。

0 投票
1 回答
54 浏览

policy - 从开放策略代理 (OPA) 查询中传回一个值

我不想查看谁可以访问什么,而是想设置策略来返回每秒允许多少个连接,或者允许多少带宽。如何定义我的策略以返回值而不是 true/false?

0 投票
1 回答
73 浏览

go - OPA Rego 问题计数

我正在尝试编写规则,但遇到了问题。我设法从中提取以下内容作为我的输入:

我正在尝试计算具有值 use 的键出现的次数。但是,当我这样做时:

我认为这会创建一个列表,列出我想保留的所有内容,但操场错误:

我希望我可以列出它们,p然后count(p) > 1检查是否列出了更多。

0 投票
1 回答
29 浏览

open-policy-agent - 使用嵌套对象时如何在 rego 响应中返回每个对象的错误消息

我正在创建一个策略来验证对记录集合的访问。这些记录作为输入传递,并附加了一组权限。我根据存储在 OPA 中的权限数据验证它们。

例如,我可以通过执行以下操作返回可访问的记录集合

哪个会返回类似

当输入如下并且“权限”数据包含“service.legal.user”时

但是,我想返回类似以下内容的内容,其中列出了所有输入记录,并将错误消息分配给那些因所有失败原因而失败的记录

我尝试了增量规则,但我从 OPA 收到错误消息“完整规则不得产生多个输出”

欢迎任何帮助。

0 投票
2 回答
66 浏览

go - 如何检查 OPA Rego 文件是否正确

我创建了一个sample.rego文件,并使用 base64 进行了编码。库中是否有任何方法Golang可以验证 rego base64 编码值是否正确。

  1. 示例.rego 文件:

  2. Base64 编码值为:

    cGFja2FnZSBwb2xpY3kuYXV0aHoKCiMgbG9naWMgdGhhdCBpbXBsZW1lbnRzIHBvbGljeS4KZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHsKICBpbnB1dC5wb2xpY3kgPT0gImFiY2QiCn0=

现在我必须在 GoLang 库的帮助下验证我们编码的文件是否有效。

现在,如果我将 Sample.rego 文件更改为:

  • Base64 编码值为:

cGFja2FnZSBwb2xpY3kuYXV0aHoKZGVmYXVsdCBhbGxvdyA9IGZhbHNlCmFsbG93IHSKICB3cm9uZyBkdW1teSBkYXRhCiAgaW5wdXQucG9saWN5ID09ICJhYmNkIgp9

现在我必须在 GoLang 库的帮助下验证我们编码的文件是无效的。

0 投票
1 回答
25 浏览

kubernetes - 使用 Kong 的嵌套 dbless 配置测试 k8s ConfigMap

我发现测试嵌套在此类 ConfigMap 中的 Kong 配置确实有问题(它是此 ConfigMap 的简短版本):

我要做的是使用conftest测试这个 ConfigMap,所以我从 ConfigMap 中“取出”Kong 的配置 YML 文件,如下所示:

kong_config变量是字符串类型,我找不到将其转换为类型对象或任何其他允许我引用 YML 键的类型的正确方法。Rego 的内置函数cast_object似乎不起作用。

有没有人已经遇到这个问题并有一些提示?

0 投票
2 回答
34 浏览

policy - 如何为白名单创建 OPA rego 策略?

我正在尝试在 OPA rego 中实施白名单策略。该策略的目的是阻止除已列入白名单的属性之外的所有属性。但是,我无法让它工作。

这是我的 rego 政策:

这是我的输入:

这是根据 Rego Playground 的输出:

如您所见,“允许”应该为真,因为在白名单中找到了输入。此外,“not_in_whitelist”应该为假,因为输入属性在白名单中。

0 投票
1 回答
54 浏览

kubernetes - rego opa 策略检查是否为在 kubernetes 中的部署提供了资源

我正在使用 OPA rego 代码检查部署 kubernetes 中是否提供了 key resources.limits。下面是代码,我正在尝试获取 resources.limits 键,它总是返回 TRUE。不管提供与否的资源。