Artifact Registry est un service universel de gestion de packages compatible avec les conteneurs et d'autres formats. Découvrez comment effectuer une transition depuis Container Registry pour plus de flexibilité et de contrôle sur vos artefacts.

Méthodes d'authentification

Cette page explique comment configurer l'authentification d'un client tiers à l'aide de Container Registry.

Les services Google Cloud qui sont intégrés à Container Registry sont préconfigurés avec des autorisations permettant d'accéder aux dépôts d'un même projet. Vous n'avez pas besoin de configurer l'authentification pour ces services, mais vous devez vérifier que les autorisations sont correctement configurées.

Avant de commencer

  1. Vérifiez que vous avez activé l'API Container Registry et installé le SDK Cloud. Pour obtenir des instructions, consultez la page Activer et désactiver le service.
  2. Vérifiez que le compte que vous utilisez pour l'authentification dispose des autorisations permettant d'accéder à Container Registry. Nous vous recommandons d'utiliser un compte de service plutôt qu'un compte utilisateur.

  3. Installez Docker si ce n'est pas encore fait. Docker est inclus dans Cloud Shell.

  4. Docker nécessite un accès privilégié pour interagir avec les registres. Sous Linux ou Windows, ajoutez l'utilisateur que vous permet d'exécuter des commandes Docker dans le groupe de sécurité Docker. Cette étape n'est pas requise sous macOS, car Docker Desktop s'exécute sur une machine virtuelle en tant qu'utilisateur racine.

    Linux

    Le groupe de sécurité Docker s'appelle docker. Pour ajouter votre nom d'utilisateur, exécutez la commande suivante :

    sudo usermod -a -G docker ${USER}
    

    Windows

    Le groupe de sécurité Docker s'appelle docker-users. Pour ajouter un utilisateur à partir de l'invite de commande administrateur, exécutez la commande suivante :

    net localgroup docker-users DOMAIN\USERNAME /add
    

    • DOMAIN est votre domaine Windows.
    • USERNAME est votre nom d'utilisateur.

    Déconnectez-vous et reconnectez-vous pour que les modifications apportées à la liste des membres du groupe soient appliquées. Si vous utilisez une machine virtuelle, vous devrez peut-être la redémarrer pour que ces modifications prennent effet.

Méthodes d'authentification

Vous devez configurer les clients tiers ayant besoin d'accéder à Container Registry.

Les méthodes d'authentification suivantes sont disponibles :

Assistant d'identification gcloud (recommandé)
Configurez vos identifiants Container Registry à utiliser avec Docker directement dans gcloud. Cette méthode fournit un accès sécurisé et de courte durée aux ressources de votre projet. Utilisez-la dans la mesure du possible. Cette option n'est compatible qu'avec les versions Docker 18.03 ou ultérieures.
Assistant d'identification autonome
Cette option permet principalement de configurer vos identifiants à utiliser avec Docker en l'absence du SDK Cloud. Cette option n'est compatible qu'avec les versions Docker 18.03 ou ultérieures.
Jeton d'accès
Les identifiants par défaut de l'application fournissent des jetons d'accès de courte durée qu'un compte de service utilise pour accéder à vos ressources Google Cloud. La méthode la plus sûre consiste à utiliser gcloud comme assistant d'identification.
Fichier de clé JSON

Une paire de clés gérée par l'utilisateur que vous pouvez utiliser comme identifiant pour un compte de service. Les identifiants étant de longue durée, il s'agit de l'option la moins sécurisée de toutes les méthodes d'authentification disponibles.

Dans la mesure du possible, utilisez un jeton d'accès ou une autre méthode d'authentification disponible pour réduire le risque d'accès non autorisé à vos artefacts. Si vous devez utiliser une clé de compte de service, assurez-vous de suivre les bonnes pratiques de gestion des identifiants.

Pour certains outils ou flux de travail, l'assistant d'identification gcloud n'est pas le plus adapté. Si vous utilisez l'une des autres options, assurez-vous de bien comprendre les implications en termes de sécurité.

