cluster-admin
という名前のデフォルトのClusterRoleBinding
があります。kubectl get clusterrolebindings cluster-admin -o yaml
を実行すると、次のメッセージが表示されます。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
annotations:
rbac.authorization.kubernetes.io/autoupdate: "true"
creationTimestamp: 2018-06-13T12:19:26Z
labels:
kubernetes.io/bootstrapping: rbac-defaults
name: cluster-admin
resourceVersion: "98"
selfLink: /apis/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin
uid: 0361e9f2-6f04-11e8-b5dd-000c2904e34b
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:masters
subjects
フィールドには次のものがあります。
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:masters
グループsystem:masters
のメンバーを表示するにはどうすればよいですか?
グループについては こちら を読みましたが、system:masters
。
コマンド/etc/kubernetes/pki/apiserver-kubelet-client.crt
を使用してopenssl x509 -in apiserver-kubelet-client.crt -text -noout
をデコードすると、サブジェクトsystem:masters
が含まれていましたが、このグループのユーザーが誰であるかまだわかりませんでした。
Issuer: CN=kubernetes
Validity
Not Before: Jul 31 19:08:36 2018 GMT
Not After : Jul 31 19:08:37 2019 GMT
Subject: O=system:masters, CN=kube-apiserver-kubelet-client
Subject Public Key Info:
Public Key Algorithm: rsaEncryption
Public-Key: (2048 bit)
Modulus:
更新された回答:
kubectl
を使用してそれを行う方法はないようです。 Kubernetes構成内で「取得」できるグループのようなオブジェクトはありません。
Kubernetesのグループ情報は現在、Authenticatorモジュールによって提供され、通常はユーザープロパティの単なる文字列です。
おそらく、ユーザー証明書のサブジェクトからグループのリストを取得できます。GKE、EKS、またはAKSを使用する場合、グループ属性はクラウドユーザー管理システムに保存されます。
https://kubernetes.io/docs/reference/access-authn-authz/rbac/https://kubernetes.io/docs/reference/access-authn-authz/authentication /
システムグループのClusterRoleメンバーシップに関する情報は、ClusterRoleBindingオブジェクトから要求できます。 (たとえば、「system:masters」の場合、cluster-admin ClusterRoleのみが表示されます):
Jqの使用:
kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.subjects[0].kind=="Group") | select(.subjects[0].name=="system:masters")'
名前のみをリストする場合:
kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.subjects[0].kind=="Group") | select(.subjects[0].name=="system:masters") | .metadata.name'
Goテンプレートの使用:
kubectl get clusterrolebindings -o go-template='{{range .items}}{{range .subjects}}{{.kind}}-{{.name}} {{end}} {{" - "}} {{.metadata.name}} {{"\n"}}{{end}}' | grep "^Group-system:masters"
システムグループに関する追加情報は、- GitHub issue#44418 または RBACドキュメント にあります。