如何列出 OpenShift 中具有集群管理员角色的用户?

如何列出 OpenShift 中具有集群管理员角色的用户?

我可以使用以下命令将用户添加到集群角色“cluster-admin”:

oc adm policy add-cluster-role-to-user cluster-admin <user>

但是我如何列出具有 cluster-admin 角色的所有用户?

环境:OpenShift 3.x

答案1

我自己找到的:

它位于以下RoleBinding[cluster-admins]:部分:

oc describe clusterPolicyBindings :default

jq可以使用一个命令获取用户列表:

oc get --all-namespaces --output json clusterPolicyBindings | jq '.items[].roleBindings[] | select(.name=="cluster-admins") | .roleBinding.userNames'

对于 OpenShift 3.7 及更新版本:

oc get clusterrolebindings -o json | jq '.items[] | select(.metadata.name=="cluster-admins") | .userNames'

答案2

在 openshift 3.9 中,集群管理员位于不同的字典中(cluster-admin-0、cluster-admin-1 等)。列出它们:

oc get clusterrolebinding -o json | jq '.items[] | select(.metadata.name |  startswith("cluster-admin")) | .userNames'

答案3

从我这边来看,Openshift 3.7+ 的命令适用于集群管理员:

oc get --all-namespaces --output json clusterPolicyBindings | jq '.items[].roleBindings[] | select(.name=="cluster-admin") | .roleBinding.userNames'

对于集群读取器角色:

oc get clusterrolebindings -o json | jq '.items[] | select(.metadata.name=="cluster-readers") | .userNames'

答案4

上面的大多数回复都没有回答OP的问题:

但是我如何列出具有 cluster-admin 角色的所有用户?

相反,他们获取的是名为 的特定 clusterrolebinding 背后的用户cluster-admins,而不是属于获取该名称的任何 clusterrolebinding 的所有用户ClusterRole/cluster-admin

为此,OpenShift 4.8,首先根据分配给 clusterrolebinding 的角色进行过滤,然后获取用户

oc get clusterrolebindings -o json |jq '.items[] |select(.roleRef.name=="cluster-admin") |.subjects[] |select(.kind=="User") |.name'

相关内容