我可以使用以下命令将用户添加到集群角色“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'