Authentification avec un registre de conteneurs Azure
Plusieurs méthodes permettent de s’authentifier avec un registre de conteneurs Azure, chacune d’elles étant applicable à un ou plusieurs scénarios d’usage du registre.
Les méthodes recommandées sont les suivantes :
- S’authentifier directement auprès d’un registre via une connexion individuelle
- Les applications et les orchestrateurs de conteneurs peuvent effectuer une authentification sans assistance, ou « headless », à l’aide d’un principal de service Microsoft Entra
Si vous utilisez un registre de conteneurs avec Azure Kubernetes Service (AKS) ou un autre cluster Kubernetes, consultez Scénarios pour vous authentifier auprès de Azure Container Registry à partir de Kubernetes.
Options d’authentification
Le tableau suivant liste les méthodes d’authentification disponibles et les scénarios typiques. Pour plus d’informations, suivez les liens.
Méthode | Comment s’authentifier | Scénarios | Contrôle d’accès en fonction du rôle Azure (Azure RBAC) | Limites |
---|---|---|---|---|
Identité AD individuelle | az acr login dans Azure CLIConnect-AzContainerRegistry dans Azure PowerShell |
Push/pull interactif par des développeurs ou des testeurs | Oui | Le jeton AD doit être renouvelé toutes les 3 heures |
Principal de service AD | docker login az acr login dans Azure CLIConnect-AzContainerRegistry dans Azure PowerShellParamètres de connexion au registre dans les API ou les outils Secret d’extraction Kubernetes |
Push sans assistance à partir d’un pipeline CI/CD Pull sans assistance vers Azure ou des services externes |
Oui | Le mot de passe SP par défaut est valable 1 an |
Identité managée pour les ressources Azure | docker login az acr login dans Azure CLIConnect-AzContainerRegistry dans Azure PowerShell |
Push sans assistance à partir d’un pipeline CI/CD Azure Pull sans assistance vers les services Azure |
Oui | À utiliser uniquement à partir de certains services Azure prenant en charge les identités managées pour les ressources Azure |
Identité gérée du cluster AKS | Attacher le registre quand un cluster AKS est créé ou mis à jour | Extraction sans assistance du cluster AKS dans le même abonnement ou dans un autre abonnement | Non, accès pull uniquement | Disponible uniquement avec le cluster AKS Ne peut pas être utilisé pour l’authentification entre locataires |
Principal du service de cluster AKS | Activer quand un cluster AKS est créé ou mis à jour | Extraction sans assistance du cluster AKS à partir du registre d’un autre locataire Active Directory | Non, accès pull uniquement | Disponible uniquement avec le cluster AKS |
Utilisateur administrateur | docker login |
Push/pull interactif par un développeur ou un testeur individuel Déploiement du portail de l’image à partir du registre vers Azure App Service ou Azure Container Instances |
Non, toujours un accès pull et push | Compte unique par registre, non recommandé pour plusieurs utilisateurs |
Jeton d’accès délimité au dépôt | docker login az acr login dans Azure CLIConnect-AzContainerRegistry dans Azure PowerShellSecret d’extraction Kubernetes |
Push/pull interactif dans le dépôt par un développeur ou un testeur individuel Extraction sans assistance vers le dépôt par un système individuel ou un périphérique externe |
Oui | Pas actuellement intégré à l’identité AD |
Connexion individuelle avec l’ID Microsoft Entra
Si vous utilisez directement votre registre, par exemple si vous extrayez des images et en envoyez depuis une station de travail de développement vers un registre que vous avez créé, authentifiez-vous à l’aide de votre identité Azure individuelle. Connectez-vous à Azure CLI avec az login, puis exécutez la commande az acr login :
az login
az acr login --name <acrName>
Si vous vous connectez avec az acr login
, l’interface CLI utilise le jeton créé lorsque vous avez exécuté az login
pour authentifier en toute transparence votre session avec votre registre. Pour terminer le flux d’authentification, le client Docker doit être installé et en cours d’exécution dans votre environnement. az acr login
utilise le client Docker pour définir un jeton Microsoft Entra dans le fichier docker.config
. Lorsque vous vous connectez à l'aide de cette méthode, vos informations d'identification sont mises en cache, et les commandes docker
suivantes de votre session ne nécessitent ni nom d'utilisateur ni mot de passe.
Conseil
Utilisez également az acr login
pour authentifier une identité individuelle quand vous souhaitez envoyer (push) ou tirer (pull) des artefacts autres que des images Docker dans votre registre, par exemple des artefacts OCI.
Pour l’accès au registre, le jeton utilisé par az acr login
est valable trois heures. Nous vous recommandons donc de toujours vous connecter au registre avant d’exécuter une commande docker
. Si votre jeton arrive à expiration, vous pouvez l’actualiser en utilisant de nouveau la commande az acr login
pour la réauthentification.
L’utilisation de az acr login
avec des identités Azure fournit un contrôle d’accès en fonction du rôle (Azure RBAC). Pour certains scénarios, vous souhaiterez peut-être vous connecter à un registre avec votre propre identité dans l’ID Microsoft Entra ou configurer d’autres utilisateurs Azure avec des autorisations et des rôles Azure spécifiques. Pour les scénarios entre les services ou pour gérer les besoins d’un groupe de travail ou d’un workflow de développement où vous ne souhaitez pas gérer l’accès individuel, vous pouvez également vous connecter avec une identité managée pour les ressources Azure.
az acr login with --expose-token
Dans certains cas, vous devrez vous authentifier avec az acr login
lorsque le démon Docker n’est pas en cours d’exécution dans votre environnement. Par exemple, vous devrez peut-être exécuter az acr login
dans un script dans Azure Cloud Shell, qui fournit l’interface de commande Docker, mais n’exécute pas le démon Docker.
Pour ce scénario, exécutez d’abord az acr login
avec le paramètre --expose-token
. Cette option expose un jeton d’accès au lieu de se connecter par le biais de l’interface de commande Docker.
az acr login --name <acrName> --expose-token
La sortie affiche le jeton d’accès, abrégé ici :
{
"accessToken": "eyJhbGciOiJSUzI1NiIs[...]24V7wA",
"loginServer": "myregistry.azurecr.io"
}
Pour l’authentification du registre, nous vous recommandons de stocker les informations d’identification du jeton dans un emplacement sûr et de suivre les pratiques recommandées pour gérer les informations d’identification de connexion Docker. Par exemple, stockez la valeur de jeton dans une variable d’environnement :
TOKEN=$(az acr login --name <acrName> --expose-token --output tsv --query accessToken)
Ensuite, exécutez docker login
, en transmettant 00000000-0000-0000-0000-000000000000
comme nom d’utilisateur et en utilisant le jeton d’accès comme mot de passe :
docker login myregistry.azurecr.io --username 00000000-0000-0000-0000-000000000000 --password-stdin <<< $TOKEN
De même, vous pouvez utiliser le jeton retourné par az acr login
avec la commande helm registry login
pour l’authentification auprès du Registre :
echo $TOKEN | helm registry login myregistry.azurecr.io \
--username 00000000-0000-0000-0000-000000000000 \
--password-stdin
Principal du service
Si vous affectez un principal du service à votre registre, votre application ou service peut l’utiliser pour une authentification headless (administrée à distance). Les principaux du service autorisent le contrôle d’accès en fonction du rôle (Azure RBAC) à un registre, et vous pouvez affecter plusieurs principaux du service à un registre. Plusieurs principaux du service vous permettent de définir différents accès pour plusieurs applications.
Le jeton d’authentification ACR est créé lors de la connexion au service ACR et est actualisé lors des opérations suivantes. La durée de vie de ce jeton est de 3 heures.
Les rôles disponibles pour un registre de conteneurs sont les suivants :
AcrPull : extraction
AcrPush: extraction (pull) et envoi (push)
Propriétaire : extraction, envoi et attribution de rôles à d’autres utilisateurs
Pour obtenir la liste complète des rôles, consultez Autorisations et rôles Azure Container Registry.
Pour que les scripts CLI créent un principal de service pour l’authentification avec un registre de conteneurs Azure, et pour obtenir une aide supplémentaire, consultez Authentification Azure Container Registry avec des principaux de service.
Compte d’administrateur
Chaque registre de conteneurs inclut un compte d’utilisateur administrateur, qui est désactivé par défaut. Vous pouvez activer le compte d’utilisateur administrateur et gérer ses informations d’identification à partir du portail Azure, ou par le biais de l’interface Azure CLI, d’Azure PowerShell ou d’autres outils Azure. Le compte administrateur dispose des autorisations complètes sur le registre.
Le compte administrateur est actuellement requis pour certains scénarios de déploiement d’une image à partir d’un registre de conteneurs vers certains services Azure. Par exemple, le compte d’administrateur est nécessaire lorsque vous déployez une image conteneur dans le portail Azure à partir d’un registre directement vers Azure Container Instances ou Azure Web Apps pour conteneurs.
Important
Le compte d’administrateur est conçu pour permettre à un seul utilisateur d’accéder au registre, principalement à des fins de test. Nous ne recommandons pas de partager les informations d’identification du compte d’administrateur avec plusieurs utilisateurs. Tous les utilisateurs qui s’authentifient avec le compte d’administrateur apparaissent sous la forme d’un seul utilisateur avec un accès par envoi et par extraction au registre. La modification ou la désactivation de ce compte désactive l’accès au registre pour tous les utilisateurs qui utilisent ces informations d’identification. Une identité individuelle est recommandée pour les utilisateurs et principaux du service pour les scénarios sans périphérique de contrôle.
Le compte d’administrateur reçoit deux mots de passe qui peuvent être régénérés. Les nouveaux mots de passe créés pour les comptes d’administrateur sont immédiatement disponibles. Il faut compter 60 secondes pour que les mots de passe des comptes d’administrateur soient répliqués et deviennent disponibles suite à leur régénération. Deux mots de passe vous permettent de maintenir la connexion au registre en utilisant un mot de passe tandis que vous régénérez l’autre. Si le compte d'administrateur est activé, vous pouvez transmettre le nom d'utilisateur et l'un ou l'autre des mots de passe à la commande docker login
lorsque vous y êtes invité pour une authentification de base auprès du registre. Par exemple :
docker login myregistry.azurecr.io
Pour connaître les pratiques recommandées de gestion des informations d’identification pour la connexion, consultez la référence de la commande docker login.
Pour activer l’utilisateur administrateur pour un registre existant, vous pouvez utiliser le paramètre --admin-enabled
de la commande az acr update dans Azure CLI :
az acr update -n <acrName> --admin-enabled true
Pour activer l’utilisateur administrateur dans le portail Azure, accédez au registre, sélectionnez Clés d’accès sous PARAMÈTRES, puis Activer sous Utilisateur administrateur.
Connectez-vous à l’aide d’un autre outil de conteneur au lieu de Docker
Dans certains scénarios, vous devez utiliser d’autres outils de conteneur comme podman
au lieu de l’outil de conteneur commun docker
. Par exemple : Docker n’est plus disponible dans RHEL 8 et 9. Vous devez donc changer d’outil de conteneur.
L’outil conteneur par défaut est défini sur docker
pour les commandes az acr login
. Si vous ne définissez pas l’outil conteneur par défaut et que la commande docker
est manquante dans votre environnement, l’erreur suivante s’affiche :
az acr login --name <acrName>
2024-03-29 07:30:10.014426 An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.
Pour modifier l’outil conteneur par défaut utilisé par la commande az acr login
, vous pouvez définir la variable d’environnement DOCKER_COMMAND
. Par exemple :
DOCKER_COMMAND=podman \
az acr login --name <acrName>
Remarque
Vous devez installer et configurer la version 2.59.0 ou ultérieure de la CLI Azure pour utiliser cette fonctionnalité. Exécutez az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.