OPA 通过 Kubernetes 集群请求

requests through the Kubernetes cluster by OPA

我想在 kubernetes 中使用 OPA(Open Policy Agent),但有一些问题我还不清楚:

我们一起来看一个具体的案例:比如在namespace中创建了一个pod,我们可以从OPA的pod对象中知道namespace。但是,我们是否可以单独获取命名空间对象来获知这个命名空间所属的权限呢?

更明确地说,我的意思是我们可以通过 OPA 通过 Kubernetes 集群进行请求吗?

例如,有一个名为 Test 的 pod 创建。我只想允许这个创建只针对一个名为 TestAuthority 的机构。创建 Pod 时,我们知道名称空间数据但不知道权限。要弄清楚这个 pod 所属的权限,我需要有命名空间对象并查看它的标签。我们可以通过 OPA 这样做吗?

另外,我们可以说允许创建名称为Test1、Test2、Test3的pod吗?因此,应拒绝任何名为 Test4 的 pod 创建。

提前感谢您的帮助

(1) 是的,请参阅 https://github.com/open-policy-agent/kube-mgmt#caching or https://github.com/open-policy-agent/gatekeeper#replicating-data,具体取决于您要使用的集成。两者都允许将对象从 kubernetes 复制到 OPA 以在策略中引用。

(2) 是的,你可以这样写策略。

来源:Patrick East 从 OPA Slack 回答