Activer l’authentification d’identité managée Azure pour des clusters Kubernetes avec kubelogin

L’intégration Microsoft Entra gérée par AKS simplifie le processus d’intégration de Microsoft Entra. Auparavant, vous deviez créer une application cliente et une application serveur, et le tenant Microsoft Entra devait attribuer des autorisations de rôle Lecteur de répertoire. À présent, le fournisseur de ressources AKS gère les applications cliente et serveur pour vous.

Les administrateurs de cluster peuvent configurer le contrôle d’accès en fonction du rôle Kubernetes (RBAC Kubernetes) en se basant sur l’identité ou l’appartenance à un groupe d’annuaires de l’utilisateur. L’authentification Microsoft Entra est fournie aux clusters AKS à l’aide d’OpenID Connect. OpenID Connect est une couche d’identité basée sur le protocole OAuth 2.0. Pour plus d’informations sur OpenID Connect, consultez la Documentation sur OpenID Connect.

En savoir plus sur le flux d’intégration de Microsoft Entra dans la DocumentationMicrosoft Entra.

Cet article explique comment activer et utiliser des identités managées pour les ressources Azure avec votre cluster AKS.

Limites

Les contraintes suivantes intègrent l’authentification d’identité managée Azure sur AKS.

  • L’intégration ne peut pas être désactivée une fois ajoutée.
  • Les rétrogradations d’un cluster intégré vers les clusters Microsoft Entra ID hérités ne sont pas prises en charge.
  • Les clusters sans prise en charge RBAC Kubernetes ne peuvent pas ajouter l’intégration.

Avant de commencer

Vous devez répondre aux exigences suivantes pour installer correctement le module complémentaire AKS pour une identité managée.

  • Azure CLI version 2.29.0 ou ultérieure est installé et configuré. Exécutez az --version pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
  • Vous avez besoin de kubectl avec une version minimale de 1.18.1 ou kubelogin. Avec Azure CLI et le module Azure PowerShell, ces deux commandes sont incluses et gérées automatiquement. Cela signifie qu’elles sont mises à niveau par défaut et que l’exécution de az aks install-cli n’est pas obligatoire ni recommandée. Si vous utilisez un pipeline automatisé, vous devez gérer les mises à niveau vers la version correcte ou la plus récente. La différence entre les versions mineures de Kubernetes et kubectl ne doit pas être supérieure à une version. Sinon, des problèmes d’authentification se produisent sur la version incorrecte.
  • Si vous utilisez helm, la version minimale dont vous avez besoin est 3.3.
  • Cette configuration nécessite que vous disposiez d’un groupe Microsoft Entra pour votre cluster. Ce groupe est inscrit en tant que groupe des administrateurs sur le cluster pour accorder des autorisations d’administrateur. Si vous n’avez pas de groupe Microsoft Entra existant, vous pouvez en créer un à l’aide de la commande az ad group create.

Remarque

Les clusters intégrés Microsoft Entra utilisant une version Kubernetes plus récente que la version 1.24 utilisent automatiquement le format kubelogin. À compter de Kubernetes version 1.24, le format par défaut des informations d’identification clusterUser pour les clusters Microsoft Entra ID est exec, ce qui nécessite un binaire kubelogin kubelogin dans l’exécution PATH. Il n’existe aucune modification de comportement pour les clusters non Microsoft Entra ou les clusters Microsoft Entra ID exécutant une version antérieure à la version 1.24. Le téléchargement kubeconfig existant continue de fonctionner. Un format de paramètre de requête facultatif est inclus lors de l'obtention de l'accréditation clusterUser pour remplacer le changement de comportement par défaut. Vous pouvez spécifier explicitement le format azure si vous devez conserver l’ancien format kubeconfig.

Activer l’intégration sur votre cluster AKS

Créer un cluster

  1. Créez un groupe de ressources Azure à l’aide de la commande az group create.

    az group create --name myResourceGroup --location centralus
    
  2. Créer un cluster AKS et activer l’accès administrateur pour votre groupe Microsoft Entra à l’aide de la commande az aks create.

    az aks create \
        --resource-group myResourceGroup \
        --name myManagedCluster \
        --enable-aad \
        --aad-admin-group-object-ids <id> [--aad-tenant-id <id>] \
        --generate-ssh-keys
    

    Lorsqu’un cluster Microsoft Entra managé par AKS a bien été créé, vous voyez la section suivante dans le corps de la réponse :

    "AADProfile": {
        "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
        ],
        "clientAppId": null,
        "managed": true,
        "serverAppId": null,
        "serverAppSecret": null,
        "tenantId": "72f9****-****-****-****-****d011db47"
    }
    

Utiliser un cluster existant

Activer l’intégration Microsoft Entra managée par AKS sur votre cluster avec RBAC Kubernetes existant à l’aide de la commande az aks update. Veillez à définir votre groupe d’administration pour conserver l’accès à votre cluster.

