使用ServiceAccount时,与ClusterRole进行的角色绑定不限于名称空间

时间:2019-05-29 08:37:30

标签: kubernetes

我想通过将serviceaccount授权关联到clusterRole来设置服务帐户授权,但是使用角色绑定将其限制为命名空间。

我声明了一个clusterrole,并在指向该clusterrole的命名空间中配置了角色绑定。 但是,当我使用在角色绑定中定义的serviceaccount令牌访问群集时,我不仅限于名称空间。
另一方面,当我使用“用户”证书访问群集时,这是可行的。我只能访问名称空间。

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
yes

->符合预期

kubectl auth can-i --token=XXXXXXXX get po -n kube-system
yes

->没想到!!!

1 个答案:

答案 0 :(得分:1)

解决方案是创建一个特定的ServiceAccount。不应使用“默认” serviceAccount。默认情况下,所有Pod均使用默认服务帐户运行(如果未指定)。因此,默认服务帐户存在于所有命名空间中,因此默认服务帐户可以读取所有命名空间中的Pod。