文档中心>容器服务>故障处理>在 Kubernetes 集群中如何根据无权限信息创建 RBAC 权限策略

在 Kubernetes 集群中如何根据无权限信息创建 RBAC 权限策略

最近更新时间:2024-07-10 10:35:01

我的收藏

操作场景

本文档介绍账号如何在 Kubernetes 集群中如何根据无权限信息创建 RBAC 权限策略,在特定集群中创建权限集合并绑定对应子账号,绑定后子账号将能管理集群下的资源。

报错示例

当子账号没有特定集群的 RBAC 权限并尝试获取资源时,将出现如下报错:
获取 Namespace 下的资源:



获取集群维度下的资源:




前提条件

使用主账号或拥有该集群 RBAC admin 权限的子账号进行授权操作。

操作步骤

1. 登录 容器服务控制台,单击左侧导航栏中的集群
2. 如果是主账号或者已被授权过 AcquireClusterAdminRole 接口的权限,但并没有该集群的 RBAC admin 权限,可以在集群管理页面,选择目标集群,进入集群详情页。在授权管理 > ClusterRole 中,通过获取集群 Admin 角色进行授权。如下图所示:



3. 授权管理 > ClusterRole 中,单击 RBAC 策略生成器,选择子账户进行授权。如下图所示:



新建 ClusterRole 页面,检索对应子账号,单击下一步



4. 集群 RBAC 设置中,给子账号授予权限。如下图所示:



Namespace列表:选择是授予 Namespace 级别还是 Cluster 级别的权限。
权限:权限种类分别包含对集群不同范围的权限。
管理员:对所有命名空间下资源的读写权限,拥有集群节点、存储卷、命名空间、配额的读写权限,可配置子账号和权限的读写权限。
运维人员:对所有命名空间下资源的读写权限,拥有集群节点、存储卷、命名空间、配额的读写权限。
开发人员:对所有命名空间或所选命名空间下控制台可见资源的读写权限。
只读用户:对所有命名空间或所选命名空间下控制台可见资源的只读权限。
自定义权限:由您所选择的 ClusterRole 决定,请在确定所选 ClusterRole 对各类资源的操作权限后再进行授权,以免子账号获得不符合预期的权限。
5. 单击完成,完成按策略生成器授予权限的操作。

权限示例

集群 Admin

apiVersion: "rbac.authorization.k8s.io/v1beta1"
kind: "ClusterRole"
metadata:
name: "tke:admin"
labels:
cloud.tencent.com/tke-rbac-generated: "true"
rules:
-
apiGroups:
- "*"
resources:
- "*"
verbs:
- "*"
-
nonResourceURLs:
- "*"
verbs:
- "*"

集群运维管理人员

apiVersion: "rbac.authorization.k8s.io/v1beta1"
kind: "ClusterRole"
metadata:
name: "tke:ops"
labels:
cloud.tencent.com/tke-rbac-generated: "true"
rules:
-
apiGroups:
- ""
resources:
- "pods"
- "pods/attach"
- "pods/exec"
- "pods/portforward"
- "pods/proxy"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- ""
resources:
- "configmaps"
- "endpoints"
- "persistentvolumeclaims"
- "replicationcontrollers"
- "replicationcontrollers/scale"
- "secrets"
- "serviceaccounts"
- "services"
- "services/proxy"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- ""
resources:
- "bindings"
- "events"
- "limitranges"
- "namespaces/status"
- "replicationcontrollers/status"
- "pods/log"
- "pods/status"
- "resourcequotas"
- "resourcequotas/status"
- "componentstatuses"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "namespaces"
- "nodes"
- "persistentvolumes"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "apps"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "replicasets"
- "replicasets/scale"
- "statefulsets"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "autoscaling"
resources:
- "horizontalpodautoscalers"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "autoscaling.cloud.tencent.com"
resources:
- "horizontalpodcronscalers"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "batch"
resources:
- "cronjobs"
- "jobs"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "extensions"
- "networking.k8s.io"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "ingresses"
- "replicasets"
- "replicasets/scale"
- "replicationcontrollers/scale"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterserviceclasses"
- "clusterserviceplans"
- "clusterservicebrokers"
- "serviceinstances"
- "servicebindings"
verbs:
- "create"
- "delete"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterservicebrokers/status"
- "clusterserviceclasses/status"
- "clusterserviceplans/status"
- "serviceinstances/status"
- "serviceinstances/reference"
- "servicebindings/status"
verbs:
- "update"
-
apiGroups:
- "storage.k8s.io"
resources:
- "storageclasses"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "policy"
resources:
- "poddisruptionbudgets"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "networking.istio.io"
- "config.istio.io"
- "rbac.istio.io"
- "authentication.istio.io"
- "install.istio.io"
- "security.istio.io"
resources:
- "*"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "apiextensions.k8s.io"
resources:
- "customresourcedefinitions"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"
-
apiGroups:
- "networking.tke.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"
-
apiGroups:
- "cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"
-
apiGroups:
- "ccs.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"
-
apiGroups:
- "cls.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"

