用于kubernetes仪表板的RBAC

用于kubernetes仪表板的RBAC,kubernetes,kubectl,google-kubernetes-engine,azure-aks,Kubernetes,Kubectl,Google Kubernetes Engine,Azure Aks,我有一个用户“a”。我有名称空间X、Y、Z。我为有权访问名称空间“X”的用户“a”创建了RBAC用户角色和角色绑定 我想让用户“A”访问kubernetes dashboard(这是Kube系统的角色和角色绑定)。但是,当我为dashboard提供访问权限时,用户“A”能够看到所有名称空间 但我希望他只看到他有权访问的名称空间X) 我该怎么做呢 您的仪表板的版本是什么?据我所知,从1.7开始,Dashboard使用了更安全的设置,这意味着,默认情况下,它拥有使Dashboard正常工作所需的最低

我有一个用户“a”。我有名称空间X、Y、Z。我为有权访问名称空间“X”的用户“a”创建了RBAC用户角色和角色绑定

我想让用户“A”访问kubernetes dashboard(这是Kube系统的角色和角色绑定)。但是,当我为dashboard提供访问权限时,用户“A”能够看到所有名称空间

但我希望他只看到他有权访问的名称空间X)


我该怎么做呢

您的仪表板的版本是什么?据我所知,从1.7开始,Dashboard使用了更安全的设置,这意味着,默认情况下,它拥有使Dashboard正常工作所需的最低权限集

无论如何,您可以检查仪表板使用的sa的权限,确保它具有最低权限,如下所示:

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubernetes-dashboard-minimal
  namespace: kube-system
rules:
  # Allow Dashboard to create 'kubernetes-dashboard-key-holder' secret.
- apiGroups: [""]
  resources: ["secrets"]
  verbs: ["create"]
  # Allow Dashboard to create 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]
  resources: ["configmaps"]
  verbs: ["create"]
  # Allow Dashboard to get, update and delete Dashboard exclusive secrets.
- apiGroups: [""]
  resources: ["secrets"]
  resourceNames: ["kubernetes-dashboard-key-holder", "kubernetes-dashboard-certs"]
  verbs: ["get", "update", "delete"]
  # Allow Dashboard to get and update 'kubernetes-dashboard-settings' config map.
- apiGroups: [""]
  resources: ["configmaps"]
  resourceNames: ["kubernetes-dashboard-settings"]
  verbs: ["get", "update"]
  # Allow Dashboard to get metrics from heapster.
- apiGroups: [""]
  resources: ["services"]
  resourceNames: ["heapster"]
  verbs: ["proxy"]
- apiGroups: [""]
  resources: ["services/proxy"]
  resourceNames: ["heapster", "http:heapster:", "https:heapster:"]
  verbs: ["get"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: kubernetes-dashboard-minimal
  namespace: kube-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: kubernetes-dashboard-minimal
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kube-system
然后,创建RBAC规则,将命名空间X的完整权限授予:

apiVersion: rbac.authorization.k8s.io/v1beta1
kind: RoleBinding
metadata:
  name: user-A-admin
  namespace: X
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: A

确保用户A没有任何其他RBAC规则。

有关专业服务器或网络相关基础设施管理的问题与堆栈溢出无关,除非它们直接涉及编程或编程工具。您可以在serverfault.com上获得帮助…我已尝试了上述方法。用户A只能访问命名空间“X”。但是,由于Kube系统可以访问集群中的所有资源,因此它会向每个用户显示所有名称空间,而不考虑权限。您应该以kubernetes Dashboard作为serviceaccount运行Dashboard。您知道有任何文章清楚地解释此过程吗?我是说服务帐户等。请看一下,非常感谢