问题标签 [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 投票
2 回答
1123 浏览

open-policy-agent - 在 OPA rego 中使用 OR 条件

我想对以下内容进行 OR 操作,其中我的 arr 计数不等于 0,并且我的电子邮件不包含“test.com”,但是我的规则正在产生错误,有关如何改进它的任何帮助一行非常感谢!先感谢您

0 投票
1 回答
337 浏览

visual-studio-code - VSCode Rego Plugin opa 评估未按预期工作

我正在学习 OPA 和 rego。我正在尝试编写一个简单的策略并通过 VSCode 插件对其进行评估。

文件夹结构:

在此处输入图像描述

学习.rego

输入.json

当我从命令面板中选择“OPA:评估选择”选项时,我收到以下错误。

但是相同的策略在 rego 操场上按预期工作,并按预期评估为“真”。我在这里想念什么?

0 投票
1 回答
250 浏览

open-policy-agent - 在 Rego 中加入两个列表

如何在 Rego 中将两个列表连接在一起?

我尝试了以下但它不起作用,不太确定语法是什么

先感谢您 (:

0 投票
1 回答
51 浏览

open-policy-agent - 打开策略代理 - 检查列表中元素的存在

刚开始处理conftestOPA,我正在尝试验证示例 kubernetes 部署清单以确保它包含列表中的特定键(即image 存在于所有containers

这是一个示例输入

我认为这个策略应该检查image所有容器的存在:

conftest抛出一个错误抱怨not input.spec.template.spec.containers[i].image expression is unsafe

任何关于如何处理这种情况的意见/建议表示赞赏。

0 投票
0 回答
46 浏览

docker - OPA Envoy - 带有 http.send 的策略在负载下失败

预期行为

http.send 在负载下应该可以正常工作

实际行为

在给定分钟内处理 1000 个请求后,它会因打开文件描述符错误过多而失败,并在特定分钟后恢复

重现问题的步骤

  • OPA 版本:openpolicyagent/opa:0.31.0-envoy
  • 给出 OPA 的示例查询、输入、数据和策略: policy_response := http_response { http_response := http.send({ "method" : "POST", "url": opa.runtime()["env"]["URL"], "headers": { "authorization": token }, "raise_error": false, "timeout": "3s", }) }
  • OPA 返回的示例输出 {"code":"eval_http_send_network_error","message":"Post \"{url}\": dial tcp: lookup {hostname} on x.x.x.x:53: dial udp x.x.x.x:53: socket: too many open files","status_code":0,"x-request-id":"b643f986-44ca-44c4-95a6-fc4cbe1f5639"}}

我相信 http.send 正在为导致问题的每个请求创建一个新的 HTTP 客户端。是否有任何替代方案来克服这个问题。先感谢您!

0 投票
1 回答
82 浏览

kubernetes - Kubernetes Open Policy Agent (OPA) If Else

我正在尝试在这样的变异规则中实现 if else 子句...

什么是正确的语法?

0 投票
0 回答
97 浏览

kubernetes - 打开策略代理 rego 读取 configmap

我正在尝试从 rego 中的配置映射中获取值。

对于kube-mgmt,在部署中,我有:

在我的配置图中,我有:

现在这一切都很好,如果我删除"subnet": subnet,, 意味着创建的入口会根据需要进行注释。

我尝试关注以下信息: https ://github.com/open-policy-agent/kube-mgmt

我不知道还有什么可以尝试从 configmap 中获取信息,也不知道除了重新编辑 configmap 之外如何以任何其他方式对其进行测试。

这是我的配置图的样子:

0 投票
1 回答
56 浏览

opa - 如何检查给定的字符串是否包含在标签中

假设我有以下测试输入,我希望能够编写一个测试来检查字符串Application是否包含在任何标签键中。这个想法是这个检查将能够跨资源匹配具有不同命名约定的标签。

知道如何做到这一点吗?

0 投票
2 回答
601 浏览

string - Concat 2 在 rego 中串在一起

如何连接 2 个字符串?

在这里,我尝试定义一个将“f”连接到提供的字符串末尾的函数:

但是当我尝试使用它时(传入baras "123"):

我得到这hello等于false

这是为什么?以及如何正确连接字符串?

这是有关该主题的文档。没找到有用的

0 投票
1 回答
120 浏览

policy - Rego - 将数组分配给现有数组

我在 Rego 出现了一种奇怪的行为,我想知道为什么会这样。

链接到 Rego 游乐场

当我创建一个空数组并为其分配新数组时,第一个数组的计数仍然为零:

输出是:

所以,我有两个问题:

  1. 为什么我在行数(c)> 0 中得到错误?

  2. 如何将数组分配给现有数组?(我需要它,因为我有返回数组的函数,并且我正在尝试返回 2 个数组的串联。例如:

    func[{"msg": msg}] = c{ a := [1,2] b := [3,4] c = array.concat(a,b) }

谢谢!