Configurer l'authentification pour Go

L'authentification sur Artifact Registry diffère pour l'importation téléchargement de modules Go empaquetés. Lors du packaging et de l'importation d'un module Go dans Artifact Registry, l'outil gcloud CLI recherche les identifiants votre environnement de configurer l'authentification dans l'ordre suivant, sauf si --json_key est transmis 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 la Google Cloud CLI, y compris les identifiants utilisateur de la commande gcloud auth application-default login.

La variable GOOGLE_APPLICATION_CREDENTIALS fait en sorte que le compte une authentification explicite, ce qui facilite le dépannage. Si vous n'utilisez pas la variable, vérifiez que tous les comptes utilisés par l'ADC ont les autorisations requises ; Par exemple, default service account pour les VM Compute Engine, les nœuds Google Kubernetes Engine Cloud Run dispose d'un accès en lecture seule aux dépôts. Si vous à l'aide du compte de service par défaut, vous devez modifier les autorisations.

Lors du téléchargement de modules Go empaquetés à utiliser comme dépendances à partir de Artifact Registry, le binaire Go utilise les identifiants de votre fichier netrc pour s'authentifier auprès d'Artifact Registry. Pour simplifier l'authentification vous pouvez utiliser l'assistant d'identification Go pour actualiser les jetons netrc pour l'authentification auprès d'Artifact Registry.

L'emplacement de votre fichier netrc peut être défini à l'aide de la variable d'environnement netrc. Si la variable NETRC n'est pas définie, la commande go lit $HOME/.netrc sur les plates-formes de type UNIX ou %USERPROFILE%\_netrc sous Windows.

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

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

Avant de commencer

  1. Installer OK 1.15 ou version ultérieure.
  2. Installez le module complémentaire gcloud CLI package-go-module:

    gcloud components install package-go-module

Configurer l'environnement Go

  1. Demandez à Go de télécharger des modules depuis Artifact Registry, le service public Go module proxy, puis "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 lieu du dépôt.
    • PROJECT est votre Google Cloud ID du projet.
    • REPOSITORY est le nom du dépôt dans lequel package est stocké.
  2. Excluez votre module de la vérification à l'aide de la base de données publique des sommes de contrôle:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Remplacez MODULE_PATH_REGEX par le chemin d'accès de votre module ou par un chemin d'accès si vous souhaitez exclure plusieurs modules.

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

      export GONOSUMDB=example.com/foo
    

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

      export GONOSUMDB=example.com/*
    

Ajouter des identifiants Artifact Registry à votre fichier netrc

  1. Exécutez la commande suivante pour ajouter vos identifiants Artifact Registry à votre netrc à l'aide de 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 lieu de votre dépôt. Pour ajouter plusieurs zones géographiques, saisissez-les par une virgule liste séparée.
    • PATH_TO_JSON_KEY facultatif. Chemin d'accès à votre compte de service .

      L'assistant d'identification Go ajoute des paramètres à votre fichier netrc pour l'authentification à 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 éphémères pour l'authentification à 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 exigez une authentification 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 les Rôle Artifact Registry au compte de service pour fournir le dépôt access.

  3. Exécutez la commande suivante pour ajouter les identifiants de votre compte de service à votre netrc à l'aide de 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 lieu de votre dépôt. Pour ajouter plusieurs zones géographiques, saisissez-les par une virgule liste séparée.
    • PATH_TO_JSON_KEY est le chemin d'accès au fichier JSON du compte de service. fichier de clé.

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

Vous pouvez aussi 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 avec l'emplacement régional ou multirégional lieu de votre dépôt.
  • KEY par la clé encodée en base64 figurant 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 à partir de GitHub. Si vous avez d'autres modules à télécharger directement à partir de la source, vous pouvez les ajouter dans des fichiers comme illustré dans l'exemple suivant:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

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

Pour ajouter l'assistant d'identification Go à votre liste GONOPROXY et l'exécuter pour le configurer, procédez comme suit : 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 netrc à l'aide de l'outil de package du 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 correspond à la région lieu de votre dépôt. Pour ajouter plusieurs zones géographiques, saisissez-les d'une 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 à Artifact Registry. Si vous transmettez l'option --json_key, la clé est ajoutée à votre fichier netrc pour l'authentification par mot de passe.

Étape suivante