az aks update --resource-group MyResourceGroup --name myManagedCluster --enable-aad --aad-admin-group-object-ids <id-1>,<id-2> [--aad-tenant-id <id>]

Lorsqu’un cluster Microsoft Entra managé par AKS a bien été activé, vous voyez la section suivante dans le corps de la réponse :

"AADProfile": {
    "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
    }

Migrer un cluster hérité vers l’intégration

Si votre cluster utilise l’intégration Microsoft Entra héritée, vous pouvez effectuer une mise à niveau vers l’intégration Microsoft Entra managée par AKS au moyen de la commande az aks update.

Avertissement

Les clusters de niveau Gratuit peuvent subir un temps d’arrêt du serveur d’API pendant la mise à niveau. Nous vous recommandons de procéder à la mise à niveau en dehors des heures de bureau. Le contenu kubeconfig change après la migration. Vous devez exécuter az aks get-credentials --resource-group <AKS resource group name> --name <AKS cluster name> pour fusionner les nouvelles informations d’identification dans le fichier kubeconfig.

az aks update --resource-group myResourceGroup --name myManagedCluster --enable-aad --aad-admin-group-object-ids <id> [--aad-tenant-id <id>]

Lorsqu’un cluster Microsoft Entra managé par AKS a bien été migré, vous voyez la section suivante dans le corps de la réponse :

"AADProfile": {
    "adminGroupObjectIds": [
        "5d24****-****-****-****-****afa27aed"
    ],
    "clientAppId": null,
    "managed": true,
    "serverAppId": null,
    "serverAppSecret": null,
    "tenantId": "72f9****-****-****-****-****d011db47"
    }

Accéder à votre cluster activé

  1. Récupérez les informations d’identification d’utilisateur pour accéder à votre cluster à l’aide de la commande az aks get-credentials.

    az aks get-credentials --resource-group myResourceGroup --name myManagedCluster
    
  2. Suivez les instructions pour vous connecter.

  3. Définissez kubelogin pour utiliser Azure CLI.

    kubelogin convert-kubeconfig -l azurecli
    
  4. Exécutez la commande kubectl get nodes pour voir les nœuds figurant dans le cluster.

    kubectl get nodes
    

Connexion non interactive avec kubelogin

Il existe certains scénarios non interactifs qui ne prennent pas en charge kubectl. Dans ce cas, utilisez kubelogin pour vous connecter au cluster avec des informations d’identification de principal de service non interactives pour effectuer des pipelines d’intégration continue.

Remarque

Les clusters intégrés Microsoft Entra utilisant une version Kubernetes plus récente que la version 1.24 utilisent automatiquement le format kubelogin. À compter de Kubernetes version 1.24, le format par défaut des informations d’identification clusterUser pour les clusters Microsoft Entra ID est exec, ce qui nécessite un binaire kubelogin kubelogin dans l’exécution PATH. Il n’existe aucune modification de comportement pour les clusters non Microsoft Entra ou les clusters Microsoft Entra ID exécutant une version antérieure à la version 1.24. Le téléchargement kubeconfig existant continue de fonctionner. Un format de paramètre de requête facultatif est inclus lors de l'obtention de l'accréditation clusterUser pour remplacer le changement de comportement par défaut. Vous pouvez spécifier explicitement le format azure si vous devez conserver l’ancien format kubeconfig.

  • Lorsque vous obtenez les informations d’identification clusterUser, vous pouvez utiliser le paramètre de requête format pour remplacer le comportement par défaut. Vous pouvez définir la valeur sur azure pour utiliser le format kubeconfig d’origine :

    az aks get-credentials --format azure
    
  • Si votre cluster intégré Microsoft Entra utilise Kubernetes version 1.24 ou antérieure, vous devez convertir manuellement le format kubeconfig.

    export KUBECONFIG=/path/to/kubeconfig
    kubelogin convert-kubeconfig
    

Remarque

Si vous recevez le message Erreur : Le plug-in d’authentification Azure a été supprimé., vous devez exécuter la commande kubelogin convert-kubeconfig pour convertir manuellement le format kubeconfig.

Pour plus d’informations, consultez Problèmes connus d’Azure Kubelogin.

Résoudre les problèmes d’accès

Important

L’étape décrite dans cette section suggère une autre méthode d’authentification par rapport à l’authentification de groupe Microsoft Entra normale. Utilisez cette option uniquement en cas d’urgence.

Si vous ne disposez pas d’un accès administratif à un groupe Microsoft Entra valide, vous pouvez suivre cette solution de contournement. Connectez-vous avec un compte membre du rôle Administrateur de cluster Azure Kubernetes Service et octroyez à votre administrateur de groupe ou de tenant les informations d’identification permettant d’accéder à votre cluster.

Étapes suivantes