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 orchestrateurs de conteneurs et d’applications peuvent effectuer une authentification sans assistance, ou « headless », à l’aide d’un principal de service Azure Active Directory (Azure AD)

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 CLI

Connect-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 CLI

Connect-AzContainerRegistry dans Azure PowerShell

Paramè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 CLI

Connect-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 CLI

Connect-AzContainerRegistry dans Azure PowerShell

Secret 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 Azure AD

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 Azure Active Directory 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 Azure AD 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 $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.

Activer l’IU de l’utilisateur administrateur dans le portail Azure

Étapes suivantes