集群开发人员

---
apiVersion: "rbac.authorization.k8s.io/v1beta1"
kind: "ClusterRole"
metadata:
name: "tke:dev"
labels:
cloud.tencent.com/tke-rbac-generated: "true"
rules:
-
apiGroups:
- ""
resources:
- "pods"
- "pods/attach"
- "pods/exec"
- "pods/portforward"
- "pods/proxy"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- ""
resources:
- "configmaps"
- "endpoints"
- "persistentvolumeclaims"
- "replicationcontrollers"
- "replicationcontrollers/scale"
- "secrets"
- "serviceaccounts"
- "services"
- "services/proxy"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- ""
resources:
- "events"
- "replicationcontrollers/status"
- "pods/log"
- "pods/status"
- "componentstatuses"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "namespaces"
- "nodes"
- "persistentvolumes"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "apps"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "replicasets"
- "replicasets/scale"
- "statefulsets"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "autoscaling"
resources:
- "horizontalpodautoscalers"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "autoscaling.cloud.tencent.com"
resources:
- "horizontalpodcronscalers"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "batch"
resources:
- "cronjobs"
- "jobs"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "extensions"
- "networking.k8s.io"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "ingresses"
- "replicasets"
- "replicasets/scale"
- "replicationcontrollers/scale"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterserviceclasses"
- "clusterserviceplans"
- "clusterservicebrokers"
- "serviceinstances"
- "servicebindings"
verbs:
- "create"
- "delete"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterservicebrokers/status"
- "clusterserviceclasses/status"
- "clusterserviceplans/status"
- "serviceinstances/status"
- "serviceinstances/reference"
- "servicebindings/status"
verbs:
- "update"
-
apiGroups:
- "storage.k8s.io"
resources:
- "storageclasses"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "policy"
resources:
- "poddisruptionbudgets"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "networking.istio.io"
- "config.istio.io"
- "rbac.istio.io"
- "authentication.istio.io"
- "security.istio.io"
- "install.istio.io"
resources:
- "*"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "apiextensions.k8s.io"
resources:
- "customresourcedefinitions"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"
-
apiGroups:
- "networking.tke.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "ccs.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "cls.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"

集群指定Namespace开发人员

apiVersion: "rbac.authorization.k8s.io/v1beta1"
kind: "ClusterRole"
metadata:
name: "tke:ns:dev"
labels:
cloud.tencent.com/tke-rbac-generated: "true"
rules:
-
apiGroups:
- ""
resources:
- "pods"
- "pods/attach"
- "pods/exec"
- "pods/portforward"
- "pods/proxy"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- ""
resources:
- "configmaps"
- "endpoints"
- "persistentvolumeclaims"
- "replicationcontrollers"
- "replicationcontrollers/scale"
- "secrets"
- "serviceaccounts"
- "services"
- "services/proxy"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- ""
resources:
- "nodes"
- "persistentvolumes"
- "events"
- "replicationcontrollers/status"
- "pods/log"
- "pods/status"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "apps"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "replicasets"
- "replicasets/scale"
- "statefulsets"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "autoscaling"
resources:
- "horizontalpodautoscalers"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "autoscaling.cloud.tencent.com"
resources:
- "horizontalpodcronscalers"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "batch"
resources:
- "cronjobs"
- "jobs"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "extensions"
- "networking.k8s.io"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "ingresses"
- "replicasets"
- "replicasets/scale"
- "replicationcontrollers/scale"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterserviceclasses"
- "clusterserviceplans"
- "clusterservicebrokers"
- "serviceinstances"
- "servicebindings"
verbs:
- "create"
- "delete"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterservicebrokers/status"
- "clusterserviceclasses/status"
- "clusterserviceplans/status"
- "serviceinstances/status"
- "serviceinstances/reference"
- "servicebindings/status"
verbs:
- "update"
-
apiGroups:
- "storage.k8s.io"
resources:
- "storageclasses"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "policy"
resources:
- "poddisruptionbudgets"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "networking.istio.io"
- "config.istio.io"
- "rbac.istio.io"
- "authentication.istio.io"
- "security.istio.io"
- "install.istio.io"
resources:
- "*"
verbs:
- "create"
- "delete"
- "deletecollection"
- "get"
- "list"
- "patch"
- "update"
- "watch"
-
apiGroups:
- "apiextensions.k8s.io"
resources:
- "customresourcedefinitions"
verbs:
- "get"
- "list"
- "create"
- "watch"
- "patch"
- "update"
- "delete"
- "deletecollection"
-
apiGroups:
- "networking.tke.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "ccs.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "cls.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"

