当然,除了TKE控制台提供的预设授权策略,管理员也可以通过kubectl操作ClusterRole/Role来实现自定义角色的灵活配置细粒度权限,以及操作ClusterRoleBinding/RoleBinding进行权限绑定,绑定到任意的角色权限之上。
例如你想设置CAM侧用户组为productA产品的pod-dev的用户权限只能够get/list/watch product-a命名空间下的pods资源,则你可以这样操作:
创建自定义ClusterRole/Role:dev-pod-reader,yaml实例如下,文件名为developer.yaml
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole # 这里使用ClusterRole可以复用给产品其他命名空间 metadata: name: pod-dev # pod-dev此角色为只能读取pod的开发 rules: - apiGroups: [""] # "" 指定核心 API 组 resources: ["pods"] verbs: ["get", "watch", "list"]
使用kubectl或者通过TKE控制台YAML创建资源创建上述Role
绑定dev用户组下的dev1、dev2、dev3用户,绑定自定义权限pod-dev到product-a命名空间下
从此dev1,dev2,dev3用户则只能使用get/list/watch访问product-a下的pods资源
$ kubectl --kubeconfig=./dev.kubeconfig get pods Error from server (Forbidden): pods is forbidden: User "10000001xxxx-1592395536" cannot list resource "pods" in API group "" in the namespace "default" $ kubectl --kubeconfig=./dev.kubeconfig get pods -n product-a No resources found. 参考kubernetes认证介绍
kubernetes授权介绍
kubernetesRBAC介绍
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!