在我为他和各自的配置创建一个.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
。
我已经进行了搜索,并且一些解决方案似乎涉及创建服务帐户,而另一个问题可能是因为查看仪表板的权限是在群集角色上授予的,并且无法命名空间。
是否有解决此问题的最佳方法?
答案 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
将无法下拉列表其他名称空间。
为了全面了解整个过程,我强烈建议您阅读以下指南:
如果您需要大规模使用此方法或类似方法,可以考虑使用此工具:
如果您想了解有关此特定主题的更多知识,我建议您查看以下资源:
通读指南并用链接的资源补充任何所需的知识,将使您更轻松地在用例中理解和实施此解决方案。