如何获取Kubernetes集群所有默认内置系统用户组
Kubernetes 原生系统用户组查询说明及默认列表
可执行的查询方案
Kubernetes 没有内置的API资源专门存储全量原生系统用户组,这类组大多是APIServer内部逻辑自动识别、绑定权限的,不会直接持久化在ETCD中,因此不存在可以直接拉取全量原生组的kubectl命令。
你可以通过查询默认RBAC绑定规则中关联的组,筛选出当前集群中正在使用的系统内置组,参考命令如下:
kubectl get clusterrolebindings.rbac.authorization.k8s.io -o jsonpath="{range .items[*]}{range .subjects[?(@.kind == 'Group')]}{.name}{'\n'}{end}{end}" | sort | uniq | grep "^system:"
该命令输出的是所有默认ClusterRoleBinding中绑定的system:前缀组,你可以自行排除其中自行创建的自定义组,剩下的就是集群当前用到的原生系统组。
社区原生系统用户组完整列表
Kubernetes 官方内置的系统用户组统一以system:为前缀,社区原生的完整列表如下:
system:masters:集群超级管理员组,组成员默认拥有集群全量操作权限system:anonymous:未通过任何认证插件校验的请求归属的组system:unauthenticated:所有未认证用户的默认归属组system:authenticated:所有通过认证的身份(包括服务账户、普通用户、节点身份)默认归属的组system:serviceaccounts:集群内所有服务账户(ServiceAccount)的全局归属组system:serviceaccounts:<namespace>:指定命名空间下所有服务账户的专属归属组system:nodes:所有kubelet节点身份的归属组,用于节点与APIServer的交互认证system:node:<node-name>:单个节点对应的专属用户组system:bootstrappers:节点TLS引导初始化阶段使用的临时用户组system:kube-controller-manager:kube-controller-manager组件的专属用户组system:kube-scheduler:kube-scheduler组件的专属用户组system:kube-proxy:kube-proxy组件的专属用户组system:certificates.k8s.io:certificatesigningrequests:nodeclient:节点客户端证书申请对应的权限组system:certificates.k8s.io:certificatesigningrequests:selfnodeclient:节点自助更新客户端证书对应的权限组
注:Kubernetes发行版(如RKE、k3s等)可能会额外新增自定义的system:前缀组,不属于社区原生范围,需参考对应发行版的文档确认。
内容的提问来源于stack exchange,提问作者FlagT
相关产品推荐
相关产品推荐

