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



在为a用户创建.crt和相应的配置后,我试图限制连接到kubectl的kubernetes仪表板上的a用户。

我成功地限制了他可以用以下角色做什么。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

我已经搜索了一些,一些解决方案似乎涉及创建一个服务帐户,另一个问题可能是因为查看仪表板的权限是授予集群角色的,不能按名称命名。

有没有最好的方法来解决这个问题?

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

您需要在特定的namespace中创建一个RoleBinding。例如,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

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

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

  • 按命名空间安装Kubernetes Dashboard

如果你需要使用这种或类似的方法进行更大规模的测试,你可以考虑使用这个工具:

  • RBAC经理

如果你想了解更多关于这个特定主题的知识,我建议你查看以下来源:

  • 使用RBAC授权

  • 创建受限于一个命名空间的Kubernetes服务/用户帐户

  • KUBERNETES和RBAC:限制用户访问一个名称空间

阅读本指南并用链接的来源补充任何所需的知识,将使您更容易在用例中理解和实现此解决方案。

相关内容

  • 没有找到相关文章

最新更新