Configurer l'authentification pour Go

L'authentification sur Artifact Registry est différente pour l'importation et le téléchargement de 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 de 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. Les identifiants fournis par Google Cloud CLI, y compris ceux fournis par la commande gcloud auth application-default login.

La variable GOOGLE_APPLICATION_CREDENTIALS facilite l'authentification dans le compte, ce qui facilite le dépannage. Si vous n'utilisez pas cette variable, vérifiez que tous les comptes qu'ADC utilise peuvent disposer 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'importer des données depuis ces environnements à l'aide du compte de service par défaut, vous devez modifier les autorisations.

Lors du téléchargement des modules Go empaquetés à utiliser comme dépendances d'Artifact Registry, le binaire Go utilise les identifiants de votre fichier .netrc pour s'authentifier auprès d'Artifact Registry.

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

Identifiants de courte durée (recommandé)
Utilisez l'outil d'assistance pour les identifiants Go d'Artifact Registry pour mettre à jour les jetons d'authentification dans 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 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 gcloud CLI package-go-module:

    gcloud components install package-go-module

Ajouter 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 sur Artifact Registry. Si vous transmettez l'indicateur --json_key, la clé est ajoutée à votre fichier .netrc pour l'authentification par mot de passe.

  2. Si vous utilisez des identifiants de courte durée 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 comme 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 devez vous authentifier avec un nom d'utilisateur et 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 le rôle Artifact Registry approprié au compte de service pour fournir l'accès 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é de compte de service à votre fichier .netrc pour l'authentification par mot de passe.

Vous pouvez également ajouter manuellement votre clé de 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 dans le fichier de clé de votre compte de service.

Étapes suivantes