L'authentification de votre environnement client auprès d'Artifact Registry vous permet de stocker des modules Go privés et de les récupérer en tant que dépendances de compilation.
Options d'authentification
La configuration de l'authentification diffère pour l'importation et le téléchargement de packages.
Authentification pour les importations
Lors de l'empaquetage 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 Cloud Run Functions.
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 avez l'intention d'importer des données à partir de ces environnements à l'aide du compte de service par défaut, vous devez modifier les autorisations.
Authentification pour les téléchargements
Lors du téléchargement de modules Go empaquetés à utiliser comme dépendances depuis 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 pour l'authentification auprès d'Artifact Registry.
L'emplacement de votre fichier netrc peut être défini avec 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 sur Windows.
Artifact Registry accepte les méthodes d'authentification suivantes lorsque vous utilisez des identifiants dans votre fichier netrc :
- Identifiants éphémères (recommandé)
- Utilisez l'outil d'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 gcloud CLI package-go-module :
gcloud components install package-go-module
Configurer l'environnement Go
Indiquez à Go de télécharger les modules depuis Artifact Registry, le proxy de module Go public, puis 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 est l'ID de votre projet Google Cloud.
- REPOSITORY est le nom du dépôt où le package est stocké.
Excluez votre module de la vérification à l'aide de la base de données de sommes 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/foode la vérification à l'aide de la base de données de sommes de contrôle publique, 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
example.comde la vérification à l'aide de la base de données de sommes 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.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYOù :
- LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs emplacements, saisissez-les sous forme de 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'option
--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.4.0 refresh
S'authentifier à l'aide d'une clé de compte de service
Utilisez cette approche lorsque vous avez besoin d'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 :
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".
Attribuez le rôle Artifact Registry approprié au compte de service pour 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.4.0 \ add-locations --locations=LOCATION \ --json_key=PATH_TO_JSON_KEYOù :
- LOCATION est l'emplacement régional ou multirégional de votre dépôt. Pour ajouter plusieurs emplacements, saisissez-les sous forme de 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'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 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.
Ajoutez 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 depuis 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
Où MODULE_PATH1 et MODULE_PATH2 sont les chemins d'accès des modules à télécharger à partir de la source.
Pour ajouter l'assistant d'identification Go à votre liste GONOPROXY et l'exécuter pour configurer vos identifiants :
Ajoutez 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 à 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.4.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 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.