问题标签 [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 回答
314 浏览

docker - 允许 docker exec 的 OPA 策略

我已经按照说明部署了 OPA docker 插件。在我尝试为 docker exec 创建自定义 docker API 权限之前,一切都很好。

我已将以下部分添加到authz.rego文件中:

但是当我尝试运行以下 bash 命令时它仍然给我错误:docker exec -it busybox sh按照说明在Bob测试用户下。

journalctl -u docker.service提供以下错误: level=error msg="AuthZRequest for POST /v1.41/containers/busybox/exec returned error: authorization denied by plugin openpolicyagent/opa-docker-authz-v2:0.4: request rejected by administrative policy"

有趣的是,当我注释掉input.path部分时,它作为完整的 RW 用户工作,因此该规则有效,但严格提及 API 路径 - 没有。也许我以错误的方式指定它?

尝试了不同的变体,例如:

还希望获得有关如何允许exec对任何容器进行操作的建议,而不仅仅是指定的容器。

提前致谢!

0 投票
1 回答
129 浏览

jenkins - 在 Jenkins 流水线中运行 Rego 测试

我正在尝试将 rego 测试用例作为 jenkins 管道运行的一部分运行。我以前将我的测试用例和测试用例的输入数据放在一个文件中,它们都运行成功。

我修改了我的测试用例以从外部 json 文件中读取数据,当前文件夹结构如下:test.rego 文件和 input.json 文件在同一文件夹中。

这就是我在 Jenkins 中用来运行测试的方法*./opa test -b -v .*

测试失败并出现错误data.utilities.test_no_OwnerContact: FAIL 我假设这是因为 rego 测试无法从 input.json 读取数据

当我尝试使用显式传递输入文件时-i/--input,我在 jenkins 中看到一个错误Error: unknown flag: --input

我不确定我使用的是必需的标签还是其他标签。任何帮助,将不胜感激。谢谢!

编辑:我打印了包中的文件,并且看到了 data.json 文件。因此 OPA 引擎无法从 Bundle 中读取数据文件。我该如何解决这个问题?

0 投票
1 回答
25 浏览

open-policy-agent - 无法读取 kubernetes 属性

我正在制定一项政策,该政策规定kaniko图像必须始终在 nodePool 上运行kaniko-nodepool

如果将 kaniko 图像部署在其他任何地方,则将违反。我使用容器图像和 nodeSelector 的组合来执行策略

我的政策运作良好https://play.openpolicyagent.org/p/GOJNyAF5TW

更改input.review.object.spec.nodeSelector.pool导致违规

剩下的唯一问题是,如果 pod 没有 nodeSelector 并且正在部署的图像是 kaniko,那么也会发生违规。

所以我加了

意思是如果没有nodeSelector,那么违规应该是正确的。一旦我删除了整个 nodeSelector 部分,它就不会导致违规。

https://play.openpolicyagent.org/p/AuhepivPHN

单击覆盖显示没有任何行正在处理。

我在这里缺少什么吗?

0 投票
1 回答
167 浏览

open-policy-agent - Rego Set 查找是否会迭代集合中的所有项目?

按照这个例子,哪一个会更快地进行查找?

0 投票
1 回答
184 浏览

open-policy-agent - Rego 验证数组比较

我是 Rego 的新手,我正在尝试编写策略以检查是否已在某些 Azure NSG 上创建了一组规则。

输入测试:

我编写了一个自定义函数来检查值。下面是我在 The Rego Playground 中测试的代码

这适用于我在上面定义的属性,但是在尝试比较数组时遇到问题,特别是在此示例中与destinationAddressPrefixes 我尝试了以下操作:

总是返回 false

通过以下行,我可以根据特定 ip 从输入中检查一个目标地址,但是我无法将输入的所有地址与示例中定义的规则进行比较

test2 和 test3 始终返回 true,即使输入中没有规则。我也试过和数组差异

但我收到以下错误:

rego_type_error:减号:无效参数有:(任何,数组<字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串,字符串>,???)想要: (any<number, set[any]>, any<number, set[any]>, any<number, set[any]>)

你知道实现我想要的东西是否可行吗?或者是否有不同的方法来查看数组并逐个比较值?

0 投票
1 回答
157 浏览

kubernetes - 如何使用 Gatekeeper 在没有 ResourceQuota 的情况下禁止命名空间中的 Pod?

我想禁止在没有ResourceQuota的命名空间中创建 Pod 。如果可能的话,我希望 Gatekeeper在允许创建 Pod 之前确保有一个 ResourceQuota 设置limits.cpulimits.memory

我创建了以下配置,但它们没有解决我的问题:

模板

约束

同步.yaml

0 投票
1 回答
58 浏览

open-policy-agent - 如何从 data.inventory 的 resoucequota 对象中检索命名空间值

在gatekeeper 模板中,尝试从resoucequota 对象(使用sync.yaml 复制)中获取命名空间。

目前尝试使用以下方式获取:

existingrqs := {e | e := data.inventory.cluster["v1beta1"]["ResourceQuota"].metadata.namespace}

sync.yaml使用:

无法从 resoucequota 缓存对象中检索命名空间。

0 投票
3 回答
257 浏览

open-policy-agent - 返回数据中的所有键

我是 OPA/Rego 的新手,很难理解这里的问题到底是什么:https ://play.openpolicyagent.org/p/h08NbfmF4j

我希望有与该*类别相关联的团队,我希望accessible[team]规则返回所有现有类别。如果团队分配了特定类别,则应仅返回该类别。

要求真的很简单,但我不知道为什么会出现“eval_conflict_error:对象键必须是唯一的”错误。

0 投票
1 回答
478 浏览

open-policy-agent - 为什么 OPA/Rego 中的“违反”和“拒绝”之间有确切的区别?

在开放策略代理 ( https://www.openpolicyagent.org/ )

关于 Kubernetes,取决于使用的引擎:

或者

定义验证规则有不同的方法:

似乎 OPA 约束框架将其定义为violationhttps ://github.com/open-policy-agent/frameworks/tree/master/constraint#rule-schema

那么这背后的确切“故事”是什么,为什么不同引擎之间不一致?

笔记:

0 投票
1 回答
537 浏览

open-policy-agent - OPA/Rego 对数组的每个元素执行函数

我是 OPA/Rego 的新手,我正在尝试编写一个策略来检查 Azure 网络安全组是否包含我在数组上定义的所有规则

问题似乎是,existRule(rules[i])如果其中一个规则匹配,则执行时返回 true,如果其他规则不匹配,则不要考虑如果我existRule(rules[i])existRule(rules[0])or替换existRule(rules[1]),它返回 true 或 false,具体取决于该位置上的规则是否匹配。

有没有办法获得existRule(rules[i])数组所有元素的执行结果?

我已经尝试过result := [existRule(rules[i])]了,但它只返回一个具有 true 的元素