Utiliser un principal de service avec Azure Kubernetes Service (AKS)
Un cluster AKS nécessite un principal de service Microsoft Entra ou une identité managée pour créer et gérer dynamiquement d’autres ressources Azure, telles qu’une instance Azure Load Balancer ou Azure Container Registry (ACR).
Pour une sécurité optimale et une facilité d’utilisation, Microsoft recommande d’utiliser des identités managées plutôt que des principaux de service pour autoriser l’accès à partir d’un cluster AKS à d’autres ressources dans Azure. Une identité managée est un type spécial de principal de service qui peut être utilisé pour obtenir des informations d’identification Microsoft Entra sans avoir à gérer et sécuriser des informations d’identification. Pour plus d’informations sur l’utilisation d’une identité managée avec votre cluster, consultez Utiliser une identité managée dans AKS.
Cet article vous montre comment créer et utiliser un principal de service avec vos clusters AKS.
Avant de commencer
Pour créer un principal de service Microsoft Entra, vous devez disposer des autorisations suffisantes pour inscrire une application auprès de votre client Microsoft Entra et l’affecter à un rôle dans votre abonnement. Si vous n’avez pas les autorisations nécessaires, vous devrez demander à votre administrateur Microsoft Entra ID ou à votre administrateur d’abonnement de vous attribuer les autorisations nécessaires ou de créer au préalable un principal de service que vous pourrez utiliser avec votre cluster AKS.
Si vous utilisez le principal du service d’un autre locataire Microsoft Entra, il y a d’autres points à prendre en considération quant aux autorisations disponibles au moment de déployer le cluster. Vous n’avez peut-être pas les autorisations adéquates pour lire et écrire des informations d’annuaire. Pour plus d’informations, consultez Quelles sont les autorisations utilisateur par défaut dans Microsoft Entra ID ?
Prérequis
- Si vous utilisez Azure CLI, vous avez besoin d’Azure CLI version 2.0.59 ou ultérieure. Exécutez
az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI. - Si vous utilisez Azure PowerShell, vous avez besoin d’Azure PowerShell version 5.0.0 ou ultérieure. Exécutez
Get-InstalledModule -Name Az
pour trouver la version. Si vous devez installer ou mettre à niveau, consultez Installer le module PowerShell Azure Az.
Créer un principal du service
Créez un principal de service avant de créer votre cluster.
Créez un principal de service à l’aide de la commande
az ad sp create-for-rbac
.az ad sp create-for-rbac --name myAKSClusterServicePrincipal
Votre résultat devrait être semblable à l’exemple de sortie suivant :
{ "appId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "displayName": "myAKSClusterServicePrincipal", "name": "http://myAKSClusterServicePrincipal", "password": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "tenant": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }
Copiez les valeurs de
appId
etpassword
à partir de la sortie. Vous les utilisez lors de la création d’un cluster AKS dans la section suivante.
Spécifier un principal de service pour un cluster AKS
Utilisez un principal de service existant pour un nouveau cluster AKS à l’aide de la commande
az aks create
et utilisez les paramètres--service-principal
et--client-secret
pour spécifierappId
etpassword
de la sortie que vous avez reçue dans la section précédente.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --service-principal <appId> \ --client-secret <password> \ --generate-ssh-keys
Notes
Si vous utilisez un principal de service existant avec un secret personnalisé, assurez-vous que le secret ne dépasse pas 190 octets.
Déléguer l’accès à d’autres ressources Azure
Vous pouvez utiliser le principal de service du cluster AKS pour accéder à d’autres ressources. Par exemple, si vous souhaitez déployer votre cluster AKS dans le sous-réseau d’un réseau virtuel Azure existant, connectez-vous à Azure Container Registry (ACR) ou accédez à des clés ou secrets dans un coffre de clés à partir de votre cluster, vous devez déléguer l’accès à ces ressources au principal du service. Pour déléguer l’accès, attribuez un rôle Azure de contrôle d’accès en fonction du rôle (Azure RBAC) au principal du service.
Important
Les autorisations accordées à un principal de service associé à un cluster peuvent prendre jusqu’à 60 minutes pour se propager.
Créez une affectation de rôle à l’aide de la commande
az role assignment create
. Indiquez la valeur de l’appID du principal de service pour le paramètreappId
. Spécifiez l’étendue de l’attribution de rôle, telle qu’un groupe de ressources ou une ressource de réseau virtuel. L’attribution de rôle détermine les autorisations dont dispose le principal de service sur la ressource et leur étendue.Par exemple, pour affecter les autorisations au principal de service pour accéder aux secrets dans un coffre de clés, vous pouvez utiliser la commande suivante :
az role assignment create \ --assignee <appId> \ --scope "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.KeyVault/vaults/<vault-name>" \ --role "Key Vault Secrets User"
Remarque
L’élément
--scope
d’une ressource doit être un ID de ressource complet, tel que /subscriptions/<guid>/resourceGroups/myResourceGroup ou /subscriptions/<guid>/resourceGroups/myResourceGroupVnet/providers/Microsoft.Network/virtualNetworks/myVnet.
Les sections suivantes détaillent les délégations courantes que vous serez peut-être amené à affecter à un principal de service.
Azure Container Registry
Si vous utilisez Azure Container Registry (ACR) comme magasin d’images conteneur, vous devez accorder des autorisations au principal de service pour que votre cluster AKS puisse lire et extraire des images. Nous vous recommandons d’utiliser la commande az aks create
ou az aks update
pour l’intégration à un registre et l’attribution du rôle approprié au principal de service. Pour connaître les étapes détaillées, consultez S’authentifier avec Azure Container Registry à partir d’Azure Kubernetes Service.
Mise en réseau
Vous pouvez utiliser un réseau avancé dans lequel le réseau virtuel et le sous-réseau, ou les adresses IP publiques, se trouvent dans un autre groupe de ressources. Attribuez le rôle intégré Contributeur de réseaux sur le sous-réseau dans le réseau virtuel. Vous pouvez également créer un rôle personnalisé avec des autorisations d’accès aux ressources réseau dans ce groupe de ressources. Pour plus d’informations, consultez Autorisations de service AKS.
Stockage
Si vous devez accéder aux ressources de disque existantes dans un autre groupe de ressources, attribuez l’un des ensembles d’autorisations de rôle suivants :
- Créez un rôle personnalisé et définissez les autorisations de rôle Microsoft.Compute/disks/read et Microsoft.Compute/disks/write, ou
- Attribuez le rôle intégré Contributeur de machines virtuelles sur le groupe de ressources.
Azure Container Instances
Si vous utilisez Virtual Kubelet pour intégrer à AKS et choisissez d’exécuter Azure Container Instances (ACI) dans un groupe de ressources distinct sur le cluster AKS, le principal du service du cluster AKS doit disposer de l’autorisation Contributeur sur le groupe de ressources ACI.
Autres considérations
Lorsque vous utilisez AKS et un principal de service Microsoft Entra, tenez compte des éléments suivants :
- Le principal de service de Kubernetes fait partie de la configuration du cluster, mais n’utilisez pas cette identité pour déployer le cluster.
- Par défaut, les informations d’identification du principal du service sont valides pendant un an. Vous pouvez à tout moment mettre à jour ou faire pivoter les informations d’identification du principal du service.
- Chaque principal de service est associé à une application Microsoft Entra. Vous pouvez associer le principal de service d’un cluster Kubernetes à tout nom d’application Microsoft Entra valide (par exemple : https://www.contoso.org/example). L’URL de l’application ne doit pas être un point de terminaison réel.
- Lorsque vous spécifiez l’ID client du principal de service, utilisez la valeur de
appId
. - Sur les machines virtuelles du nœud de l’agent du cluster Kubernetes, les informations d’identification du principal du service sont stockées dans le fichier
/etc/kubernetes/azure.json
. - Si vous supprimez un cluster AKS qui a été créé à l’aide de la commande
az aks create
, le principal de service créé n’est pas automatiquement supprimé.Pour supprimer le principal de service, demandez le servicePrincipalProfile.clientId de vos clusters, et supprimez-le à l’aide de la commande
az ad sp delete
. Remplacez les valeurs du paramètre-g
pour le nom du groupe de ressources et du paramètre-n
pour le nom du cluster :az ad sp delete --id $(az aks show \ --resource-group myResourceGroup \ --name myAKSCluster \ --query servicePrincipalProfile.clientId \ --output tsv)
Dépanner
Azure CLI met en cache les informations d’identification du principal de service des clusters AKS. Si ces informations d’identification expirent, vous pouvez rencontrer des erreurs pendant le déploiement du cluster AKS. Si vous exécutez la commande az aks create
et recevez un message d’erreur similaire au message suivant, cela peut indiquer un problème avec les informations d’identification du principal de service mises en cache :
Operation failed with status: 'Bad Request'.
Details: The credentials in ServicePrincipalProfile were invalid. Please see https://aka.ms/aks-sp-help for more details.
(Details: adal: Refresh request failed. Status Code = '401'.
Vous pouvez vérifier la date d’expiration des informations d’identification de votre principal de service à l’aide de la commande az ad app credential list
avec la requête "[].endDateTime"
.
az ad app credential list \
--id <app-id> \
--query "[].endDateTime" \
--output tsv
Le délai d’expiration par défaut des informations d’identification du principal du service est d’une année. Si vos informations d’identification datent de plus d’un an, vous pouvez réinitialiser les informations d’identification existantes ou créer un principal de service.
Résolution des problèmes généraux d’Azure CLI
Azure CLI peut s’exécuter dans plusieurs environnements de shell, mais avec de légères variations en termes de format. Si vous avez des résultats inattendus avec des commandes Azure CLI, consultez Comment utiliser Azure CLI avec succès.
Étapes suivantes
Pour plus d’informations sur les principaux de service Microsoft Entra, consultez Objets du principal de service et application.
Pour plus d’informations sur la mise à jour des informations d’identification, consultez Mettre à jour ou faire pivoter les informations d’identification d’un principal de service dans AKS.
Azure Kubernetes Service