Assistant d'identification gcloud

Nous vous recommandons fortement d'utiliser cette méthode dans la mesure du possible. Elle fournit un accès sécurisé et de courte durée aux ressources de votre projet.

Utilisez l'outil gcloud pour configurer l'authentification dans Cloud Shell ou dans tout environnement dans lequel le SDK Cloud est installé. Cloud Shell inclut la version actuelle de Docker.

Pour configurer l'authentification :

  1. Connectez-vous à gcloud en tant que l'utilisateur qui exécutera les commandes Docker.

    • Pour configurer l'authentification avec des identifiants utilisateur, exécutez la commande suivante :

      gcloud auth login
      
    • Pour configurer l'authentification avec des identifiants de compte de service, exécutez la commande suivante :

      gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
      

      Où :

      • ACCOUNT est le nom du compte de service au format [USERNAME]@[PROJECT-ID].iam.gserviceaccount.com. Vous pouvez afficher les comptes de service existants sur la page Comptes de service de Cloud Console ou avec la commande gcloud iam service-accounts list.
      • KEY-FILE est le fichier de clé du compte de service. Pour en savoir plus sur la création d'une clé, consultez la documentation IAM (Identity and Access Management).
  2. Configurez Docker à l'aide de la commande suivante :

    gcloud auth configure-docker
    

    Vos identifiants sont enregistrés dans votre répertoire d'accueil utilisateur.

    • Linux : $HOME/.docker/config.json
    • Windows : %USERPROFILE%/.docker/config.json

Docker est à présent configuré pour s'authentifier avec Container Registry. Pour stocker et extraire des images, assurez-vous que les autorisations sont correctement configurées.

Assistant d'identification autonome

L'assistant d'identification Docker autonome configure Docker pour s'authentifier auprès de Container Registry sur un système sur lequel le SDK Cloud n'est pas disponible.

L'assistant d'identification récupère vos identifiants Container Registry, soit automatiquement, soit à partir d'un emplacement spécifié à l'aide de son option --token-source, puis les écrit dans le fichier de configuration de Docker. Ainsi, vous pouvez utiliser l'outil de ligne de commande de Docker (docker) pour interagir directement avec Container Registry.

Pour configurer l'authentification :

  1. Connectez-vous à l'ordinateur en tant que l'utilisateur qui exécutera les commandes Docker.

  2. Téléchargez docker-credential-gcr à partir des versions GitHub :

    Vous pouvez éventuellement utiliser l'utilitaire de ligne de commande curl. Exemple :

    VERSION=2.0.0
    OS=linux  # or "darwin" for OSX, "windows" for Windows.
    ARCH=amd64  # or "386" for 32-bit OSs, "arm64" for ARM 64.
    
    curl -fsSL "https://github.com/GoogleCloudPlatform/docker-credential-gcr/releases/download/v${VERSION}/docker-credential-gcr_${OS}_${ARCH}-${VERSION}.tar.gz" \
    | tar xz --to-stdout ./docker-credential-gcr \
    > /usr/local/bin/docker-credential-gcr && chmod +x /usr/local/bin/docker-credential-gcr
    
  3. Configurez Docker à l'aide de la commande suivante :

    docker-credential-gcr configure-docker
    

    Vos identifiants sont enregistrés dans votre répertoire d'accueil utilisateur.

    • Linux : $HOME/.docker/config.json
    • Windows : %USERPROFILE%/.docker/config.json

Pour en savoir plus, consultez la documentation de l'assistant d'identification Docker autonome sur GitHub.

Docker est à présent configuré pour s'authentifier avec Container Registry. Pour stocker et extraire des images, assurez-vous que les autorisations sont correctement configurées.

Jeton d'accès

Un jeton d'accès est un identifiant de courte durée qui permet d'accéder à vos ressources Google Cloud. Comme le jeton est valide pendant 60 minutes, vous devez le demander moins d'une heure avant de vous en servir pour vous connecter à Container Registry.

