问题标签 [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.
kubernetes - Kubernetes:尝试通过 kube-mgmt 加载 OPA 策略,方法是创建一个包含策略的配置映射,但配置映射没有任何注释
希望的行为
- 编写检查图像名称是否包含默认最新标签的 OPA 策略。以下是我的 .rego 文件:
- 通过创建 configmap 加载策略。我使用了以下命令:
我当前上下文中的默认命名空间是
opa
.
- 之后,假设我可以通过创建一个带有最新标签的 pod 来执行该策略,并且它必须被拒绝。
实际行为
具有最新标签的 Pod 已成功创建,并且不会被拒绝。
重现问题的步骤
我遵循了这些提示https://www.openpolicyagent.org/docs/latest/kubernetes-debugging/。
因此,预计创建的 configmapregistry-whitelist
具有openpolicyagent.org/policy-status
注释,但它具有<none>
值,我也检查了kube-mgmt
容器的日志,但它们没有帮助我。我得到的唯一有趣的日志是当我尝试删除配置映射时,registry-whitelist
我可以看到以下日志:
level=error msg="删除策略 opa/registry-whitelist/image-checker.rego 失败:code resource_not_found: storage_not_found_error: policy id "opa/registry-whitelist/image-checker.rego""
testing - Rego测试:如何测试“不否认”?
我正在探索使用opa test
以下简单规则开始测试我的 Rego 策略:
我能够针对被拒绝的情况成功地对此进行测试:
但是,当我尝试针对应该允许的情况进行测试时,如下所示:
我收到一个错误:
test_allowed_example
除了知道这是失败的测试外,我无法真正解析此错误消息。
如何正确测试允许输入(不拒绝)的用例?
open-policy-agent - OPA Rego 函数语句评估顺序
输入= {“部门”:“英语”,“位置”:“伦敦”}
上面的代码只匹配hello。为什么即使条件相同,世界也不匹配,但顺序颠倒了?
open-policy-agent - 映射数组中的项目
希望这是一个简单的好方法,但我就是不知道该怎么做。
我想用 rego 将数组中的项目映射到更干净的版本。例如从下面的数据
我想把数据变成
我认为我最接近的两个是
open-policy-agent - Rego object.get 与多级键
有没有办法使用 object.get 与多级键..?
我的输入如下所示:
{
"pipelineParameters" : {
"k8" : {
"NODES" : "1"
},
"ec2": {
"NODES" : "0"
}
}
我的数据看起来像
{
"key": "pipelineParameters.k8.NODES"
}
如何根据多级键从输入中获取价值
示例代码
open-policy-agent - 根据 OPA 策略过滤数据集
我有一个由两层组成的访问控制模型:Access Levels和Shared Permissions。
用户的访问级别控制您在系统中可以拥有的最大权限集,它还授予您在系统中创建顶级对象(组合、程序、项目等)的一些基本权限。系统中的其他人也可以与您共享系统中的对象(从而授予您一个或多个专门针对某个对象的权限)。如果一个对象不是由您创建或没有分配给您,那么您应该能够看到它,除非它明确与您共享。示例数据集如下所示:
政策看起来像这样:
假设我创建了一个 Projects API 来管理项目资源。API 有一个列出项目的方法,该方法应该只返回用户有权查看的项目。因此,在上面的示例中,用户 'joe.humphreys@example.com' 不应该能够查看项目 2,即使他的访问级别为他提供了 'projects.view'。这是因为它没有与他共享。
如果我想使用 OPA,我如何提供一个通用模式来跨多个 API 完成此任务?对于 OPA 来说,要完成这样的事情,查询会是什么样子?换句话说,如果我想在 SQL 中强制执行此授权,那会是什么样子?
我读过这篇文章,但我很难看出它是如何适合这里的。
open-policy-agent - opa rego 结果集表达式中的“位置”键是什么?我可以在输入 json 中获取导致违反政策的位置吗?
我正在使用 go rego 包,编组时的 rego.ResultSet 给出了这个:
我打算在输入 JSON 中输出导致失败的键的位置,以便我可以在构建错误的上下文中使用它 我们之前使用 JSON 模式来验证 JSON,它用于从输入中返回键可以映射错误。https://www.jsonschemavalidator.net/
我想因为 rego 可以支持更复杂的决策,其中不止一个键将负责产生最终结果,这可能是它不会指向失败上下文输入中的位置的原因。除非我错过了什么?
open-policy-agent - 给定动态数量的参数的数组产品
我有一个执行数组产品的函数:
如果我有如下定义的三个数组:
那么输出arrayProduct(animals1, animals2, animals3)
将是:
如果我可以保证输入将始终是列表,我可以创建一个函数来做同样的事情,除了它可以接受动态数量的列表作为输入而不是仅仅 3?
我也在探索是否也可以只使用一个包含其中所有数组的参数来执行此操作,而不是接受多个参数。例如:
任何对任何一种方法的解决方案的见解将不胜感激。
kubernetes - 开放策略代理 - OPA - 如何使用来自 kubernetes configmap 对象的 --config-file
我正在尝试如下设置我的 OPA。
- OPA 在 Kubernetes 中作为 sidecar 安装
- 政策将作为捆绑包进行管理
- OPA 策略将从单独的服务中存储和提供 [捆绑]
- 需要使用 config-file 配置 OPA 以从外部服务获取策略
- config-file 将作为配置映射存储在 kubernetes 中。
- 该配置映射需要在 --config-file 中使用
我在 Kubernetes 中的配置图
我的边车 OPA
让我知道是否可以以这种方式实施
open-policy-agent - 从 Rego 中的一串元素创建一个集合
如何从 Rego Open Policy Agent 语言中的字符串创建集合?
我有一串元素,比如"values": "pvc-volume,emptydir-volume,hostPath,ConfigMaps"
哪些元素需要根据一组给定的允许值进行验证
例如使用交叉点
valid_backup_profiles & elements_coming_from_string_above
我知道该split(string, ",")
函数返回一个元素数组,但该数组不能与集合相交。有没有什么聪明的方法可以从字符串而不是数组生成集合?