Kubernetes 如何通过开放策略拒绝openshift中的查看/获取操作?

Kubernetes 如何通过开放策略拒绝openshift中的查看/获取操作?,kubernetes,openshift,open-policy-agent,rego,Kubernetes,Openshift,Open Policy Agent,Rego,我们想禁用oc get/DESCRIPE以防止令牌登录 当前策略禁止创建、更新、删除但不允许查看机密 package admission import data.k8s.matches # Deny all user for doing secret ops except policyadmin deny[query] { matches[[resource]] not "policyadmin" == resource.userInfo.username "Se

我们想禁用oc get/DESCRIPE以防止令牌登录

当前策略禁止创建、更新、删除但不允许查看机密

package admission

import data.k8s.matches

# Deny all user for doing secret ops except policyadmin

deny[query] {
    matches[[resource]]

    not "policyadmin" == resource.userInfo.username
    "Secret" == resource.kind.kind

    msg := sprintf("Custom Unauthorized user: %v", [resource.userInfo.username])

    query = {
        "id": "policy-admin-for-secret-only",
        "resource": {
            "kind": kind,
            "namespace": namespace,
            "name": name
        },
        "resolution": {
            "message": msg
        },
    }
}
资源对象中的数据只是:

{\kind\:{\group\:\,\kind\:\Secret\,\version\: \v1\}、\name\:\s5-token-n6v6q\,\namespace\:\demo\, \操作\:\DELETE\,\resource\:{\group\:\, \资源\:\secrets\,\version\:\v1\},\uid\: \748cdab2-1c1d-11ea-8b11-080027f8814d\,\userInfo\:{\groups\: [\system:cluster admins\,\system:masters\, \系统:已验证\],\username\:\system:admin\}

中的示例使用了resource.spec对象,但我认为它在我的input/AdmissionReview对象中不可用

我正在使用

小换档1.24 openshift v3.9.0+2e78773-56 kubernetes v1.9.1+a0ce1bc657 etcd 3.2.16
Kubernetes中的准入控制不允许您控制get。它只允许您控制创建、更新、删除和连接。的API文档及其子代RuleWithOperations no handy link没有明确说明这一点,但明确说明了它的状态

要控制get,您需要使用。您可以使用来限制谁可以获取任何机密。要使用OPA进行授权,您需要


在您链接到的Andrew的代码中,他使用的是授权webhook而不是许可控制webhook。这就是为什么他从输入中使用的一些数据与您从许可控制webhook中看到的数据不一样。快速查看一下他的书写,您似乎需要按照他的指示操作。

Kuberne中的许可控制tes不允许您控制get。它只允许您控制创建、更新、删除和连接。的API文档及其子代规则WithOperations no handy链接没有明确说明这一点,但明确说明了它的状态

要控制get,您需要使用。您可以使用来限制谁可以获取任何机密。要使用OPA进行授权,您需要

在您链接到的Andrew的代码中,他使用的是授权webhook而不是许可控制webhook。这就是为什么他从输入中使用的一些数据与您从许可控制webhook中看到的数据不一样。快速查看他的writeup,您似乎需要按照他的说明进行操作