web-dev-qa-db-fra.com

Comment afficher les membres du sujet avec le type de groupe

Il existe un ClusterRoleBinding par défaut nommé cluster-admin.
Lorsque je lance kubectl get clusterrolebindings cluster-admin -o yaml Je reçois:

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

Dans le champ subjects, j'ai:

- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:masters

Comment puis-je voir les membres du groupe system:masters?
J'ai lu ici sur les groupes mais je ne comprends pas comment puis-je voir qui est à l'intérieur des groupes comme l'exemple ci-dessus avec system:masters.

J'ai remarqué que quand j'ai décodé /etc/kubernetes/pki/apiserver-kubelet-client.crt en utilisant la commande: openssl x509 -in apiserver-kubelet-client.crt -text -noout il contenait le sujet system:masters mais je ne comprenais toujours pas qui sont les utilisateurs de ce groupe:

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

Réponse mise à jour :

Il semble qu'il n'y ait aucun moyen de le faire en utilisant kubectl. Il n'y a aucun objet comme Group que vous pouvez "récupérer" dans la configuration de Kubernetes.

Les informations de groupe dans Kubernetes sont actuellement fournies par les modules Authenticator et il s'agit généralement d'une chaîne dans la propriété utilisateur.

Vous pouvez peut-être obtenir la liste des groupes à partir du sujet du certificat utilisateur ou si vous utilisez GKE, EKS ou AKS, l'attribut de groupe est stocké dans un système de gestion des utilisateurs du cloud.

https://kubernetes.io/docs/reference/access-authn-authz/rbac/https://kubernetes.io/docs/reference/access-authn-authz/authentication /

Des informations sur l'appartenance à ClusterRole dans les groupes système peuvent être demandées aux objets ClusterRoleBinding. (par exemple pour "system: masters", il affiche uniquement le cluster-admin ClusterRole):

Utilisation de jq:

kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.subjects[0].kind=="Group") | select(.subjects[0].name=="system:masters")'

Si vous souhaitez répertorier uniquement les noms:

kubectl get clusterrolebindings -o json | jq -r '.items[] | select(.subjects[0].kind=="Group") | select(.subjects[0].name=="system:masters") | .metadata.name'

Utilisation de go-templates:

kubectl get clusterrolebindings -o go-template='{{range .items}}{{range .subjects}}{{.kind}}-{{.name}} {{end}} {{" - "}} {{.metadata.name}} {{"\n"}}{{end}}' | grep "^Group-system:masters"

Des informations supplémentaires sur les groupes de systèmes peuvent être trouvées dans problème GitHub # 44418 ou dans document RBAC :

4
VAS