Je configure RBAC dans mon cluster AKS qui est intégré à Azure AD en suivant les instructions ici. J'ai créé un groupe AD dans mon locataire AAD, j'y ai ajouté un utilisateur. Ensuite, le groupe se voit attribuer un « rôle d'utilisateur de cluster » dans le cluster AKS conformément aux instructions. Création d'un rôle et d'une liaison de rôle comme indiqué ci-dessous :

Rôle:

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: development
  name: restricted-role
rules:
- apiGroups: [""] 
  resources: ["pods"]
  verbs: ["get", "watch", "list"]

Liaison de rôle :

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: read-pods
  namespace: development
subjects:
- kind: Group
  name: 308f50cb-e05a-4340-99d4-xxxxxxxb 
  apiGroup: rbac.authorization.k8s.io
  namespace: development
roleRef:
  kind: Role 
  name: restricted-role 
  apiGroup: rbac.authorization.k8s.io

J'ai ensuite essayé de me connecter en utilisant les nouvelles informations d'identification de l'utilisateur :

az login --username kubeuser@xxx.onmicrosoft.com --password xxxx

az aks get-credentials --name mycluster --resource-group myrg --overwrite-existing

Selon la documentation, je ne devrais être autorisé à faire kubectl get pods que sur l'espace de noms de développement. Cependant, en utilisant ces nouvelles informations d'identification utilisateur, je vois que je peux faire kubectl get pods --all-namespaces, kubectl get svc --all-namespaces etc. et afficher les résultats, comme si la liaison de rôle n'avait aucun impact. J'ai également vérifié en vérifiant que mon cluster a

"enableRBAC": vrai

Quelqu'un peut-il me dire ce qui ne va pas avec cette configuration ?

0
Thomas 7 févr. 2020 à 18:23

1 réponse

Meilleure réponse

Utilisation de la commande:

az aks show -g <rg> -n <clusterName> --query aadProfile

Vous pouvez confirmer si le cluster est activé pour AAD. Si activé, le fichier kubeconfig que vous obtenez à partir de :

az aks get-credentials -g <rg_name> -n <aks_name>

Devrait ressembler à:

user:
  auth-provider:
    config:
      apiserver-id: <appserverid>
      client-id: <clientid>
      environment: AzurePublicCloud
      tenant-id: <tenant>
    name: azure
2
Alessandro Vozza 19 févr. 2020 à 22:45