J'ai essayé avec la commande kubectl get sa default
, mais je ne vois que quelques valeurs très basiques. Quelle est la commande pour afficher les autorisations / rôles associés à un compte de service spécifique dans k8s?
4 Réponses :
Dans Kubernetes, le compte de service est mappé aux privilèges (au niveau du cluster ou au niveau de l'espace de noms) à l'aide de l'objet ClusterRoleBinding. Vous devez rechercher l'objet RoleBinding ou ClusterRoleBinding, puis rechercher l'objet Role ou ClusterRole pour voir les privilèges dont il dispose dans le cluster.
Obtenez le nom du Rôle
lié au compte de service default
à l'aide de la commande suivante.
kubectl get rolebinding --output = yaml
ou kubectl get clusterrolebinding --output = yaml
Maintenant, récupérez la configuration du rôle en utilisant
kubectl get role rolenamefrompreviouscommands
La commande suivante pourrait vous aider. Il obtient essentiellement les RoleBindings et ClusterRoleBindings qui .subjects [0] est le nom du ServiceAccount.
$ kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="weave-net")]}[{.roleRef.kind},{.roleRef.name}]{end}' [Role,weave-net][ClusterRole,weave-net]
Remarque: il ne listera pas les RoleBindings / ClusterRoleBindings qui contiennent plusieurs objets dans le champ sujet
Par exemple, si weave-net est déployé en tant que plug-in réseau, vous pouvez obtenir le rôle et le rôle de cluster utilisés par le compte de service weave-net:
$ kubectl get rolebinding,clusterrolebinding --all-namespaces -o jsonpath='{range .items[?(@.subjects[0].name=="SERVICE_ACCOUNT_NAME")]}[{.roleRef.kind},{.roleRef.name}]{end}'
J'espère que cela vous aidera.
kubectl get rolebindings,clusterrolebindings \ --all-namespaces \ -o custom-columns='KIND:kind,NAMESPACE:metadata.namespace,NAME:metadata.name,SERVICE_ACCOUNTS:subjects[?(@.kind=="ServiceAccount")].name' you can try this command to generate a table to show the mapping