Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le plug-in kubelogin dans Azure est un plug-in d’identification pour client-go qui implémente l’authentification Microsoft Entra. Le plug-in kubelogin propose des fonctionnalités non disponibles dans l’outil en ligne de commande kubectl. Pour plus d’informations, consultez l’introduction à kubelogin et l’introduction à kubectl.
Cet article fournit une vue d’ensemble et des exemples d’utilisation de kubelogin pour les méthodes d’authentification Microsoft Entra prises en charge recommandées pour AKS.
Limitations de l'authentification Kubelogin dans AKS
- Les groupes créés dans Microsoft Entra sont inclus uniquement par leur valeur ObjectID , et non par leur nom complet. La commande
sAMAccountNamen’est disponible que pour les groupes synchronisés depuis un Windows Server Active Directory local.
- La méthode d’authentification du principal de service fonctionne uniquement avec l’intégration de Microsoft Entra ID managée, pas avec l’intégration Microsoft Entra ID héritée.
- Un service principal peut être membre d’un maximum de 200 groupes Microsoft Entra. Si vous avez plus de 200 groupes, il est recommandé d’utiliser des rôles d’application.
- La méthode d’authentification par code d’appareil ne fonctionne pas lorsqu’une stratégie d’accès conditionnel Microsoft Entra est configurée sur le locataire Microsoft Entra. Dans ce scénario, utilisez plutôt l’authentification interactive du navigateur web.
- La méthode d’authentification Azure CLI fonctionne uniquement avec Microsoft Entra.
Fonctionnement de l’authentification kubelogin dans AKS
Les clusters AKS exécutant Kubernetes version 1.24 ou ultérieure utilisent automatiquement le format du plug-in kubelogin exec. Les clusters exécutant des versions kubernetes antérieures à la version 1.24 nécessitent une conversion manuelle vers ce format.
Pour la plupart des interactions avec kubelogin, utilisez la convert-kubeconfig sous-commande. La sous-commande utilise le fichier kubeconfig que vous spécifiez dans --kubeconfig ou dans la KUBECONFIG variable d’environnement pour convertir le fichier kubeconfig final au format exec en fonction de la méthode d’authentification spécifiée.
Les méthodes d’authentification implémentées par kubelogin correspondent aux flux d’octroi de jeton OAuth 2.0 de Microsoft Entra. Le comportement du cache dépend de la méthode d’authentification. Les enregistrements d’authentification pour le code d’appareil, l’authentification interactive via le navigateur web et l’authentification par informations d’identification de mot de passe du propriétaire de la ressource (ROPC) sont mis en cache dans le répertoire de cache de kubelogin. Les méthodes telles que Azure CLI et Azure Developer CLI utilisent le cache géré par leur outil en ligne de commande respectif au lieu du cache kubelogin.
Authentification de code d’appareil
Le code d’appareil est la méthode d’authentification par défaut pour la sous-commande convert-kubeconfig. Cette méthode invite l’utilisateur à saisir le code d’appareil afin de se connecter via une session de navigateur.
Remarque
Avant l’introduction des plugins kubelogin et exec, la méthode d’authentification Azure dans kubectl ne prenait en charge que le flux de code d’appareil. Elle utilisait une version antérieure d’une bibliothèque qui générait un jeton dont la revendication audience comportait le préfixe spn:. Ce flux n’est pas compatible avec Microsoft Entra, qui utilise un flux OBO (on-behalf-of). Lors de l’exécution de la sous-commande convert-kubeconfig, kubelogin supprime le préfixe spn: de la revendication audience.
Paramètres pour l’authentification par code d’appareil
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification du code d’appareil :
| Paramètre | Descriptif |
|---|---|
-l devicecode (facultatif) |
Spécifie la méthode d’authentification kubelogin. Ce paramètre est facultatif, car le code de l’appareil est la méthode par défaut. |
--legacy |
Utilise l’ancien comportement pour les clusters configurés avec l’intégration héritée de Microsoft Entra ID. Si le fichier kubeconfig concerne un tel cluster, kubelogin ajoute automatiquement l’indicateur --legacy . |
--cache-dir |
Remplace le chemin d’accès par défaut du répertoire du cache de jetons, qui est ${HOME}/.kube/cache/kubelogin. |
L'authentification de l'Azure CLI
La méthode d’authentification Azure CLI (commande : -l azurecli) utilise le contexte connecté établi par Azure CLI pour obtenir le jeton d’accès. Le jeton est émis dans le même locataire Microsoft Entra que celui utilisé par az login. kubelogin n’écrit pas de jetons dans le fichier de cache de jetons, car Azure CLI les gère déjà.
Paramètres pour l’authentification Azure CLI
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification Azure CLI :
| Paramètre | Descriptif |
|---|---|
-l azurecli |
Spécifie la méthode d’authentification kubelogin. |
--azure-config-dir |
Spécifie le répertoire de configuration Azure CLI. Le répertoire par défaut est ${HOME}/.azure. |
Connexion à Azure
Connectez-vous à Azure à l’aide de la az login commande.
az login
Authentification interactive du navigateur web
La méthode d’authentification interactive du navigateur web (commande : -l interactive) ouvre automatiquement un navigateur web pour se connecter à l’utilisateur. Une fois l’utilisateur authentifié, le navigateur redirige vers le serveur web local à l’aide des informations d’identification vérifiées. Cette méthode d’authentification est conforme à la stratégie d’accès conditionnel.
Vous pouvez utiliser un jeton porteur ou un jeton de preuve de possession (PoP) avec cette méthode d’authentification.
Paramètres pour l’authentification par jeton du porteur
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification par jeton du porteur :
| Paramètre | Descriptif |
|---|---|
-l interactive |
Spécifie la méthode d’authentification kubelogin. |
--cache-dir |
Remplace le chemin d’accès par défaut du répertoire du cache de jetons, qui est ${HOME}/.kube/cache/kubelogin. |
Paramètres pour l’authentification par jeton PoP
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification par jeton PoP :
| Paramètre | Descriptif |
|---|---|
-l interactive |
Spécifie la méthode d’authentification kubelogin. |
--pop-enabled |
Active l’authentification par jeton PoP. |
--pop-claims |
Spécifie les attributs du jeton PoP dans un format de paire clé-valeur. Par exemple : u=/ARM/ID/OF/CLUSTER. |
Authentification d’un principal du service
La méthode d’authentification du principal de service (commande : -l spn) utilise un principal de service pour authentifier l'utilisateur. Vous pouvez fournir les informations d’identification en définissant une variable d’environnement ou en utilisant les informations d’identification directement dans un argument de ligne de commande. Les types d’informations d’identification pris en charge sont un mot de passe ou un certificat client au format PFX (Personal Information Exchange).
Paramètres de l’authentification par service principal
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification du principal de service :
| Paramètre | Descriptif |
|---|---|
-l spn |
Spécifie la méthode d’authentification kubelogin. |
--client-id |
ID d’application (id client) du principal de service. |
--client-secret |
Secret client du principal de service. |
Authentification d’une identité managée
Utilisez la méthode d’authentification d’identité managée (commande : -l msi) pour les applications qui se connectent aux ressources qui prennent en charge l’authentification Microsoft Entra. Par exemple, l’accès à des ressources Azure comme une machine virtuelle Azure, Virtual Machine Scale Sets ou Azure Cloud Shell.
Vous pouvez utiliser l’identité managée par défaut affectée à la ressource ou une identité managée affectée par l’utilisateur spécifique.
Paramètres pour l’authentification d’identité managée
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification d’identité managée :
| Paramètre | Descriptif |
|---|---|
-l msi |
Spécifie la méthode d’authentification kubelogin. |
--client-id |
ID d’application (id client) de l’identité managée affectée par l’utilisateur. Si vous ne spécifiez pas ce paramètre, l’identité managée par défaut est utilisée. |
Authentification par identité de charge de travail
La méthode d’authentification d’identité de charge de travail (commande : -l workloadidentity) utilise des informations d’identification d’identité fédérées avec Microsoft Entra pour authentifier l’accès aux clusters AKS. Cette méthode repose sur l’authentification intégrée Microsoft Entra. Elle fonctionne en configurant les variables d’environnement suivantes :
| Variable | Descriptif |
|---|---|
AZURE_CLIENT_ID |
L’ID de l’application Microsoft Entra fédérée avec l’identité de charge de travail. |
AZURE_TENANT_ID |
ID de locataire Microsoft Entra. |
AZURE_FEDERATED_TOKEN_FILE |
Le fichier contenant une assertion signée de la charge de travail, comme un jeton JWT de compte de service projeté Kubernetes. |
AZURE_AUTHORITY_HOST |
URL de base d'une instance Microsoft Entra. Par exemple : https://login.microsoftonline.com/. |
Vous pouvez utiliser une identité de charge de travail pour accéder aux clusters Kubernetes à partir de systèmes CI/CD tels que GitHub ou Argo CD sans stocker les informations d’identification du principal de service dans les systèmes externes. Pour configurer la fédération OpenID Connect (OIDC) depuis GitHub, consultez l’exemple de fédération OIDC.
Paramètres pour l’authentification par identité de charge de travail
Le tableau suivant présente les paramètres que vous pouvez utiliser avec l’authentification d’identité de charge de travail :
| Paramètre | Descriptif |
|---|---|
-l workloadidentity |
Spécifie la méthode d’authentification kubelogin. |
Authentification d’Azure Developer CLI
La méthode d’authentification d’Azure Developer CLI (commande : -l azd) utilise le contexte de connexion établi par Azure Developer CLI pour obtenir le jeton d’accès. Le jeton est émis dans le même locataire Microsoft Entra que celui utilisé par azd auth login. kubelogin n'écrit pas de jetons dans son cache de jetons, car l'interface CLI du développeur Azure les gère.
Cette méthode d’authentification fonctionne uniquement avec des Microsoft Entra managées dans AKS. Pour plus d’informations, consultez la vue d’ensemble de l’interface CLI Azure développeur.
Authentification des Azure Pipelines
La méthode d'authentification Azure Pipelines (commande : -l azurepipelines) utilise une connexion de service Azure Resource Manager et le jeton d'accès système du pipeline pour s'authentifier. Cette méthode fonctionne uniquement dans Azure Pipelines. Le pipeline doit disposer d’une connexion de service Azure Resource Manager et autoriser les scripts à accéder au jeton OAuth.
Lorsque vous utilisez une AzureCLI@2 tâche avec une connexion de service Azure Resource Manager, kubelogin peut utiliser l’ID de locataire, l’ID client et l’ID de connexion de service que Azure Pipelines fournit en tant que variables d’environnement. Pour plus d’informations, consultez les connexions de service Azure Pipelines.
Warning
kubelogin prend également en charge la méthode d’authentification ROPC (Resource Owner Password Credential). Microsoft recommande de ne pas utiliser ROPC, car il n'est pas compatible avec l'authentification multifacteur et certains scénarios d'identité hybride. Pour plus d’informations, consultez les recommandations Plateforme d'identités Microsoft relatives à ROPC.
Exporter le chemin du fichier kubeconfig
Avant d’exécuter la convert-kubeconfig sous-commande, exportez le chemin du fichier kubeconfig vers la variable d’environnement KUBECONFIG . Par exemple:
export KUBECONFIG=/path/to/kubeconfig
Convertir le fichier kubeconfig
Exécutez la convert-kubeconfig sous-commande pour convertir le fichier kubeconfig afin d’utiliser le plug-in exec pour votre méthode d’authentification choisie.
kubelogin convert-kubeconfig
kubelogin convert-kubeconfig -l azurecli
# Bearer token authentication
kubelogin convert-kubeconfig -l interactive
# Proof-of-Possession (PoP) token authentication
kubelogin convert-kubeconfig -l interactive --pop-enabled --pop-claims "u=/ARM/ID/OF/CLUSTER"
- Utiliser des variables d’environnement
- Utiliser des arguments de ligne de commande
- Utiliser un certificat client
- Utiliser un jeton PoP avec des variables d’environnement
Exécutez la
convert-kubeconfigsous-commande pour convertir le fichier kubeconfig pour utiliser le plug-in exec.kubelogin convert-kubeconfig -l spnDéfinissez les variables d’environnement pour l’ID client et la clé secrète client ou le certificat client. Par exemple:
export AZURE_CLIENT_ID=<service-principal-client-id> export AZURE_CLIENT_SECRET=<service-principal-client-secret>
# Default managed identity authentication
kubelogin convert-kubeconfig -l msi
# Specific managed identity authentication
kubelogin convert-kubeconfig -l msi --client-id <managed-identity-client-id>
kubelogin convert-kubeconfig -l workloadidentity
Convertir le fichier kubeconfig à l’aide de l’interface CLI Azure Développeur
Connectez-vous à l’aide de l’interface CLI Azure développeur.
azd auth loginConvertissez le fichier kubeconfig pour utiliser la méthode d’authentification CLI Azure développeur.
kubelogin convert-kubeconfig -l azd
Convertir le fichier kubeconfig dans Azure Pipelines
Dans une tâche qui utilise une AzureCLI@2 connexion de service Azure Resource Manager, convertissez le fichier kubeconfig pour utiliser l’authentification Azure Pipelines.
kubelogin convert-kubeconfig -l azurepipelines
Supprimer des jetons mis en cache
Supprimez les jetons mis en cache à l’aide de la kubelogin remove-cache-dir commande.
kubelogin remove-cache-dir
Obtenir des informations sur les nœuds
Obtenez des informations sur le nœud à l’aide de la kubectl get commande.
kubectl get nodes
Comment utiliser des ID d’application kubelogin avec AKS
AKS utilise une paire d’applications Microsoft Entra propriétaires. Ces ID d’application sont identiques dans tous les environnements.
| Application | ID d’application (GUID) | Utilisé dans |
|---|---|---|
Application serveur AKS (--server-id) |
6dae42f8-4368-4678-94ff-3960e28e3630 |
Audience du jeton pour toutes les méthodes d’authentification kubelogin prises en charge lors de l’accès à AKS. |
Application cliente publique AKS (--client-id) |
80faf920-1908-4b52-b5ef-a8e7bedfc67a |
Code de l’appareil, navigateur web interactif et authentification ROPC. |
Lorsque vous appelez kubelogin get-token directement pour AKS, spécifiez l’ID d’application serveur AKS avec --server-id. Pour connaître les paramètres spécifiques au mode, consultez la référence kubeloginget-token.
Remarque
L’ID d’application cliente publique AKS dans cette section correspond à la valeur --client-id pour l’authentification par code d’appareil, par navigateur web interactif et ROPC. Pour l’authentification du principal de service et de l’identité managée, --client-id identifie plutôt le principal de service ou l’identité managée affectée par l’utilisateur.
Par exemple, obtenez un jeton à l’aide de l’authentification du code d’appareil et des ID d’application AKS :
kubelogin get-token \
--login devicecode \
--server-id 6dae42f8-4368-4678-94ff-3960e28e3630 \
--client-id 80faf920-1908-4b52-b5ef-a8e7bedfc67a \
--tenant-id <microsoft-entra-tenant-id>
Contenu connexe
- Découvrez comment intégrer AKS à Microsoft Entra dans l’article sur l’intégration de Microsoft Entra .
- Pour une prise en main des identités managées dans AKS, consultez Utiliser une identité managée dans AKS.
- Pour bien démarrer avec les identités de charge de travail dans AKS, consultez Utiliser une identité de charge de travail dans AKS.