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

0 投票
1 回答
655 浏览

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 等吗?

0 投票
1 回答
283 浏览

entitlements - 将数据推送到 Open Policy Agent 时如何处理容器重启

在我工作的公司,我们正在考虑是否将开放策略代理 (OPA) 用于细粒度 authZ。

为了将数据加载到 OPA,网站上的External Data下列出了多种方法。对于我们正在处理的场景,我想结合使用JWT 令牌推送数据(取决于具体的用例)。作为旁注;还考虑最初将 OPA 托管为独立服务而不是 sidecar 容器(即使使用 K8s 和 Istio),因为这似乎更简单(从概念上),并且更容易从更广泛的 IT 中获得支持。根据事情的进展,我们可以稍后迁移到边车方法。

WRT 推送数据方法;

  1. 如果数据存储在内存中(当使用 Push Data 方法时);当 OPA 崩溃或重新部署时,我们将如何处理这种情况?
  2. 假设有多个 OPA 副本;我们如何确保数据传播到所有 OPA 容器?
0 投票
1 回答
89 浏览

authorization - 检查权利/身份验证时在哪里解析资源所有者

在我工作的公司;我们正在计划一个自定义授权服务(使用 Open Policy Agent 作为策略引擎)来进行细粒度的 authZ 决策。

高级架构如下所示: 在此处输入图像描述

基本上,启用授权的微服务将身份(JWT 主题)、操作(GET/POST/PUT/PATCH/DELETE)和资源(/thing/12345)传递给授权服务以获得 authZ 决策。该决定只是一个布尔允许/拒绝响应。权利保留有关用户、组和角色的信息(它从 IDP 和其他系统异步接收),因此它能够从其本地数据源中查找此信息并将其传递给 OPA(使用重载输入模式)。权利/OPA 只是作为独立服务运行 - 我们不会将 OPA 作为边车或任何类似的东西运行......

我们试图解决的问题是,对于大多数路由,资源所有者不是资源路径的一部分,但我们仍然需要资源所有者能够做出 authZ 决定。

我可以想出 3 种方法让资源所有者获得权利。我正在寻求一些关于什么是最好的方法的建议。

  1. 在所有资源路径中包括资源所有者信息,例如/user/{id}/thing/12345. TBH 不确定这种方法在我们的生态系统中的可行性,所以这可能是我最不喜欢的。
  2. 启用权利的服务需要查找资源所有者(针对给定资源)并将其传递给权利(连同身份、操作和资源)。
  3. 在创建资源时将资源标识符(映射到资源所有者)同步到授权,以便启用授权的服务随后只需传递身份、操作和资源即可获得 authZ 决策。
0 投票
1 回答
341 浏览

kubernetes - 无法使用 opa 网守在 kubernetes 上的特定命名空间 (prod) 中拒绝具有最新标签的 pod

我是 OPA 策略的新手,需要拒绝在我的集群中运行的容器在其映像中具有最新标签的容器,这必须仅针对 prod 命名空间被拒绝,我遇到的问题是使用的命名空间是什么,pod 将是如果它们是在图像中使用最新标签创建的,则被拒绝!!!!!!,我在这里做错了吗?这是我的约束模板:

这是我的约束:

0 投票
1 回答
227 浏览

open-policy-agent - Rego 策略的测试用例

对不起我的新手问题。我已经编写了一个 rego 规则来检查 ASV 名称,现在我正在寻找相同的测试用例。我查看了示例测试用例,但没有成功编写我的策略(粘贴在下面)。想知道我怎样才能得到下面规则的正面和失败案例。

0 投票
1 回答
149 浏览

open-policy-agent - Rego 的 Array.map 或如何将 RBAC 与 api 路由相结合

我想在 JSON 数据中定义权限,例如:

现在在评估时,我想:uidinput.subject. 我该怎么办?Rego 中有类似 Array.prototype.map() 的东西吗?

PS:例如,我知道我可以做到这一点。

但是,我不想在策略中拼出每个路径,而是想使用 RBAC(角色 + 权限),以便我可以将这些 API 端点权限作为 JSON 数据传递。可能吗?

0 投票
1 回答
443 浏览

kubernetes - 使用其他规则检查 k8s 命名空间中的注释的 OPA Rego 规则

我想检查命名空间中是否存在注释,如果不拒绝。我有这个代码,但不工作。如何获得正确的对象路径 (namespace.annotation) 进行比较?

我在我的约束中指定了 pod 和命名空间,因为我需要在我的模板中检查两者的规则

谢谢 !

0 投票
1 回答
339 浏览

istio - Istio 的 OPA Envoy 插件

我们的团队正在考虑是否将 OPA 部署为插件或独立。

插件链接:https ://github.com/open-policy-agent/opa-envoy-plugin

显然,该插件比独立部署有很多好处,例如:

  1. 表现
    • 随着插件部署为边车,随服务扩展
    • 避免网络跳跃
  2. 安全
    • OPA 只能由 envoy 通过 localhost 接口访问

以下是我们的担忧:

  1. Istio 兼容性
    • 它支持最新的 Istio 吗?
  2. 文档
    • 除了 github 自述文件之外,没有那么多博客或文档。如果我们遇到生产问题,我们将无法解决。
  3. 发展和支持
    • 这个插件是否正在积极开发和改进?

对这些问题的任何见解都将受到高度赞赏。

0 投票
1 回答
128 浏览

open-policy-agent - 是否可以在开放策略代理策略中使用外部程序的输出

我想制定一项政策,必须通过针对没有 http api 的记录系统查询字段来做出决定。策略有没有办法调用外部程序并使用其返回码来决定是否允许/拒绝?

查看https://www.openpolicyagent.org/docs/latest/policy-reference/#built-in-functions,我没有找到要使用的功能。有我缺少的功能吗?

0 投票
1 回答
1082 浏览

open-policy-agent - 将 opa http.send 与 conftest 一起使用

我在使用conftest时对数据导入和内置 opa 函数的执行有疑问。在下面的代码示例中,我有两个模块abcmain. 我方便地省略了一些设置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 的预期/预期限制吗?我可以执行这些函数来构建我的数据文档并且我是否正确导入它?