如何为分配给特定角色的用户将kubernetes仪表板限制为特定的仪表板

时间:2020-10-20 08:59:00

标签: kubernetes kubectl minikube kubernetes-dashboard

在我为他和各自的配置创建一个.crt之后,我试图限制连接到kubectl的kubernetes仪表板上的用户。

我成功限制了他对以下角色的处理。yaml

kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 namespace: development
 name: dev
rules:
- apiGroups: [""]
  resources: ["pods", "services", "crontabs", "pods/log"]
  verbs: ["create", "get", "update", "list", "delete"]
- apiGroups: ["batch"]
  resources: ["cronjobs", "jobs"]
  verbs: ["*"]
- apiGroups: ["apps"]
  resources: ["deployments"]
  verbs: ["create", "get", "update", "list", "delete"]

和集群绑定

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: kubernetes-dashboard-susann
rules:
- apiGroups: [""]
  resources: ["services/proxy"]
  resourceNames: ["https:kubernetes-dashboard:"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- nonResourceURLs: ["/ui", "/ui/*", "/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/*"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

他可以访问仪表板。 问题是我只希望他能够访问命名空间development

我已经进行了搜索,并且一些解决方案似乎涉及创建服务帐户,而另一个问题可能是因为查看仪表板的权限是在群集角色上授予的,并且无法命名空间。

是否有解决此问题的最佳方法?

1 个答案:

答案 0 :(得分:0)

这可以通过正确的RBAC配置来完成。

您需要在特定的RoleBinding中创建一个namespace。例如,可以如下创建RBAC规则:

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: dev
  namespace: development
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: edit
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: dev

有了它,dev Role将具有预定义的群集角色edit,它将通过仪表板将它们限制为大多数对象的标准操作。 dev将无法下拉列表其他名称空间。

为了全面了解整个过程,我强烈建议您阅读以下指南:

如果您需要大规模使用此方法或类似方法,可以考虑使用此工具:

如果您想了解有关此特定主题的更多知识,我建议您查看以下资源:

通读指南并用链接的资源补充任何所需的知识,将使您更轻松地在用例中理解和实施此解决方案。