Google Cloud obtient un jeton d'accès à l'aide des identifiants par défaut de l'application. Le jeton expire au bout de 60 minutes.

  1. Obtenez la clé du compte de service qui interagira avec Container Registry.

    Console

    1. Dans Google Cloud Console, ouvrez la page Créer une clé de compte de service.

      Accéder à la page Créer une clé de compte de service

    2. Dans la liste "Comptes de service", sélectionnez celui que vous souhaitez utiliser.

      Pour créer un compte de service, sélectionnez Nouveau compte de service, puis spécifiez le nom, l'ID et le rôle Container Registry correspondant aux autorisations que vous souhaitez accorder au compte de service.

    3. Sélectionnez JSON comme type de clé.

    4. Cliquez sur Créer. Un fichier JSON contenant votre clé est téléchargé sur votre ordinateur.

      Les instructions de cette page utilisent le nom de fichier keyfile.json pour ce fichier de clé.

    gcloud

    Vous pouvez exécuter les commandes suivantes à l'aide du SDK Cloud sur votre ordinateur local ou dans Cloud Shell.

    1. Créez le compte de service. Remplacez NAME par le nom que vous souhaitez donner au compte de service.

      gcloud iam service-accounts create NAME
      
    2. Accordez des autorisations au compte de service. Remplacez PROJECT_ID par l'ID du projet et ROLE par le rôle Container Registry approprié pour le compte de service. Ce rôle s'applique à tous les dépôts du projet. Vous pourrez modifier le rôle ultérieurement. Vous pouvez également définir des autorisations différentes pour le compte de service dans des dépôts spécifiques.

      gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"
      
    3. Générez le fichier de clé. Les instructions de cette page utilisent le nom de fichier keyfile.json pour le fichier de clé.

      gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
      
  2. Exécutez la commande suivante pour vous connecter au SDK Cloud en tant que compte de service.

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    • ACCOUNT est le nom du compte de service au format [USERNAME]@[PROJECT-ID].iam.gserviceaccount.com.
    • KEY-FILE est le fichier de clé du compte de service. Pour en savoir plus sur la création d'une clé, consultez la documentation IAM.
  3. Vérifiez que les autorisations sont correctement configurées pour le compte de service. Si vous utilisez le compte de service Compute Engine, vous devez configurer correctement les autorisations et les niveaux d'accès.

  4. Procurez-vous un jeton d'accès pour le compte de service. Étant donné que le jeton est de courte durée, demandez-le moins d'une heure avant de l'utiliser pour vous connecter à Container Registry.

    Linux/macOS

    • Le nom d'utilisateur est oauth2accesstoken.
    • Le mot de passe est votre jeton d'accès. Par exemple, gcloud auth print-access-token.

    Exemple :

    gcloud auth print-access-token | docker login -u oauth2accesstoken --password-stdin https://HOSTNAME
    

    HOSTNAME est gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

    Ou, pour les clients Docker plus anciens non compatibles avec --password-stdin :

    docker login -u oauth2accesstoken -p "$(gcloud auth print-access-token)" https://HOSTNAME
    

    Windows

    • Le nom d'utilisateur est oauth2accesstoken.
    • Le mot de passe est le résultat de la commande gcloud auth print-access-token.
    1. Obtenir le jeton d'accès
    gcloud auth print-access-token
    

    La chaîne renvoyée est le jeton d'accès que vous utilisez comme mot de passe. Dans cet exemple, ya29.8QEQIfY_... représente le jeton d'accès renvoyé.

    ya29.8QEQIfY_...
    
    1. Se connecter avec le jeton d'accès
    docker login -u oauth2accesstoken -p "ya29.8QEQIfY_..." https://HOSTNAME
    

    HOSTNAME est gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

Docker est désormais authentifié avec Container Registry.

Fichier de clé JSON

Une clé de compte de service est une paire de clés à longue durée de vie que vous pouvez utiliser comme identifiant de compte de service. Vous êtes responsable de la sécurité de la clé privée et des autres opérations de gestion des clés, par exemple leur rotation.

