Cette page a été traduite par l'API Cloud Translation.
Switch to English

Configurer l'authentification pour Docker

Cette page explique comment configurer l'authentification sur les dépôts Docker Artifact Registry.

Avant de commencer

  1. Vérifiez que vous avez activé l'API Artifact Registry et installé le SDK Cloud. Pour obtenir des instructions, consultez la page Activer et désactiver le service.
  2. Si le dépôt cible n'existe pas, créez un dépôt.
  3. (Facultatif) Configurez des valeurs par défaut pour les commandes gcloud.
  4. Installez Docker si ce n'est pas encore fait. Docker est inclus dans Cloud Shell.
  5. 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.

Choisir une méthode d'authentification

Dans la plupart des situations, nous vous recommandons d'utiliser un compte de service pour vous authentifier auprès d'Artifact Registry.

Les comptes de service ne sont pas associés à un utilisateur spécifique. Les applications Google Cloud peuvent utiliser la stratégie des identifiants par défaut de l'application pour obtenir automatiquement des identifiants.

Les comptes de service des applications qui s'intègrent avec Artifact Registry, tels que Cloud Build ou Cloud Run, sont configurés par défaut avec des autorisations leur permettant d'accéder aux dépôts du même projet. Vous n'avez pas besoin de configurer l'authentification Docker pour ces applications.

Les méthodes d'authentification suivantes sont disponibles :

Assistant d'identification gcloud (recommandé)
Configurez vos identifiants Artifact 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 Docker 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. C'est la solution la plus sûre pour utiliser l'outil 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.

Vous ne devez utiliser l'une des options d'authentification alternatives que si l'assistant d'identification gcloud n'est pas idéal, et seulement une fois que vous avez compris les implications de sécurité liées à l'utilisation des autres options.

En outre, examinez les autorisations accordées au compte utilisateur ou au compte de service que vous utilisez pour vous connecter à Artifact Registry. Par exemple, le compte de service Compute Engine par défaut possède le rôle de base Editor pour le projet parent. Au lieu d'utiliser un compte de service par défaut pour interagir avec les dépôts, envisagez de créer un compte de service avec les autorisations spécifiques nécessaires à l'utilisation de vos dépôts.

Assistant d'identification gcloud (recommandé)

Nous vous recommandons fortement d'utiliser cette méthode d'authentification 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 vous authentifier auprès d'Artifact Registry :

  1. Connectez-vous au SDK Cloud en tant qu'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. Exécutez la commande suivante :

    gcloud auth configure-docker HOSTNAME-LIST
    

    HOSTNAME-LIST est une liste de noms d'hôtes de dépôt séparés par une virgule, à ajouter à la configuration de l'assistant d'identification.

    Par exemple, pour ajouter les régions us-central1 et asia-northeast1, exécutez la commande suivante :

    gcloud auth configure-docker us-central1-docker.pkg.dev,asia-northeast1-docker.pkg.dev
    

    Les emplacements de dépôt spécifiés sont ajoutés à la configuration de l'assistant d'identification. Vous pouvez ajouter d'autres emplacements à la configuration ultérieurement en exécutant à nouveau la commande.

    Pour afficher la liste des emplacements de dépôt acceptés, exécutez la commande suivante :

    gcloud artifacts locations list
    
  3. Docker requiert que les assistants d'identification se trouvent dans le PATH système. Vérifiez que la commande gcloud se trouve dans le système PATH.

Docker est à présent configuré pour s'authentifier avec Artifact 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 Artifact Registry sur un système sur lequel le SDK Cloud n'est pas disponible.

L'assistant d'identification Docker autonome récupère vos identifiants Artifact Registry et les écrit dans le fichier de configuration Docker. Ainsi, vous pouvez utiliser l'outil de ligne de commande Docker, docker, pour interagir directement avec Artifact Registry.

Pour utiliser l'assistant d'identification Docker :

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

  2. Téléchargez l'assistant d'identification Docker autonome à partir de 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
    
    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/bin/docker-credential-gcr && chmod +x /usr/bin/docker-credential-gcr
    
  3. Configurez Docker pour qu'il utilise vos informations d'identification Artifact Registry lors de l'interaction avec Artifact Registry (action à effectuer une seule fois) :

    docker-credential-gcr configure-docker --registries=HOSTNAME-LIST
    

    HOSTNAME-LIST est une liste de noms d'hôtes de dépôt séparés par une virgule, à ajouter à la configuration de l'assistant d'identification.

    Par exemple, pour ajouter les régions us-central1 et asia-northeast1, exécutez la commande suivante :

    docker-credential-gcr configure-docker --registries=us-central1-docker.pkg.dev,asia-northeast1-docker.pkg.dev
    

    Les emplacements de dépôt spécifiés sont ajoutés à la configuration de l'assistant d'identification. Vous pouvez ajouter d'autres emplacements à la configuration ultérieurement en exécutant à nouveau la commande.

    Pour afficher la liste des emplacements de dépôt acceptés, exécutez la commande suivante :

    gcloud artifacts locations list
    

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

  4. Docker requiert que les assistants d'identification se trouvent dans le PATH système. Vérifiez que la commande docker-credential-gcr se trouve dans le système PATH.

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

Jeton d'accès

Les jetons d'accès sont des jetons de courte durée qui permettent 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 aux dépôts Artifact Registry.

Google Cloud obtient un jeton d'accès à l'aide des identifiants par défaut de l'application.

