Ce document explique comment configurer l'authentification auprès des dépôts Docker Hub en amont pour les dépôts distants Artifact Registry.
Nous vous recommandons de vous authentifier auprès de Docker Hub, même si vous n'utilisez que des images publiques, car cela augmentera votre limite de débit de téléchargement. Pour en savoir plus sur les limites de débit de téléchargement de Docker Hub, consultez la page Limite de débit de Docker Hub. Les dépôts distants vous permettent d'ajouter votre nom d'utilisateur Docker Hub et un jeton d'accès personnel enregistré en tant que secret pour l'authentification auprès de Docker Hub.
Ce document suppose que vous avez déjà créé un dépôt distant Docker Artifact Registry et un compte Docker Hub.
Pour en savoir plus sur les dépôts distants, consultez la présentation des dépôts distants.
Rôles requis
Pour obtenir les autorisations nécessaires afin de configurer l'authentification auprès de Docker Hub pour les dépôts distants, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet :
- Administrateur Artifact Registry (
roles/artifactregistry.admin) - Administrateur Secret Manager (
roles/secretmanager.admin)
Pour en savoir plus sur l'attribution de rôles, consultez Gérer l'accès aux projets, aux dossiers et aux organisations.
Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.
Créer un jeton d'accès personnel Docker Hub
- Connectez-vous à Docker Hub.
- Créez un jeton d'accès personnel avec des autorisations en lecture seule.
Copiez le jeton d'accès.
Enregistrez le jeton d'accès dans un fichier texte dans votre environnement local ou Cloud Shell.
Enregistrer votre jeton d'accès personnel dans une version secrète
- Créez un secret dans Secret Manager.
- Enregistrez votre jeton d'accès personnel Docker Hub en tant que version secrète.
Accorder au compte de service Artifact Registry l'accès à votre secret
L'agent de service Artifact Registry agit au nom d'Artifact Registry lorsqu'il interagit avec Google Cloud des services. Pour autoriser l'agent de service à utiliser les secrets stockés dans Secret Manager, vous devez lui accorder l'autorisation d'afficher votre version secrète.
L'identifiant de l'agent de service est le suivant :
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER correspond au numéro du projet dans lequel Artifact Registry est en cours d'exécution. Google Cloud
Pour accorder à l'agent de service Artifact Registry le rôle Accesseur de secrets Secret Manager :
Console
-
Accédez à la page Secret Manager dans la Google Cloud console.
-
Sur la page Secret Manager, cochez la case située à côté du nom du secret.
-
S'il n'est pas déjà ouvert, cliquez sur Afficher le panneau d'informations pour ouvrir celui-ci.
-
Dans le panneau d'informations, cliquez sur Ajouter un compte principal.
-
Dans la zone de texte Nouveaux comptes principaux, saisissez la ou les adresses e-mail des membres à ajouter.
-
Dans la liste déroulante Sélectionner un rôle , sélectionnez Gestionnaire de secrets , puis Accesseur de secrets Secret Manager.
gcloud
$ gcloud secrets add-iam-policy-binding secret-id \
--member="member" \
--role="roles/secretmanager.secretAccessor"
Où member correspond à un membre IAM, tel qu'un utilisateur, un groupe ou un compte de service.
C#
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Go
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Java
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Node.js
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
PHP
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Python
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
Ruby
Pour vous authentifier auprès d'Artifact Registry, configurez les identifiants par défaut de l'application. Pour en savoir plus, consultez Configurer l'authentification pour un environnement de développement local.
API
Remarque : Contrairement aux autres exemples, ceci remplace l'ensemble de la stratégie IAM.
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:setIamPolicy" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"policy\": {\"bindings\": [{\"members\": [\"member\"], \"role\": \"roles/secretmanager.secretAccessor\"}]}}"
Pour en savoir plus sur l'octroi ou la révocation de l'accès aux secrets, consultez Gérer l'accès aux secrets.
Ajouter des identifiants Docker Hub à votre dépôt distant
Pour mettre à jour votre dépôt distant avec vos identifiants Docker Hub :
Console
Ouvrez la page Dépôts dans la Google Cloud console.
Dans la liste des dépôts, sélectionnez le dépôt, puis cliquez sur Modifier le dépôt.
Dans la section Mode d'authentification du dépôt distant, mettez à jour ou ajoutez votre nom d'utilisateur Docker Hub et la version secrète contenant votre jeton d'accès Docker Hub.
Gcloud CLI
Pour mettre à jour votre dépôt distant avec vos identifiants Docker Hub, exécutez la commande suivante :
gcloud artifacts repositories update REPOSITORY \
--project=PROJECT_ID \
--location=LOCATION \
--remote-username=USERNAME \
--remote-password-secret-version=projects/SECRET_PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Remplacez les éléments suivants :
REPOSITORYpar le nom de votre dépôt distant Artifact Registry ;PROJECT_IDpar l'ID de votre Google Cloud projet ;LOCATIONpar l'emplacement régional ou multirégional location du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Pour afficher la liste des emplacements compatibles, exécutez la commandegcloud artifacts locations list.USERNAMEpar votre nom d'utilisateur Docker Hub ;SECRET_PROJECT_IDpar l'ID du Google Cloud projet dans lequel vous avez créé votre secret ;SECRET_IDpar le nom que vous avez donné à votre secret ;SECRET_VERSIONpar la version secrète dans laquelle vous avez enregistré votre jeton d'accès Docker Hub.
Vos identifiants seront utilisés la prochaine fois que le dépôt distant enverra une requête pour un artefact à partir de la source en amont.
Étape suivante
- En savoir plus sur les dépôts Artifact Registry repositories.
- Extraire des images avec Docker.
- Consulter le guide de démarrage rapide du dépôt distant Docker Hub quickstart.