Configurer l'authentification pour Go

L'authentification auprès d'Artifact Registry est différente pour l'importation et le téléchargement des modules Go empaquetés. Lors de l'empaquetage et de l'importation d'un module Go dans Artifact Registry, l'outil gcloud CLI recherche les identifiants dans votre environnement pour configurer l'authentification dans l'ordre suivant, sauf si l'option --json_key est transmise pour utiliser une clé de compte de service.

  1. Identifiants par défaut de l'application (ADC), stratégie qui recherche les identifiants dans l'ordre suivant :

    1. Identifiants définis dans la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS.

    2. Identifiants fournis par le compte de service par défaut pour Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine ou Cloud Functions.

  2. Identifiants fournis par la Google Cloud CLI, y compris les identifiants utilisateur de la commande gcloud auth application-default login

La variable GOOGLE_APPLICATION_CREDENTIALS rend le compte pour l'authentification explicite, ce qui facilite le dépannage. Si vous n'utilisez pas la variable, vérifiez que tous les comptes que l'ADC pourrait utiliser disposent des autorisations requises. Par exemple, le compte de service par défaut pour les VM Compute Engine, les nœuds Google Kubernetes Engine et les révisions Cloud Run dispose d'un accès en lecture seule aux dépôts. Si vous avez l'intention d'effectuer l'importation à partir de ces environnements à l'aide du compte de service par défaut, vous devez modifier les autorisations.

Lorsque vous téléchargez des modules Go empaquetés à utiliser en tant que dépendances à partir d'Artifact Registry, le binaire Go utilise les identifiants de votre fichier .netrc pour s'authentifier auprès d'Artifact Registry.

Artifact Registry est compatible avec les méthodes d'authentification suivantes lorsque vous utilisez des identifiants dans votre fichier .netrc:

Identifiants de courte durée (recommandé)
Utilisez l'outil d'aide à la connexion Go d'Artifact Registry pour mettre à jour les jetons d'authentification de votre fichier .netrc à l'aide des identifiants de votre environnement, ou ajoutez manuellement vos identifiants Artifact Registry au fichier .netrc.
Utiliser une clé de compte de service
Utilisez cette option lorsque vous ne pouvez pas vous authentifier à l'aide d'identifiants dans votre environnement. Vous pouvez utiliser l'outil d'aide à la connexion Go d'Artifact Registry pour ajouter la clé de compte de service non chiffrée à votre fichier .netrc ou l'ajouter manuellement au fichier.

Avant de commencer

  1. Installez Go 1.15 ou une version ultérieure.
  2. Installez le module complémentaire de la gcloud CLI package-go-module:

    gcloud components install package-go-module

