La autenticación en Artifact Registry es diferente para la carga y descarga de módulos de Go empaquetados. Cuando empaquetas y subes un módulo de Go a
Artifact Registry, la herramienta de gcloud CLI busca credenciales en
tu entorno para configurar la autenticación en el siguiente orden, a menos que se pase la
marca --json_key
para usar una clave de cuenta de servicio.
Las credenciales predeterminadas de la aplicación (ADC), que es una estrategia que busca credenciales en el siguiente orden:
Credenciales definidas en la variable de entorno
GOOGLE_APPLICATION_CREDENTIALS
Credenciales que proporciona la cuenta de servicio predeterminada para Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o Cloud Functions
Las credenciales que proporciona Google Cloud CLI, incluidas las credenciales de usuario del comando
gcloud auth application-default login
.
La variable GOOGLE_APPLICATION_CREDENTIALS
hace que la cuenta sea explícita para la autenticación, lo que facilita la solución de problemas. Si no usas la variable, verifica que las cuentas que ADC pueda usar tengan los permisos necesarios. Por ejemplo, la cuenta de servicio predeterminada para las VM de Compute Engine, los nodos de Google Kubernetes Engine y las revisiones de Cloud Run tienen acceso de solo lectura a los repositorios. Si deseas subir datos desde estos entornos con la cuenta de servicio predeterminada, debes modificar los permisos.
Cuando descargas módulos de Go empaquetados para usarlos como dependencias de Artifact Registry, el objeto binario de Go usa las credenciales del archivo .netrc
para autenticarse en Artifact Registry.
Artifact Registry admite los siguientes métodos de autenticación cuando se usan credenciales en tu archivo .netrc
:
- Credenciales de corta duración (recomendado)
- Usa la herramienta auxiliar de credenciales de Go de Artifact Registry para actualizar los tokens de autenticación del archivo
.netrc
con las credenciales de tu entorno o agrega manualmente las credenciales de Artifact Registry al archivo.netrc
. - Usa una clave de cuenta de servicio
- Usa esta opción cuando no puedas usar credenciales en tu entorno para la autenticación. Puedes usar la herramienta auxiliar de credenciales de Go de Artifact Registry para agregar la clave de cuenta de servicio sin encriptar a tu archivo
.netrc
o de forma manual.
Antes de comenzar
- Instala Go 1.15 o una versión posterior.
Instala el complemento package-go-module de gcloud CLI:
gcloud components install package-go-module
Cómo configurar el entorno de Go
Indícale a Go que descargue los módulos desde Artifact Registry, el proxy del módulo de Go público y, luego, la fuente en ese orden:
export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
Reemplaza lo siguiente:
- LOCATION es la ubicación regional o multirregional del repositorio.
- PROJECT es el ID del proyecto de Google Cloud.
- REPOSITORY es el nombre del repositorio en el que se almacena el paquete.
Excluye el módulo para que no se verifique con la base de datos de suma de comprobación pública:
export GONOSUMDB=MODULE_PATH_REGEX
Reemplaza MODULE_PATH_REGEX por la ruta de acceso del módulo o una expresión regular si deseas excluir varios módulos.
Por ejemplo, para excluir el módulo
example.com/foo
de la verificación con la base de datos de suma de verificación pública, ejecuta el siguiente comando:export GONOSUMDB=example.com/foo
El siguiente comando excluye todos los módulos con rutas de acceso de módulos que comiencen en
example.com
de la verificación con la base de datos de suma de verificación pública:export GONOSUMDB=example.com/*
Agrega credenciales de Artifact Registry a tu archivo .netrc
Ejecuta el siguiente comando para agregar tus credenciales de Artifact Registry al archivo
.netrc
con el auxiliar de credenciales de 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
Aquí:
- LOCATION es la ubicación regional o multirregional de tu repositorio. Para agregar varias ubicaciones, ingrésalas en una lista separada por comas.
PATH_TO_JSON_KEY opcional Es la ruta de acceso a la clave de tu cuenta de servicio.
El auxiliar de credenciales de Go agrega parámetros de configuración a tu archivo
.netrc
para autenticarse en Artifact Registry. Si pasas la marca--json_key
, la clave se agregará a tu archivo.netrc
para la autenticación de contraseñas.
Si usas credenciales de corta duración para autenticarte en Artifact Registry, deberás actualizar tu token de OAuth. Para ello, ejecuta el siguiente comando antes de usar tu módulo como dependencia:
GOPROXY=proxy.golang.org \ go run github.com/GoogleCloudPlatform/artifact-registry-go-tools/cmd/auth@v0.1.0 refresh
Autentica con una clave de cuenta de servicio
Usa este enfoque cuando necesites autenticación con un nombre de usuario y contraseña.
Las claves de la cuenta de servicio son credenciales de larga duración. Usa los siguientes lineamientos para limitar el acceso a tus repositorios:
- Considera usar una cuenta de servicio dedicada para interactuar con los repositorios.
- Otorga la función mínima de Artifact Registry que requiera la cuenta de servicio. Por ejemplo, asigna la función de lector de Artifact Registry a una cuenta de servicio que solo descargue artefactos.
- Si los grupos de tu organización requieren diferentes niveles de acceso a repositorios específicos, otorga acceso a nivel de repositorio en lugar de a nivel de proyecto.
- Sigue las prácticas recomendadas para administrar credenciales.
Para configurar la autenticación, sigue estos pasos:
Crea una cuenta de servicio que actúe en nombre de tu aplicación o elige una cuenta de servicio existente que uses para la automatización.
Necesitarás la ubicación del archivo de claves de la cuenta de servicio para configurar la autenticación con Artifact Registry. En las cuentas existentes, puedes ver claves y crear claves nuevas en la página Cuentas de servicio.
Otorga la función adecuada de Artifact Registry a la cuenta de servicio para proporcionar acceso al repositorio.
Ejecuta el siguiente comando para agregar las credenciales de tu cuenta de servicio al archivo
.netrc
con el auxiliar de credenciales de 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
Aquí:
- LOCATION es la ubicación regional o multirregional de tu repositorio. Para agregar varias ubicaciones, ingrésalas en una lista separada por comas.
PATH_TO_JSON_KEY es la ruta de acceso al archivo de claves JSON de la cuenta de servicio.
El auxiliar de credenciales de Go agrega la clave de la cuenta de servicio a tu archivo
.netrc
para la autenticación con contraseña.
También es posible agregar de forma manual la clave de tu cuenta de servicio al archivo .netrc
en el siguiente formato:
machine LOCATION.pkg.dev
login json_key_base64
password KEY
Reemplaza lo siguiente:
- LOCATION por la ubicación regional o multirregional del repositorio.
- KEY por la clave codificada en base64 en el archivo de claves de la cuenta de servicio
Agrega el auxiliar de credenciales de Go a GONOPROXY
.
Antes de usar el auxiliar de credenciales de Go, debes agregarlo a la lista GONOPROXY
para forzar la descarga de Go directamente desde GitHub. Si hay otros módulos que quieres descargar directamente de la fuente, puedes agregarlos en una lista separada por comas, como se muestra en el siguiente ejemplo:
export GONOPROXY=MODULE_PATH1, MODULE_PATH2
Donde MODULE_PATH1 y MODULE_PATH2 son rutas de acceso de módulos de módulos que se descargarán desde la fuente.
Para agregar el auxiliar de credenciales de Go a tu lista GONOPROXY
y ejecútalo para configurar las credenciales, haz lo siguiente:
Agrega el auxiliar de credenciales de Go a tu
GONOPROXY
export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
Ejecuta el siguiente comando para agregar tus credenciales de Artifact Registry al archivo
.netrc
con la herramienta del paquete del módulo de 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]
En el ejemplo anterior, LOCATION es la ubicación regional o multirregional de tu repositorio. Para agregar varias ubicaciones, ingrésalas en una lista separada por comas.
El auxiliar de credenciales de Go agrega parámetros de configuración a tu archivo
.netrc
para autenticarse en Artifact Registry. Si pasas la marca--json_key
, la clave se agregará a tu archivo.netrc
para la autenticación de contraseñas.
¿Qué sigue?
- Prueba la guía de inicio rápido.
- Administra módulos de Go.