Ce document explique comment configurer l'authentification auprès des dépôts en amont de Docker Hub pour les dépôts distants Artifact Registry.
Pour empêcher l'utilisation d'un quota Docker Hub non authentifié, nous vous recommandons de vous authentifier auprès de Docker Hub lors de l'utilisation de dépôts distants. 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 vous authentifier auprès de Docker Hub.
Dans ce document, nous partons du principe 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 page Présentation des dépôts distants.
Avant de commencer
- Connectez-vous à votre compte Google.
Si vous n'en possédez pas déjà un, vous devez en créer un.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Activer les API Artifact Registry, Secret Manager.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Activer les API Artifact Registry, Secret Manager.
- Installez Google Cloud CLI.
-
Pour initialiser gcloudCLI, exécutez la commande suivante :
gcloud init
Rôles requis
Afin d'obtenir les autorisations dont vous avez besoin pour configurer l'authentification auprès de Docker Hub pour les dépôts distants, demandez à votre administrateur de vous attribuer 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 la section Gérer les accès.
Vous pouvez également obtenir les autorisations requises via 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 doté d'autorisations en lecture seule.
Copiez le jeton d'accès.
Enregistrez le jeton d'accès dans un fichier texte en local ou dans 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 est un compte de service géré par Google qui agit pour le compte d'Artifact Registry lors de l'interaction avec les services Google Cloud. Pour permettre à l'agent de service d'utiliser les secrets stockés dans Secret Manager, vous devez lui accorder l'autorisation d'afficher la version de votre secret.
L'identifiant de l'agent de service est le suivant:
service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com
PROJECT-NUMBER est le numéro du projet Google Cloud dans lequel Artifact Registry est exécuté.
Pour attribuer le rôle Accesseur de secrets au Secret Manager à l'agent de service Artifact Registry:
Console
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
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 savoir comment accorder ou révoquer l'accès aux secrets, consultez la section 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 de la console Google Cloud.
Dans la liste des dépôts, sélectionnez le dépôt et 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 et votre code secret Docker Hub 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/PROJECT_ID/secrets/SECRET_ID/versions/SECRET_VERSION
Remplacez les éléments suivants :
REPOSITORY
par le nom de votre dépôt distant Artifact Registry.PROJECT_ID
par l'ID de votre projet Google CloudLOCATION
par l'emplacement régional ou multirégional du dépôt. Vous pouvez ignorer cette option si vous définissez une valeur par défaut. Pour afficher la liste des emplacements acceptés, exécutez la commandegcloud artifacts locations list
.USERNAME
par votre nom d'utilisateur Docker Hub.SECRET_ID
par le nom que vous avez donné à votre secret.SECRET_VERSION
par la version de secret dans laquelle vous avez enregistré votre jeton d'accès Docker Hub.
Étapes suivantes
- En savoir plus sur les dépôts Artifact Registry.
- Extraire des images avec Docker
- Accédez au quickstart du dépôt distant Docker Hub.