Kubernetes 使用ServiceAccount时,使用ClusterRole的Rolebinding不限于命名空间
我希望通过将serviceaccount与clusterRole关联来设置serviceaccount授权,但仅限于使用rolebinding的命名空间 我声明了一个clusterrole,并在指向该clusterrole的命名空间中配置了rolebinding。 但是,当我使用rolebinding中定义的serviceaccount令牌访问集群时,我并不局限于名称空间。Kubernetes 使用ServiceAccount时,使用ClusterRole的Rolebinding不限于命名空间,kubernetes,Kubernetes,我希望通过将serviceaccount与clusterRole关联来设置serviceaccount授权,但仅限于使用rolebinding的命名空间 我声明了一个clusterrole,并在指向该clusterrole的命名空间中配置了rolebinding。 但是,当我使用rolebinding中定义的serviceaccount令牌访问集群时,我并不局限于名称空间。 另一方面,当我使用“用户”证书访问集群时,这是有效的。我只能访问名称空间 Kubernetes v1.13.5 我定义的角
另一方面,当我使用“用户”证书访问集群时,这是有效的。我只能访问名称空间 Kubernetes v1.13.5 我定义的角色绑定:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: exploitant
namespace: myNamespace
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: view
subjects:
- kind: ServiceAccount
name: default
namespace: myNamespace
- apiGroup: rbac.authorization.k8s.io
kind: User
name: myUser
这就是我得到的:
kubectl auth can-i--token=XXXXXXXX get po-n myNamespace
对
-->果然
kubectl auth can-i--token=XXXXXXXX获取订单-n kube系统
对
-->没想到 解决方案是创建一个特定的ServiceAccount。不应使用“默认”serviceAccount。默认情况下,所有POD都使用默认服务帐户运行(如果您没有指定一个帐户)。所以,默认服务帐户存在于所有命名空间中,所以默认服务帐户可以读取所有命名空间中的POD