Toute personne ayant accès à une clé privée valide pour un compte de service peut accéder aux ressources via le compte de service. Par exemple, certains comptes de service créés automatiquement par Google Cloud, tels que le compte de service Container Registry, se voient attribuer le rôle Editor avec des autorisations de lecture/écriture pour le projet parent. Le compte de service par défaut Compute Engine est configuré avec un accès en lecture seule à l'espace de stockage dans le même projet.

En outre, le cycle de vie de l'accès de la clé au compte de service est indépendant du cycle de vie de l'utilisateur qui a téléchargé la clé.

Suivez les instructions ci-dessous pour limiter l'accès aux images de vos conteneurs :

Pour créer un nouveau compte de service et une clé de compte de service à n'utiliser qu'avec les dépôts Container Registry, procédez comme suit :

  1. Créez le compte de service qui interagira avec les dépôts :

    Console

    1. Dans Google Cloud Console, ouvrez la page Créer une clé de compte de service.

      Accéder à la page Créer une clé de compte de service

    2. Dans la liste Compte de service, sélectionnez Nouveau compte de service.

    3. Dans le champ Nom du compte de service, saisissez un nom.

    4. Dans la liste Rôle, sélectionnez le rôle Container Registry pour le compte de service.

    5. Cliquez sur Créer. Un fichier JSON contenant votre clé est téléchargé sur votre ordinateur.

      Les instructions de cette page utilisent le nom de fichier keyfile.json pour ce fichier de clé.

    gcloud

    Vous pouvez exécuter les commandes suivantes à l'aide du SDK Cloud sur votre ordinateur local ou dans Cloud Shell.

    1. Créez le compte de service. Remplacez NAME par le nom que vous souhaitez donner au compte de service.

      gcloud iam service-accounts create NAME
      
    2. Accordez des autorisations au compte de service. Remplacez PROJECT_ID par l'ID du projet et ROLE par le rôle approprié pour le compte de service.

      gcloud projects add-iam-policy-binding PROJECT_ID --member "serviceAccount:NAME@PROJECT_ID.iam.gserviceaccount.com" --role "roles/ROLE"
      
    3. Générez le fichier de clé. Dans cet exemple, le nom du fichier de clé en sortie est keyfile.json

      gcloud iam service-accounts keys create keyfile.json --iam-account [NAME]@[PROJECT_ID].iam.gserviceaccount.com
      
  2. Vérifiez que les autorisations sont correctement configurées pour le compte de service. Si vous utilisez le compte de service Compute Engine, vous devez configurer correctement les autorisations et les niveaux d'accès.

  3. Utilisez la clé de compte de service comme mot de passe pour vous authentifier auprès de Docker.

    Linux/macOS

    • Le nom d'utilisateur est _json_key. (Il ne s'agit PAS du nom de votre compte de service.)
    • keyfile.json est à la clé de compte de service que vous avez créée.

    Exemple :

    cat keyfile.json | docker login -u _json_key --password-stdin https://HOSTNAME
    

    HOSTNAME est gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

    Ou, pour les clients Docker plus anciens non compatibles avec --password-stdin :

    docker login -u _json_key -p "$(cat keyfile.json)" https://HOSTNAME
    

    HOSTNAME est gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

    Windows

    • Le nom d'utilisateur est _json_key. (Il ne s'agit PAS du nom de votre compte de service.)
    • keyfile.json contient la clé JSON du compte de service.

    Exemple :

    docker login -u _json_key --password-stdin https://HOSTNAME < keyfile.json
    

    HOSTNAME est gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

    Ou, pour les clients Docker plus anciens non compatibles avec --password-stdin :

    set /p PASS=<keyfile.json
    docker login -u _json_key -p "%PASS%" https://HOSTNAME
    

    HOSTNAME est gcr.io, us.gcr.io, eu.gcr.io ou asia.gcr.io.

Docker est désormais authentifié avec Container Registry.