问题标签 [open-policy-agent]
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.
open-policy-agent - 使用 opa eval 命令评估文件夹中的多个文件
我在 OPA 网站上看到了这个,我可以使用以下内容:
在命令行上评估策略。 ./opa eval -i input.json -d example.rego
就我而言,我有多个输入文件,我已将其修改为
./opa eval -i /tmp/tfplan.json -d /tmp/example.rego -d /tmp/input1.json -d /tmp/input2.json
我可以直接修改它以读取 tmp 文件夹中存在的所有 json 文件,而不是将文件单独指定为 input1、input2 等吗?
entitlements - 将数据推送到 Open Policy Agent 时如何处理容器重启
在我工作的公司,我们正在考虑是否将开放策略代理 (OPA) 用于细粒度 authZ。
为了将数据加载到 OPA,网站上的External Data下列出了多种方法。对于我们正在处理的场景,我想结合使用JWT 令牌和推送数据(取决于具体的用例)。作为旁注;还考虑最初将 OPA 托管为独立服务而不是 sidecar 容器(即使使用 K8s 和 Istio),因为这似乎更简单(从概念上),并且更容易从更广泛的 IT 中获得支持。根据事情的进展,我们可以稍后迁移到边车方法。
WRT 推送数据方法;
- 如果数据存储在内存中(当使用 Push Data 方法时);当 OPA 崩溃或重新部署时,我们将如何处理这种情况?
- 假设有多个 OPA 副本;我们如何确保数据传播到所有 OPA 容器?
authorization - 检查权利/身份验证时在哪里解析资源所有者
在我工作的公司;我们正在计划一个自定义授权服务(使用 Open Policy Agent 作为策略引擎)来进行细粒度的 authZ 决策。
基本上,启用授权的微服务将身份(JWT 主题)、操作(GET/POST/PUT/PATCH/DELETE)和资源(/thing/12345
)传递给授权服务以获得 authZ 决策。该决定只是一个布尔允许/拒绝响应。权利保留有关用户、组和角色的信息(它从 IDP 和其他系统异步接收),因此它能够从其本地数据源中查找此信息并将其传递给 OPA(使用重载输入模式)。权利/OPA 只是作为独立服务运行 - 我们不会将 OPA 作为边车或任何类似的东西运行......
我们试图解决的问题是,对于大多数路由,资源所有者不是资源路径的一部分,但我们仍然需要资源所有者能够做出 authZ 决定。
我可以想出 3 种方法让资源所有者获得权利。我正在寻求一些关于什么是最好的方法的建议。
- 在所有资源路径中包括资源所有者信息,例如
/user/{id}/thing/12345
. TBH 不确定这种方法在我们的生态系统中的可行性,所以这可能是我最不喜欢的。 - 启用权利的服务需要查找资源所有者(针对给定资源)并将其传递给权利(连同身份、操作和资源)。
- 在创建资源时将资源标识符(映射到资源所有者)同步到授权,以便启用授权的服务随后只需传递身份、操作和资源即可获得 authZ 决策。
kubernetes - 无法使用 opa 网守在 kubernetes 上的特定命名空间 (prod) 中拒绝具有最新标签的 pod
我是 OPA 策略的新手,需要拒绝在我的集群中运行的容器在其映像中具有最新标签的容器,这必须仅针对 prod 命名空间被拒绝,我遇到的问题是使用的命名空间是什么,pod 将是如果它们是在图像中使用最新标签创建的,则被拒绝!!!!!!,我在这里做错了吗?这是我的约束模板:
这是我的约束:
open-policy-agent - Rego 策略的测试用例
对不起我的新手问题。我已经编写了一个 rego 规则来检查 ASV 名称,现在我正在寻找相同的测试用例。我查看了示例测试用例,但没有成功编写我的策略(粘贴在下面)。想知道我怎样才能得到下面规则的正面和失败案例。
open-policy-agent - Rego 的 Array.map 或如何将 RBAC 与 api 路由相结合
我想在 JSON 数据中定义权限,例如:
现在在评估时,我想:uid
用input.subject
. 我该怎么办?Rego 中有类似 Array.prototype.map() 的东西吗?
PS:例如,我知道我可以做到这一点。
但是,我不想在策略中拼出每个路径,而是想使用 RBAC(角色 + 权限),以便我可以将这些 API 端点权限作为 JSON 数据传递。可能吗?
kubernetes - 使用其他规则检查 k8s 命名空间中的注释的 OPA Rego 规则
我想检查命名空间中是否存在注释,如果不拒绝。我有这个代码,但不工作。如何获得正确的对象路径 (namespace.annotation) 进行比较?
我在我的约束中指定了 pod 和命名空间,因为我需要在我的模板中检查两者的规则
谢谢 !
istio - Istio 的 OPA Envoy 插件
我们的团队正在考虑是否将 OPA 部署为插件或独立。
插件链接:https ://github.com/open-policy-agent/opa-envoy-plugin
显然,该插件比独立部署有很多好处,例如:
- 表现
- 随着插件部署为边车,随服务扩展
- 避免网络跳跃
- 安全
- OPA 只能由 envoy 通过 localhost 接口访问
以下是我们的担忧:
- Istio 兼容性
- 它支持最新的 Istio 吗?
- 文档
- 除了 github 自述文件之外,没有那么多博客或文档。如果我们遇到生产问题,我们将无法解决。
- 发展和支持
- 这个插件是否正在积极开发和改进?
对这些问题的任何见解都将受到高度赞赏。
open-policy-agent - 是否可以在开放策略代理策略中使用外部程序的输出
我想制定一项政策,必须通过针对没有 http api 的记录系统查询字段来做出决定。策略有没有办法调用外部程序并使用其返回码来决定是否允许/拒绝?
查看https://www.openpolicyagent.org/docs/latest/policy-reference/#built-in-functions,我没有找到要使用的功能。有我缺少的功能吗?
open-policy-agent - 将 opa http.send 与 conftest 一起使用
我在使用conftest时对数据导入和内置 opa 函数的执行有疑问。在下面的代码示例中,我有两个模块abc
和main
. 我方便地省略了一些设置abc
,重要的是它是一个有效的 https 调用。
从 repl 中工作,我的代码完全按照我的预期执行,即时获取数据available
并检查是否stuff
在该列表中。opa run -b .
然后点击data.abc
执行 https 调用,即我可以看到数据包离开我的界面,并且包含我需要的列表的响应正文被拉入。然后我从deny
. 运行时也会发生同样的事情opa test . -v
。
然而,运行conftest verify -p .
或 conftest test abc/main.json -p .
从不执行http.send
,即数据包永远不会离开我的预期主机接口。
我可以使用静态列表而不是使用 https 调用,但我无法控制列表何时更新。这是 conftest 的预期/预期限制吗?我可以执行这些函数来构建我的数据文档并且我是否正确导入它?