Configurer l'environnement Go

  1. Demandez à Go de télécharger des modules à partir d'Artifact Registry, du proxy de module Go public, puis de les source dans cet ordre:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Remplacez les éléments suivants :

    • LOCATION est l'emplacement régional ou multirégional du dépôt.
    • PROJECT est l'ID du projet Google Cloud.
    • REPOSITORY est le nom du dépôt dans lequel le package est stocké.
  2. Excluez votre module des vérifications à l'aide de la base de données publique de somme de contrôle:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Remplacez MODULE_PATH_REGEX par le chemin d'accès de votre module ou par une expression régulière si vous souhaitez exclure plusieurs modules.

    Par exemple, pour exclure le module example.com/foo de la vérification à l'aide de la base de données publique de somme de contrôle, exécutez la commande suivante:

      export GONOSUMDB=example.com/foo
    

    La commande suivante empêche tous les modules dont les chemins d'accès commencent par example.com d'être vérifiés à l'aide de la base de données publique de somme de contrôle:

      export GONOSUMDB=example.com/*
    

Ajoutez des identifiants Artifact Registry à votre fichier .netrc

  1. Exécutez la commande suivante pour ajouter vos identifiants Artifact Registry à votre fichier .netrc avec l'assistant d'identification Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Où :

    • LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs zones géographiques, saisissez-les sous forme de liste en les séparant par une virgule.
    • PATH_TO_JSON_KEY facultatif. Chemin d'accès à la clé de votre compte de service.

      L'assistant d'identification Go ajoute des paramètres à votre fichier .netrc pour l'authentification auprès d'Artifact Registry. Si vous transmettez l'option --json_key, la clé est ajoutée à votre fichier .netrc pour l'authentification par mot de passe.

  2. Si vous utilisez des identifiants éphémères pour vous authentifier auprès d'Artifact Registry, vous devez actualiser votre jeton OAuth en exécutant la commande suivante avant d'utiliser votre module en tant que dépendance:

      GOPROXY=proxy.golang.org \
      go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
    

S'authentifier à l'aide d'une clé de compte de service

Utilisez cette approche lorsque vous avez besoin d'une authentification à l'aide d'un nom d'utilisateur et d'un mot de passe.

Les clés de compte de service sont des identifiants de longue durée. Suivez les instructions ci-dessous pour limiter l'accès à vos dépôts :

  • Envisagez d'utiliser un compte de service dédié pour interagir avec les dépôts.
  • Attribuez le rôle Artifact Registry minimal requis par le compte de service. Par exemple, attribuez le lecteur Artifact Registry à un compte de service qui télécharge les artefacts uniquement.
  • Si les groupes de votre organisation nécessitent différents niveaux d'accès à des dépôts spécifiques, accordez l'accès au niveau du dépôt plutôt qu'au niveau du projet.
  • Suivez les bonnes pratiques de gestion des identifiants.

Pour configurer l'authentification :

  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 au compte de service le rôle Artifact Registry approprié pour lui permettre d'accéder au dépôt.

  3. Exécutez la commande suivante pour ajouter les identifiants de votre compte de service à votre fichier .netrc avec l'assistant d'identification Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          --json_key=PATH_TO_JSON_KEY
    

    Où :

    • LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs zones géographiques, saisissez-les sous forme de liste en les séparant par une virgule.
    • PATH_TO_JSON_KEY est le chemin d'accès au fichier de clé JSON du compte de service.

      L'assistant d'identification Go ajoute la clé du compte de service à votre fichier .netrc pour l'authentification par mot de passe.

Il est également possible d'ajouter manuellement la clé de votre compte de service au fichier .netrc au format suivant:

machine LOCATION.pkg.dev
login json_key_base64
password KEY

Remplacez les éléments suivants :

  • LOCATION par l'emplacement régional ou multirégional de votre dépôt.
  • KEY par la clé encodée en base64 qui se trouve dans le fichier de clé de votre compte de service.

Ajouter l'assistant d'identification Go à GONOPROXY

Avant d'utiliser l'assistant d'identification Go, vous devez l'ajouter à la liste GONOPROXY pour forcer Go à le télécharger directement depuis GitHub. Si vous souhaitez télécharger d'autres modules directement à partir de la source, vous pouvez les ajouter dans une liste d'éléments séparés par une virgule, comme illustré dans l'exemple suivant:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

MODULE_PATH1 et MODULE_PATH2 sont des chemins d'accès aux modules à télécharger à partir de la source.

Pour ajouter l'assistant d'identification Go à votre liste GONOPROXY et l'exécuter afin de configurer vos identifiants:

  1. Ajouter l'assistant d'identification Go à votre GONOPROXY

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Exécutez la commande suivante pour ajouter vos identifiants Artifact Registry à votre fichier .netrc avec l'outil de package de module Go:

      GOPROXY=proxy.golang.org \
          go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 \
          add-locations --locations=LOCATION \
          [--json_key=path/to/service/account/key.json]
    

    LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs zones, saisissez-les sous forme de liste d'éléments séparés par une virgule.

    L'assistant d'identification Go ajoute des paramètres à votre fichier .netrc pour l'authentification auprès d'Artifact Registry. Si vous transmettez l'option --json_key, la clé est ajoutée à votre fichier .netrc pour l'authentification par mot de passe.

Étapes suivantes