web-dev-qa-db-ja.com

グループの種類を持つサブジェクトのメンバーを表示する方法

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:
12
E235

更新された回答

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ドキュメント にあります。

4
VAS