我想在kubernetes中使用OPA(开放策略代理),但是有一些尚不清楚的问题:
让我们一起看一个特定的案例:例如,在命名空间中创建了一个pod,我们可以从OPA的pod对象中了解该命名空间。但是,我们可以单独获取名称空间对象以了解该名称空间所属的权限吗?
更明确地说,我的意思是我们可以通过OPA通过Kubernetes集群发出请求吗?
例如,有一个名为Test的吊舱创建。我只想允许仅创建一个名为TestAuthority的权限进行此创建。创建pod时,我们知道名称空间数据,但不知道权限。为了弄清楚这个pod所属的权限,我需要有名称空间对象并查看其标签。 OPA可以这样做吗?
此外,我们可以说允许以Test1,Test2和Test3的名称创建pod吗?因此,应该拒绝创建任何名称为Test4的吊舱。
预先感谢您的帮助
答案 0 :(得分:1)
(1)是,请参阅https://github.com/open-policy-agent/kube-mgmt#caching或https://github.com/open-policy-agent/gatekeeper#replicating-data,具体取决于要使用的集成。两者都允许将对象从kubernetes复制到OPA中以在策略中进行引用。
(2)是的,您可以编写类似的策略。
信用:Patrick East回答了OPA Slack的问题