Pour utiliser un jeton d'accès :

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.

    Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".

    Accéder à la page "Comptes de service"

  2. Accordez le rôle "Registry Registry" approprié au compte de service afin de donner accès au dépôt.

  3. Attribuez l'emplacement du fichier de clé du compte de service à la variable GOOGLE_APPLICATION_CREDENTIALS afin que l'assistant d'identification Artifact Registry puisse obtenir votre clé lors de la connexion aux dépôts.

    export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
    

    KEY-FILE est le chemin d'accès au fichier de clé du compte de service.

  4. Obtenez un jeton d'accès en tant qu'identifiant lorsque vous vous authentifiez auprès d'Artifact Registry avec Docker.

    Linux/macOS

    Exécutez la commande suivante :

    gcloud auth application-default print-access-token | docker login -u oauth2accesstoken \
    --password-stdin https://LOCATION-docker.pkg.dev
    

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

    docker login -u oauth2accesstoken -p "$(gcloud auth application-default print-access-token)" \
    https://LOCATION-docker.pkg.dev
    

    Où :

    • oauth2accesstoken est le nom d'utilisateur à utiliser pour s'authentifier avec un jeton d'accès.
    • gcloud auth application-default print-access-token est la commande gcloud permettant d'obtenir le jeton d'accès pour le compte de service. Votre jeton d'accès est le mot de passe pour l'authentification.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

    Windows

    Exécutez la commande suivante :

    gcloud auth application-default print-access-token
    ya29.8QEQIfY_...
    
    docker login -u oauth2accesstoken -p "ya29.8QEQIfY_..." \
    https://LOCATION-docker.pkg.dev/<var>PROJECT-ID</var>/<var>REPOSITORY</var>
    

    Où :

    • oauth2accesstoken est le nom d'utilisateur à utiliser pour s'authentifier avec un jeton d'accès.
    • gcloud auth application-default print-access-token est la commande gcloud permettant d'obtenir le jeton d'accès. Votre jeton d'accès est le mot de passe pour l'authentification.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

Docker est désormais authentifié avec Artifact 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. Notez que le cycle de vie de l'accès de la clé au compte de service (et par conséquent, aux données auxquelles le compte de service a accès) est indépendant du cycle de vie de l'utilisateur ayant téléchargé la clé.

Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :

  • Créer des comptes de service dédiés permettant uniquement d'interagir avec les dépôts.
  • Attribuez le rôle Artifact Registry spécifique pour l'accès requis par le compte de service. Par exemple, un compte de service qui ne télécharge que des artefacts ne nécessite que le rôle de lecteur Artifact Registry.
  • Configurez les autorisations de vos comptes de service dédiés sur chaque dépôt plutôt qu'au niveau du projet. Vous pouvez ensuite spécifier l'accès en fonction du contexte du dépôt. Par exemple, un compte de service pour les compilations de développement peut avoir le rôle Lecteur d'Artifact Registry pour un dépôt de production et le rôle Rédacteur de registre des artefacts pour un dépôt de préproduction.
  • Suivez les bonnes pratiques de gestion des identifiants.

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

  1. Créez un compte de service pour agir au nom de votre application ou sélectionnez un compte de service existant que vous utilisez pour l'automatisation.

    Vous aurez besoin de l'emplacement du fichier de clé de compte de service pour configurer l'authentification avec Artifact Registry. Pour les comptes existants, vous pouvez afficher les clés et en créer sur la page "Comptes de service".

    Accéder à la page "Comptes de service"

  2. Vous avez la possibilité d'encoder tous les contenus du fichier de clé en base64.

    Linux

    base64 FILE-NAME > NEW-FILE-NAME
    

    macOS

    base64 -i FILE-NAME -o NEW-FILE-NAME
    

    Windows

    Base64.exe -e FILE-NAME > NEW-FILE-NAME
    

    FILE-NAME est le nom du fichier de clé d'origine et NEW-FILE-NAME est votre fichier de clé encodé en base64.

  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. Utilisez la clé de compte de service pour configurer l'intégration avec Docker :

    Linux/macOS

    Exécutez la commande suivante :

    cat KEY-FILE | docker login -u KEY-TYPE --password-stdin \
    https://LOCATION-docker.pkg.dev
    

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

    docker login -u KEY-TYPE -p "$(cat FILE-NAME.json)" \
    https://LOCATION-docker.pkg.dev
    

    Où :

    • KEY-TYPE est l'un des éléments suivants :
      • _json_key si vous utilisez la clé de compte de service au format JSON, telle qu'elle a été fournie lors de la création du fichier.
      • _json_key_base64 si vous avez codé en base64 l'ensemble du contenu du fichier.
    • KEY-FILE est le nom du fichier de clé du compte de service au format JSON.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

    Windows

    Exécutez la commande suivante :

    docker login -u KEY-TYPE --password-stdin https://LOCATION-docker.pkg.dev < KEY-FILE
    

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

    set /p PASS=<KEY-FILE
    docker login -u KEY-TYPE -p "%PASS%" https://LOCATION-docker.pkg.dev
    

    Où :

    • KEY-TYPE est l'un des éléments suivants :
      • _json_key si vous utilisez la clé de compte de service au format JSON, telle qu'elle a été fournie lors de la création du fichier.
      • _json_key_base64 si vous avez codé en base64 l'ensemble du contenu du fichier.
    • KEY-FILE est le nom du fichier de clé du compte de service au format JSON.
    • LOCATION est l'emplacement régional ou multirégional du dépôt où l'image est stockée.

Docker est désormais authentifié avec Artifact Registry.