58 votes

comment vérifier si RBAC est activé, en utilisant kubectl

J'essaie d'installer un paquet helm sur un cluster kubernetes qui aurait désactivé le RBAC. J'obtiens une erreur de permission mentionnant clusterroles.rbac.authorization.k8s.io ce qui est ce que j'attendais si RBAC était activé .

Y a-t-il un moyen de vérifier avec kubectl si RBAC est vraiment désactivé ?

Ce que j'ai essayé :

  • kubectl describe nodes --all-namespaces | grep -i rbac : rien ne s'affiche
  • kubectl describe rbac --all-namespaces | grep -i rbac : rien ne s'affiche
  • kubectl config get-contexts | grep -i rbac : rien ne s'affiche
  • k get clusterroles il indique "Aucune ressource trouvée", sans message d'erreur. Cela signifie-t-il que RBAC est activé ?
  • kuebctl describe cluster n'est pas une chose

Je suis conscient que peut-être c'est le problème x-y car il est possible que le package helm que j'installe s'attende à ce que RBAC soit activé. Mais quand même, j'aimerais savoir comment vérifier s'il est activé/désactivé.

101voto

danielepolencic Points 3019

Vous pouvez le vérifier en exécutant la commande kubectl api-versions Si le RBAC est activé, vous devriez voir la version de l'API. .rbac.authorization.k8s.io/v1 .

Dans AKS, le meilleur moyen est de vérifier les détails des ressources du cluster à l'adresse suivante ressources.azure.com . Si vous pouvez repérer "enableRBAC": true si votre cluster est doté de la fonction RBAC. Veuillez noter que les clusters AKS existants qui ne sont pas activés par RBAC ne peuvent pas être mis à jour pour l'utilisation de RBAC. (merci à @DennisAmeling pour la clarification)

7 votes

Pour Azure (AKS), c'est un peu plus délicat. Bien que le kubectl api-versions en effet, les rendements rbac.authorization.k8s.io/v1 le kubectl get clusterroles ne renvoie pas les valeurs par défaut system: rôles préfixés. La meilleure façon de vérifier la présence d'AKS est de consulter les détails des ressources du cluster, par exemple à l'adresse suivante ressources.azure.com . Si "enableRBAC" : true, votre cluster a RBAC activé. Clusters AKS existants sans RBAC activé ne peut actuellement pas être mis à jour pour l'utilisation de RBAC. Donc si vous voulez activer RBAC sur AKS, vous devez créer un nouveau cluster.

1 votes

@DennisAmeling s'il vous plaît envisager d'ajouter ceci comme une réponse indépendante, aucune des autres n'a fonctionné pour moi parce que j'étais sur Azure et la différence dans le comportement RBAC est très inattendue.

5 votes

Et si kubectl api-versions | grep rbac ?

20voto

J'aimerais qu'il y ait un meilleur moyen, mais ce que j'utilise est.. :

$ kubectl cluster-info dump | grep authorization-mode

Si vous pouvez l'exécuter, vous devriez voir soit RBAC et si vous n'avez pas les autorisations pour le faire, il y a de fortes chances que le RBAC soit activé.

1 votes

J'ai essayé. dump ne fonctionne pas pour moi.

3 votes

Après mise à jour de mon kubectl Je peux maintenant exécuter cluster-info dump . J'ai essayé ceci sur un cluster qui a définitivement activé RBAC, et il n'y avait pas de résultat.

0 votes

Si la commande ci-dessus ne renvoie aucune valeur et aucune erreur, qu'est-ce que cela signifie ?

10voto

Dennis Ameling Points 489

Pour Azure (AKS), c'est un peu plus délicat. Bien que le kubectl api-versions La commande renvoie en effet rbac.authorization.k8s.io/v1 le kubectl get clusterroles ne renvoie pas la commande par défaut system: rôles préfixés.

La meilleure façon de vérifier la présence d'AKS est de consulter les détails des ressources du cluster, par exemple à l'adresse suivante ressources.azure.com . Si "enableRBAC": true votre cluster a activé RBAC. Clusters AKS existants non équipés de RBAC ne peut actuellement pas être mis à jour pour une utilisation RBAC. Donc, si vous voulez activer RBAC sur AKS, vous devrez créer un nouveau cluster.

10voto

Olav Nybø Points 4054

Pour Azure (AKS), je pense que Azure CLI fonctionne bien.

az resource show -g <resource group name> -n <cluster name> --resource-type Microsoft.ContainerService/ManagedClusters --query properties.enableRBAC

C'est essentiellement la même chose que d'utiliser ressources.azure.com mais je trouve plus rapide d'utiliser la fonction Azure CLI

0 votes

Le cas d'utilisation que j'avais était qu'Azure prétendait que mon cluster avait RBAC. désactivé mais il s'est comporté exactement comme s'il y avait eu un RBAC. activé . Je voulais vérifier si Azure avait un bug. (AKS est rempli de nombreux bogues graves, c'est donc un soupçon raisonnable).

0 votes

Vous pouvez également utiliser la commande cli aks, par exemple : az aks show -g <resource group name> -n <cluster name> --query enableRbac

4voto

Sudhakar MNSR Points 212

Option #1 : Si vous avez accès au nœud maître, connectez-vous et vérifiez les points suivants

ps -aef | grep -i apiserver
The options should have --authorization-mode=RBAC otherwise RBAC not enabled.

Option n° 2 :

kubectl get clusterroles | grep -i rbac

J'espère que cela vous aidera

Rgds Sudhakar

0 votes

Avec l'option 2, juste pour clarifier : s'il n'y a pas de sortie, alors RBAC est désactivé ? Je m'attends à ce que le cluster ne sache pas ce que clusterroles sont si RBAC est désactivé. Mais j'obtiens "Aucune ressource trouvée" sur un cluster, et sur un autre j'obtiens une longue liste de rôles comprenant system:auth-delegator et system:controller:clusterrole-aggregation-controller mais en excluant tout ce qui mentionne rbac .

5 votes

Je viens de lancer un cluster avec RBAC activé et l'option 2 ne donne aucun résultat.

0 votes

Si la commande scond "kubectl get clusterroles | grep -i rbac" ne retourne aucune valeur et aucune erreur, qu'est-ce que cela signifie ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X