Avant de pousser ou d'extraire des images Container Registry (ACR) avec Docker, containerd ou d'autres clients, configurez des identifiants d'accès pour l'authentification. Les identifiants incluent des mots de passe permanents et temporaires. Une fois authentifié, vous pouvez pousser et extraire des images de conteneur ou des charts Helm.
Description des identifiants
Après authentification, le système autorise les opérations selon la politique de contrôle d'accès RAM et définit leur périmètre.
Les identifiants d'accès sont indépendants de votre compte Alibaba Cloud et de son mot de passe. Le mot de passe permanent ACR n'est pas le mot de passe de connexion à la console de votre compte (compte Alibaba Cloud ou utilisateur Resource Access Management (RAM)). Il s'agit d'un mot de passe Registry dédié que vous définissez sur la page Access Credential de la console ACR. Il existe deux types d'identifiants :
Mot de passe permanent : ce mot de passe n'expire pas. En cas de divulgation, il reste valide jusqu'à sa réinitialisation. Pour une sécurité accrue, nous vous recommandons d'utiliser un mot de passe temporaire. Si vous perdez le mot de passe, réinitialisez-le sur la page des identifiants d'accès.
Mot de passe temporaire : ce mot de passe est valide pendant 1 heure. Si vous demandez le mot de passe via Security Token Service (STS), sa validité correspond à celle du jeton STS de la demande.
Les identifiants d'accès d'un compte Alibaba Cloud et ceux d'un utilisateur RAM sont indépendants. Un utilisateur RAM ne peut pas utiliser le mot de passe permanent défini par le compte Alibaba Cloud. Chaque utilisateur RAM doit se connecter à la console ACR avec son propre compte Alibaba Cloud et définir un mot de passe permanent dédié.
Lors de la connexion à ACR via Docker ou d'autres clients, la valeur du paramètre --username varie selon le type de compte :
Compte Alibaba Cloud : le nom d'utilisateur est le nom de connexion du compte Alibaba Cloud. Vous pouvez afficher la commande
docker logincomplète et le nom d'utilisateur correspondant sur la page Access Credentials de la console ACR. Ce nom d'utilisateur diffère de l'ID du compte Alibaba Cloud (chaîne numérique). L'utilisation de l'ID du compte comme nom d'utilisateur entraîne un échec d'authentification.Utilisateur RAM : le nom d'utilisateur est le nom de connexion de l'utilisateur RAM, au format
<RAM-user-login-name>@<default-domain-of-alibaba-cloud-account>, par exempleusername@China-1234567890.onaliyun.com.
Avant d'exécuter docker login, vérifiez le format du nom d'utilisateur sur la page Access Credentials de la console ACR afin d'éviter l'erreur unauthorized: authentication required due à un nom d'utilisateur incorrect.
Utiliser un mot de passe permanent
Container Registry (ACR) ne prend pas en charge la connexion basée sur les rôles. Connectez-vous en utilisant Utiliser un mot de passe temporaire.
Utilisateur RAM : pour définir un mot de passe permanent en tant qu'utilisateur RAM dans la console ACR, le compte Alibaba Cloud doit avoir préalablement activé l'autorisation Console Login pour cet utilisateur. Sans accès à la console, un utilisateur RAM ne peut ni se connecter à la console ACR ni configurer les identifiants d'accès.
Le compte Alibaba Cloud ne peut ni définir ni gérer le mot de passe permanent d'un utilisateur RAM. L'utilisateur RAM doit se connecter à la console ACR avec son propre compte et configurer ses identifiants d'accès.
Connectez-vous à la console Container Registry.
Dans la barre de navigation supérieure, sélectionnez une région.
Dans le volet de navigation de gauche, cliquez sur Instances.
Sur la page Instances, cliquez sur l'instance Enterprise Edition à gérer.
Dans le volet de navigation de gauche de la page de gestion de l'instance Enterprise, choisissez .
Sur la page Access Credentials, cliquez sur Set Password.
-
Dans la boîte de dialogue Set Password, saisissez le Password et Confirm Password. Puis, cliquez sur Confirm.
Le mot de passe doit comporter entre 8 et 32 caractères et contenir au moins deux des types suivants : lettres, symboles et chiffres. N'utilisez pas de mot de passe faible connu, tel que
P@ssw0rd. Le symbole$n'est pas pris en charge.Bouton Confirm grisé sans message d'erreur : si le bouton Confirm devient grisé après clic sans message d'erreur, le mot de passe ne respecte probablement pas les exigences de sécurité (par exemple, présence de caractères interdits tels que
$ou utilisation d'un mot de passe faible courant). Vérifiez et ajustez le mot de passe, puis réessayez.Échec de la connexion Docker dû aux caractères spéciaux : si le mot de passe contient des caractères spéciaux tels que
@, l'exécution dedocker logindans le terminal peut échouer en raison de l'échappement shell, entraînant une erreurunauthorized: authentication required. Dans ce cas, réinitialisez le mot de passe sur la page Access Credentials et utilisez un mot de passe sans caractères spéciaux.Les mots de passe historiques ne peuvent pas être récupérés : après la définition d'un mot de passe permanent, son historique n'est pas consultable. Si vous perdez le mot de passe, réinitialisez-le sur la page Access Credentials.
Étapes suivantes
Connectez-vous à l'instance Enterprise.
Configurez le contrôle d'accès pour un VPC ou Internet. Pour plus d'informations, consultez Configurer le contrôle d'accès Internet ou Configurer le contrôle d'accès VPC.
-
Dans votre terminal, saisissez l'identifiant d'accès pour vous connecter à l'instance Enterprise. Voici un exemple de commande :
docker login <Enterprise-Edition-instance-name>-registry.<region-of-the-Enterprise-Edition-instance>.cr.aliyuncs.com
Utiliser un mot de passe temporaire
Vous avez installé Alibaba Cloud CLI et configuré les identifiants.
Vous avez installé la commande jq.
Vous avez créé un utilisateur RAM.
Vous pouvez exécuter directement l'opération GetAuthorizationToken dans OpenAPI Explorer pour obtenir le nom d'utilisateur et le mot de passe temporaires de l'instance cible.
Utilisez une paire AccessKey existante ou consultez Créer une AccessKey pour en créer une nouvelle. Notez l'AccessKey ID et l'AccessKey secret.
-
Utilisez le contenu suivant pour utiliser l'éditeur de script et gérer les autorisations des utilisateurs RAM.
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "cr:GetAuthorizationToken", "cr:PullRepository", "cr:PushRepository" ], "Resource": "*" } ] } -
Exécutez les commandes suivantes pour obtenir le mot de passe temporaire.
ACR_ENDPOINT="<acr service endpoint>"où<acr service endpoint>correspond aux Endpoints de la région où réside l'instance ACR.export ALIYUN_AK="<aliyun access key>" # The AccessKey ID from Step 1. export ALIYUN_SK="<aliyun access key secret>" # The AccessKey Secret from Step 1. export ACR_INSTANCE_ID="<id of acr instance>" # The target ACR instance ID. export ACR_ENDPOINT="<acr service endpoint>"aliyun cr GetAuthorizationToken --endpoint $ACR_ENDPOINT --InstanceId $ACR_INSTANCE_ID --access-key-id $ALIYUN_AK --access-key-secret $ALIYUN_SK | jq -r '.AuthorizationToken'