Résoudre les problèmes d’authentification Azure Container Registry
Azure Container Registry (ACR) est un service de registre privé. Pour effectuer des opérations telles que l’envoi (push) ou l’extraction (à l’exception de l’opération de tirage anonyme), vous devez d’abord vous authentifier auprès de l’ACR.
Cet article vous aide à résoudre les problèmes d’authentification ACR et fournit des solutions aux erreurs les plus courantes qui se produisent lorsque vous extrayez des images à partir d’un registre de conteneurs.
Résolution initiale des problèmes
Identifiez l’option d’authentification que vous utilisez. Une fois que vous en avez choisi un, reproduisez le problème d’authentification pour obtenir l’erreur.
Commencez à résoudre les problèmes en vérifiant l’intégrité de votre registre de conteneurs Azure.
Pour vérifier l’intégrité du registre de conteneurs, exécutez la commande suivante :
az acr check-health --name <acr-name> --ignore-errors --yes
Si un problème est détecté, la sortie de la commande fournit un code d’erreur et une description. Pour plus d’informations sur le code d’erreur et les solutions possibles, consultez la référence des erreurs de vérification d’intégrité.
Note
Si vous recevez des erreurs liées à Helm ou à l’avocat, cela ne signifie pas que vous rencontrez un problème affectant votre registre de conteneurs ou votre appareil. Elle indique uniquement que Helm ou le notarié n’est pas installé ou que l’interface de ligne de commande Azure n’est pas compatible avec la version actuellement installée de Helm ou d’un notarié.
Erreur 1 : « DOCKER_COMMAND_ERROR Vérifiez si le client Docker est installé et en cours d’exécution »
Voici un exemple des détails de l’erreur :
You may want to use 'az acr login -n <acr-name> --expose-token' to get an access token, which does not require Docker to be installed.
<date and time> An error occurred: DOCKER_COMMAND_ERROR
Please verify if Docker client is installed and running.
Solution 1 : Vérifier que Docker est installé
La az acr login
commande appelle la docker login
commande et utilise le jeton d’accès Microsoft Entra pour s’authentifier auprès de l’ACR. Le client Docker et le démon Docker doivent être installés sur l’ordinateur sur lequel vous exécutez la commande. Pour installer Docker, consultez Installer le moteur Docker.
Solution 2 : Utilisez la commande « az acr login » avec le paramètre « --expose-token »
Lorsque le démon Docker ne s’exécute pas dans votre environnement, si vous devez vous authentifier auprès d’ACR, utilisez la commande az acr login avec le paramètre --expose-token. Cette commande est utile lorsque vous devez exécuter des scripts qui ne nécessitent pas le démon Docker, mais uniquement l’interface CLI Docker (par exemple, lors de l’utilisation d’Azure Cloud Shell).
Erreur 2 : « Cette commande nécessite l’exécution du démon Docker, qui n’est pas pris en charge dans Azure Cloud Shell »
Voici un exemple des détails de l’erreur :
This command requires running the docker daemon, which is not supported in Azure Cloud Shell. You may want to use 'az acr login -n <acr-name> --expose-token' to get an access token, which does not require Docker to be installed.
Solution 1 : Exécutez la commande « az acr login -n <acr-name> » dans un autre environnement
La az acr login -n <acr-name>
commande nécessite l’exécution du client Docker et du démon Docker. Azure Cloud Shell fournit uniquement le client Docker. Pour résoudre cette erreur, exécutez la az acr login -n <acr-name>
commande dans un environnement où le démon Docker est installé.
Solution 2 : Utilisez la commande « az acr login » avec le paramètre « --expose-token »
La az acr login -n <acr-name>
commande nécessite l’exécution du client Docker et du démon Docker. Azure Cloud Shell fournit uniquement le client Docker. Toutefois, la az acr login
commande avec le --expose-token
paramètre fonctionne pour les environnements sans démon Docker, comme Azure Cloud Shell.
Erreur 3 : « Non autorisé : authentification requise »
Voici un exemple des détails de l’erreur :
Error response from daemon: Get "https://<acr-name>.azurecr.io/v2/": unauthorized: {"errors":[{"code":"UNAUTHORIZED","message":"authentication required, visit https://aka.ms/acr/authorization for more information."}]}
L’erreur indique que l’authentification a échoué lors de l’accès à l’ACR. Cette erreur peut se produire lors de l’exécution de la az acr login
commande docker login
avec un nom d’utilisateur et/ou un mot de passe incorrect, ou des informations d’identification expirées (lors de l’utilisation d’un principal de service, d’un jeton avec une carte d’étendue ou d’un utilisateur administrateur).
Solution : utiliser le nom d’utilisateur et le mot de passe corrects/valides
Si vous utilisez un utilisateur administrateur pour vous authentifier, vérifiez les informations d’identification dans le panneau Clés d’accès et s’il s’agit des informations d’identification que vous avez utilisées dans la ou
az acr login
ladocker login
commande.Note
Un mot de passe utilisé avant d’avoir été régénéré.
Si vous utilisez un jeton associé à un mappage d’étendue, vérifiez les informations d’identification utilisées. Une fois que vous avez généré un mot de passe pour le jeton, vous devez le récupérer et stocker les informations d’identification en toute sécurité, car le mot de passe ne sera plus affiché après avoir fermé l’écran. Consultez le message dans la capture d’écran suivante :
Si vous n’êtes pas sûr du mot de passe que vous avez utilisé, envisagez de le régénérer.
Si vous utilisez un jeton associé à un mappage d’étendue, une date d’expiration peut être définie pour le mot de passe. Pour afficher la date d’expiration, vous pouvez exécuter les commandes Azure CLI décrites dans Afficher les détails du jeton, ou ouvrir le jeton dans le Portail Azure et vérifier la date d’expiration conformément à la capture d’écran suivante :
Si vous utilisez un principal de service, vérifiez qu’il dispose des autorisations spécifiques pour vous authentifier auprès de l’ACR. Pour rechercher les autorisations spécifiques et les rôles intégrés disponibles, consultez les rôles et autorisations Azure Container Registry.
Si vous utilisez un principal de service, vérifiez les informations d’identification utilisées. Une fois que vous avez généré un secret, vous devez le récupérer et stocker les informations d’identification en toute sécurité, car le mot de passe ne s’affiche plus après avoir fermé l’écran. Consultez le message dans la capture d’écran suivante :
Si vous n’êtes pas sûr de la valeur secrète que vous avez utilisée, envisagez de créer un secret.
Si vous utilisez un principal de service, vérifiez que le secret n’a pas expiré.
Vous pouvez vérifier la validité du secret en exécutant la commande az ad app credential list :
az ad app credential list --id "$SP_ID" --query "[].endDateTime" -o tsv
Vous pouvez également vérifier la validité du secret en vérifiant la colonne Expire dans le Portail Azure :
Si le secret a expiré, vous pouvez envisager de créer un nouveau secret.
Erreur 4 : « Impossible d’obtenir les informations d’identification de l’utilisateur administrateur »
Voici un exemple des détails de l’erreur :
Unable to get AAD authorization tokens with message: <date> <time> An error occurred: CONNECTIVITY_REFRESH_TOKEN_ERROR
Access to registry '<acr-name>.azurecr.io' was denied. Response code: 401. Please try running 'az login' again to refresh permissions.
Unable to get admin user credentials with message: The resource with name '<acr-name>' and type 'Microsoft.ContainerRegistry/registries' could not be found in subscription '<subscription-name> (<subscription-id>)'.
Solution : vérifiez que l’identité utilisée dispose des autorisations spécifiques
Vérifiez que l’identité (par exemple, un utilisateur ou une identité managée) utilisée pour s’authentifier dispose des autorisations spécifiques. Pour rechercher les autorisations spécifiques et les rôles intégrés disponibles, consultez les rôles et autorisations Azure Container Registry.
Erreur 5 : « Le client avec adresse> IP <n’est pas autorisé à accéder »
Voici un exemple des détails de l’erreur :
Unable to get AAD authorization tokens with message: <date> <time> An error occurred: CONNECTIVITY_REFRESH_TOKEN_ERROR
Access to registry '<acr-name>.azurecr.io' was denied. Response code: 403. Please try running 'az login' again to refresh permissions.
Error response from daemon: Get "https://<acr-name>.azurecr.io/v2/": denied: {"errors":[{"code":"DENIED","message":"client with IP \u0027<ip-address>\u0027 is not allowed access. Refer https://aka.ms/acr/firewall to grant access."}]}
Solution : vérifiez que l’appareil que vous essayez d’authentifier dispose d’une connectivité avec l’ACR
ACR dispose d’un pare-feu intégré, qui est un mécanisme permettant de restreindre l’accès public. Il peut autoriser l’accès complet, autoriser l’accès uniquement à des réseaux spécifiques ou désactiver complètement l’accès public. Toutefois, une connectivité appropriée est requise pour l’authentification réussie. Vérifiez que votre adresse IP est autorisée à accéder au Registre et à vous y connecter. Pour plus d’informations sur la configuration de l’accès public, consultez Configurer des règles de réseau IP public.
Vous pouvez également envisager d’utiliser Azure Private Link pour vous connecter en privé au registre de conteneurs Azure.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.