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