KubeSphere版本信息: v3.3.1
最近接到个需求,需要精细化kubesphere的权限管理,具体是要添加下面两个角色:
**运维人员:**对所有命名空间下控制台可见资源的读写权限,对集群节点、存储卷、命名空间、配额的只读权限。
**SDE 开发:**对所有命名空间 Pod/Service/cluster.kubesphere.io/v1alpha1 以及 vela-system 命名空间下的 Secret 读权限
我参考了cluster-admin的定义,创建了一个basic-developer的role-template和集群角色
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
iam.kubesphere.io/module: Access Control
iam.kubesphere.io/role-template-rules: '{"customresources": "view"}'
kubesphere.io/alias-name: Cluster Developer
labels:
iam.kubesphere.io/role-template: "true"
name: role-template-cluster-basic-developer
rules:
- apiGroups: [""]
resources: ["pods", "services","secrets"]
verbs: ["get", "list", "watch"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cluster-basic-developer
labels:
kubernetes.io/bootstrapping: rbac-defaults
annotations:
iam.kubesphere.io/aggregation-roles: >
["role-template-cluster-basic-developer"]
kubesphere.io/creator: system
rbac.authorization.kubernetes.io/autoupdate: "true"
rules: []
然后在页面可以看到可配置的权限选项:
但是配置完了并没有按照预期的结果控制权限,除了service之外所有资源都是不可见的。
问题:
我的配置方式是正确的吗?看了下相关的帖子,权限是通过role- template聚合的,这个template能自己定义吗?
iam.kubesphere.io/role-template-rules: '{"customresources": "view"}'
这个配置有什么作用?我不加这个,好像就看不到集群管理的界面
role-template是怎么实现权限控制的?我看了下已经存在的template,发现他们的rules字段都是null,具体的权限控制是在哪实现的呢?
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
annotations:
iam.kubesphere.io/dependencies: '["role-template-view-nodes"]'
iam.kubesphere.io/module: Cluster Resources Management
kubesphere.io/alias-name: Nodes Management
iam.kubesphere.io/role-template-rules: '{"nodes": "manage"}'
labels:
iam.kubesphere.io/role-template: "true"
name: role-template-manage-nodes
rules: []