L'authentification à Artifact Registry est différente pour l'importation et le 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 des 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.
Identifiants par défaut de l'application (ADC), stratégie qui recherche les identifiants dans l'ordre suivant :
Identifiants définis dans la variable d'environnement
GOOGLE_APPLICATION_CREDENTIALS
.Identifiants fournis par le compte de service par défaut pour Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine ou les fonctions Cloud Run.
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 d'authentification explicite, ce qui facilite le dépannage. Si vous n'utilisez pas la variable, vérifiez que tous les comptes que l'ADC peut utiliser disposent des autorisations requises. Par exemple, le compte de service par défaut des VM Compute Engine, des nœuds Google Kubernetes Engine et des révisions Cloud Run dispose d'un accès en lecture seule aux dépôts. Si vous souhaitez importer des données à 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 comme dépendances à partir d'Artifact Registry, le binaire Go utilise les identifiants de votre fichier netrc pour s'authentifier auprès d'Artifact Registry. Pour simplifier le processus d'authentification, vous pouvez utiliser l'assistant d'identification Go pour actualiser les jetons de votre fichier netrc afin de vous authentifier 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 UNIX ou %USERPROFILE%\_netrc
sur Windows.
Artifact Registry est compatible avec les méthodes d'authentification suivantes lorsque vous utilisez des identifiants dans votre fichier netrc:
- Identifiants éphémères (recommandé)
- Utilisez l'assistant d'identification 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 utiliser d'identifiants dans votre environnement pour l'authentification. Vous pouvez utiliser l'outil d'assistance d'identification 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
- Installez Go 1.15 ou une version ultérieure.
Installez le module complémentaire de la gcloud CLI package-go-module:
gcloud components install package-go-module
Configurer l'environnement Go
Demandez à Go de télécharger des modules à partir d'Artifact Registry, du proxy de module Go public, puis de la 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 correspond à l' Google Cloud ID de votre projet.
- REPOSITORY est le nom du dépôt où le package est stocké.
Exclure votre module de la vérification à l'aide de la base de données de somme de contrôle publique:
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 de somme de contrôle publique, exécutez la commande suivante:export GONOSUMDB=example.com/foo
La commande suivante exclut tous les modules dont les chemins de module commencent par
example.com
de la vérification à 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
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, saisissez-les sous la forme d'une liste d'éléments séparés 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'indicateur
--json_key
, la clé est ajoutée à votre fichier netrc pour l'authentification par mot de passe.
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 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 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 :
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".
Accordez le rôle Artifact Registry approprié au compte de service afin de fournir l'accès au dépôt.
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, saisissez-les sous la forme d'une liste d'éléments séparés 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'identifiants Go ajoute la clé du compte de service à votre fichier netrc pour l'authentification par mot de passe.
Vous pouvez également 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 de votre dépôt.
- KEY par la clé encodée en base64 dans votre fichier de clé de compte de service.
Ajouter l'assistant d'identification Go à GONOPROXY
Avant d'utiliser l'assistant d'identifiants Go, vous devez l'ajouter à la liste GONOPROXY
pour forcer Go à le télécharger directement depuis GitHub. Si vous souhaitez que d'autres modules soient téléchargés directement à partir de la source, vous pouvez les ajouter dans une liste séparée par des virgules, comme illustré dans l'exemple suivant:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Où MODULE_PATH1 et MODULE_PATH2 sont les chemins d'accès des modules à télécharger à partir de la source.
Pour ajouter l'outil d'assistance aux identifiants Go à votre liste GONOPROXY
et l'exécuter pour configurer vos identifiants:
Ajouter l'assistant d'identification Go à votre
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
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]
Où LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs emplacements, saisissez-les sous la forme 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 auprès d'Artifact Registry. Si vous transmettez l'indicateur
--json_key
, la clé est ajoutée à votre fichier netrc pour l'authentification par mot de passe.