集群只读人员

apiVersion: "rbac.authorization.k8s.io/v1beta1"
kind: "ClusterRole"
metadata:
name: "tke:ro"
labels:
cloud.tencent.com/tke-rbac-generated: "true"
rules:
-
apiGroups:
- ""
resources:
- "pods"
- "pods/attach"
- "pods/exec"
- "pods/portforward"
- "pods/proxy"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "configmaps"
- "endpoints"
- "persistentvolumeclaims"
- "replicationcontrollers"
- "replicationcontrollers/scale"
- "secrets"
- "serviceaccounts"
- "services"
- "services/proxy"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "nodes"
- "persistentvolumes"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "events"
- "replicationcontrollers/status"
- "pods/log"
- "pods/status"
- "componentstatuses"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "apps"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "replicasets"
- "replicasets/scale"
- "statefulsets"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "autoscaling"
resources:
- "horizontalpodautoscalers"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "autoscaling.cloud.tencent.com"
resources:
- "horizontalpodcronscalers"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "storage.k8s.io"
resources:
- "storageclasses"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "batch"
resources:
- "cronjobs"
- "jobs"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "extensions"
- "networking.k8s.io"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "ingresses"
- "replicasets"
- "replicasets/scale"
- "replicationcontrollers/scale"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterserviceclasses"
- "clusterserviceplans"
- "clusterservicebrokers"
- "serviceinstances"
- "servicebindings"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "policy"
resources:
- "poddisruptionbudgets"
verbs:
- "get"
- "list"
-
apiGroups:
- "networking.istio.io"
- "config.istio.io"
- "rbac.istio.io"
- "authentication.istio.io"
- "security.istio.io"
- "install.istio.io"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "apiextensions.k8s.io"
resources:
- "customresourcedefinitions"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "networking.tke.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "ccs.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "cls.cloud.tencent.com"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"

集群指定Namespace只读人员

apiVersion: "rbac.authorization.k8s.io/v1beta1"
kind: "ClusterRole"
metadata:
name: "tke:ns:ro"
labels:
cloud.tencent.com/tke-rbac-generated: "true"
rules:
-
apiGroups:
- ""
resources:
- "pods"
- "pods/attach"
- "pods/exec"
- "pods/portforward"
- "pods/proxy"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "nodes"
- "persistentvolumes"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "configmaps"
- "endpoints"
- "persistentvolumeclaims"
- "replicationcontrollers"
- "replicationcontrollers/scale"
- "secrets"
- "serviceaccounts"
- "services"
- "services/proxy"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- ""
resources:
- "events"
- "replicationcontrollers/status"
- "pods/log"
- "pods/status"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "apps"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "replicasets"
- "replicasets/scale"
- "statefulsets"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "autoscaling"
resources:
- "horizontalpodautoscalers"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "autoscaling.cloud.tencent.com"
resources:
- "horizontalpodcronscalers"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "batch"
resources:
- "cronjobs"
- "jobs"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "extensions"
- "networking.k8s.io"
resources:
- "daemonsets"
- "deployments"
- "deployments/rollback"
- "deployments/scale"
- "ingresses"
- "replicasets"
- "replicasets/scale"
- "replicationcontrollers/scale"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "servicecatalog.k8s.io"
resources:
- "clusterserviceclasses"
- "clusterserviceplans"
- "clusterservicebrokers"
- "serviceinstances"
- "servicebindings"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "policy"
resources:
- "poddisruptionbudgets"
verbs:
- "get"
- "list"
-
apiGroups:
- "networking.istio.io"
- "config.istio.io"
- "rbac.istio.io"
- "authentication.istio.io"
- "security.istio.io"
- "install.istio.io"
resources:
- "*"
verbs:
- "get"
- "list"
- "watch"
-
apiGroups:
- "apiextensions.k8s.io"
resources:
- "customresourcedefinitions"
verbs:
- "get"
- "list"
- "watch"