Debe autenticarse en Artifact Registry cuando utilice una aplicación de terceros para conectarse a un repositorio.
No es necesario configurar la autenticación para Cloud Build ni para los entornos de ejecución de Google Cloud como Google Kubernetes Engine y Cloud Run, pero debes verificar que los permisos necesarios estén configurados.
Antes de empezar
-
Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:
gcloud init
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
- (Opcional) Configura los valores predeterminados de los comandos de gcloud CLI.
- Si te conectas a repositorios desde Windows, instala PowerShell.
- Crea una cuenta de servicio para que actúe en nombre de tu aplicación.
- Si no has usado npm antes, consulta la descripción general para obtener información sobre los paquetes con ámbito y el archivo de configuración de tus ajustes de autenticación.
Información general
Artifact Registry admite los siguientes métodos de autenticación.
- Usar un asistente de credenciales
- Esta opción es la más flexible. Cuando incluyes el helper en tu configuración de npm, Artifact Registry busca las credenciales de la cuenta de servicio en el entorno.
- Especificar una clave de cuenta de servicio como credencial
- Usa esta opción cuando una aplicación no admita las credenciales predeterminadas de la aplicación, pero sí la autenticación con un nombre de usuario y una contraseña.
Autenticarse con un asistente de credenciales
google-artifactregistry-auth es una biblioteca de cliente que obtiene credenciales para repositorios de Artifact Registry.
Artifact Registry busca las credenciales en el siguiente orden:
Credenciales predeterminadas de la aplicación (ADC), 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 de Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o las funciones de Cloud Run.
Credenciales proporcionadas por la CLI de Google Cloud, incluidas las credenciales de usuario del comando
gcloud auth application-default login
.
La variable GOOGLE_APPLICATION_CREDENTIALS
hace que la cuenta de autenticación sea explícita, lo que facilita la solución de problemas. Si no usas la variable, verifica que las cuentas que pueda usar ADC tengan los permisos necesarios. Por ejemplo, la cuenta de servicio predeterminada de las VMs de Compute Engine, los nodos de Google Kubernetes Engine y las revisiones de Cloud Run tiene acceso de solo lectura a los repositorios. Si tienes intención de subir contenido desde estos entornos con la cuenta de servicio predeterminada, debes modificar los permisos.
Para crear una cuenta de servicio y definir la variable de entorno GOOGLE_APPLICATION_CREDENTIALS
, sigue estos pasos:
Crea una cuenta de servicio para que actúe en nombre de tu aplicación o elige una cuenta de servicio que ya tengas y que quieras usar para la automatización de CI/CD.
Concede el rol de Artifact Registry específico a la cuenta de servicio para proporcionar acceso al repositorio.
Asigna la ubicación del archivo de clave de cuenta de servicio a la variable
GOOGLE_APPLICATION_CREDENTIALS
para que el asistente de credenciales de Artifact Registry pueda obtener tu clave al conectarse con los repositorios.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
Donde KEY-FILE es la ruta al archivo de clave de la cuenta de servicio.
Para configurar la autenticación, sigue estos pasos:
Ejecuta el siguiente comando para imprimir la configuración del repositorio:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] \ [--location=LOCATION] \ --scope=@SCOPE-NAME \
Dónde
- PROJECT es el ID del proyecto. Si se omite esta marca, se usará el proyecto actual o predeterminado.
- REPOSITORY es el ID del repositorio. Si has configurado un repositorio predeterminado de Artifact Registry, se usará cuando se omita esta marca en el comando.
- LOCATION es la ubicación regional o multirregional del repositorio.
SCOPE-NAME es el nombre del ámbito de npm que se va a asociar al repositorio.
El uso de ámbitos garantiza que siempre publiques e instales paquetes desde el repositorio correcto.
Los paquetes sin ámbito están asociados a tu registro npm predeterminado, que suele ser el registro público de npm. Si no especificas un ámbito, la configuración devuelta define tu repositorio de Artifact Registry como el registro predeterminado. Esto puede causar problemas si tus proyectos de Node.js necesitan instalar paquetes tanto del registro público de npm como de tu repositorio de Artifact Registry.
Añade los ajustes de configuración devueltos al archivo de configuración .npmrc de tus proyectos de Node.js. Este archivo suele estar en el mismo directorio que
package.json
.Asegúrate de incluir estos ajustes en los proyectos de Node.js para los paquetes que publiques, así como en los proyectos que instalen dependencias de tu repositorio de npm.
Si tienes otros repositorios de Node.js a los que conectarte, repite los pasos anteriores para obtener la configuración y añádela a los archivos
.npmrc
correspondientes.Cuando quieras conectar un repositorio, obtén un token de acceso para la autenticación.
Cada repositorio de paquetes de Node.js de Artifact Registry está asociado a un
endpoint de registro https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY
Si no ha especificado un ámbito con el comando print-settings
, puede ejecutar el siguiente comando para asociar un ámbito a un repositorio de Artifact Registry.
npm config set @SCOPE_NAME:registry https://LOCATION-npm.pkg.dev/PROJECT/REPOSITORY/
Obtener un token de acceso
Los tokens de acceso son válidos durante 60 minutos. Genera un token de acceso poco antes de ejecutar comandos que interactúen con repositorios.
Para obtener un token, utiliza una de estas opciones:
Usa el comando
npx
para actualizar el token de acceso.Asegúrate de que las credenciales para conectarte al registro público de npm estén en el archivo de configuración de npm de tu usuario,
~/.npmrc
.Ejecuta el siguiente comando en el directorio de tu proyecto Node.js.
npx google-artifactregistry-auth
Si tu repositorio de Artifact Registry está configurado como registro global y tus paquetes no tienen un ámbito definido, usa el siguiente comando para que el comando pueda descargar el asistente de credenciales del registro público de npm en lugar de tu repositorio de Artifact Registry.
npm_config_registry=https://registry.npmjs.org npx google-artifactregistry-auth
Añade una secuencia de comandos al archivo
package.json
de tu proyecto."scripts": { "artifactregistry-login": "npx google-artifactregistry-auth" }
Ejecuta la secuencia de comandos en el directorio del proyecto de Node.js.
npm run artifactregistry-login
Artifact Registry lee los ajustes del repositorio de Artifact Registry en el archivo .npmrc
de tu proyecto y los usa para añadir credenciales de token al archivo .npmrc
de tu usuario. Almacenar el token en el archivo .npmrc
del usuario aísla tus
credenciales de tu código fuente y de tu sistema de control de versiones.
--repo-config
es el archivo.npmrc
con la configuración de tu repositorio. Si no especificas esta marca, la ubicación predeterminada será el directorio actual.--credential-config
es la ruta del archivo.npmrc
en el que quieres escribir el token de acceso. El valor predeterminado es el archivo.npmrc
del usuario.
Configurar la autenticación con contraseña
Usa este método cuando tu aplicación Node.js requiera autenticación con un nombre de usuario y una contraseña específicos.
Las claves de cuenta de servicio son credenciales de larga duración. Sigue estas directrices para limitar el acceso a tus repositorios:
- Te recomendamos que uses una cuenta de servicio específica para interactuar con los repositorios.
- Asigna el rol de Artifact Registry mínimo que requiere la cuenta de servicio. Por ejemplo, asigna el rol 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, concede acceso a nivel de repositorio en lugar de a nivel de proyecto.
- Sigue las prácticas recomendadas para gestionar las credenciales.
Para crear una cuenta de servicio y configurar la autenticación, sigue estos pasos:
Crea una cuenta de servicio para que actúe en nombre de tu aplicación o elige una que ya tengas y que uses para la automatización.
Necesitarás la ubicación del archivo de clave de cuenta de servicio para configurar la autenticación con Artifact Registry. En el caso de las cuentas que ya tengas, puedes ver las claves y crear otras en la página Cuentas de servicio.
Concede el rol de Artifact Registry específico a la cuenta de servicio para proporcionar acceso al repositorio.
Si quieres activar la cuenta de servicio en la sesión actual de la CLI de gcloud, ejecuta el siguiente comando:
gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
Dónde
- ACCOUNT es la cuenta de usuario o de servicio.
- KEY-FILE es la ruta al archivo JSON de la cuenta de servicio key file.
Ejecuta el siguiente comando para imprimir la configuración del repositorio:
gcloud artifacts print-settings npm [--project=PROJECT] \ [--repository=REPOSITORY] [--location=LOCATION] --scope=@SCOPE-NAME --json-key=KEY-FILE
Dónde
- PROJECT es el ID del proyecto. Si se omite esta marca, se usará el proyecto actual o predeterminado.
- REPOSITORY es el ID del repositorio. Si has configurado un repositorio predeterminado de Artifact Registry, se usará cuando se omita esta marca en el comando.
- LOCATION es la ubicación regional o multirregional del repositorio.
SCOPE-NAME es el nombre del ámbito de npm que se va a asociar al repositorio.
El uso de ámbitos garantiza que siempre publiques e instales paquetes desde el repositorio correcto.
Los paquetes sin ámbito están asociados a tu registro npm predeterminado, que suele ser el registro público de npm. Si no especificas un ámbito, la configuración devuelta define tu repositorio de Artifact Registry como el registro predeterminado. Esto puede causar problemas si tus proyectos de Node.js necesitan instalar paquetes tanto del registro público de npm como de tu repositorio de Artifact Registry.
KEY-FILE es la ruta al archivo JSON de la cuenta de servicio key file.
Añade los ajustes de configuración devueltos al archivo de configuración .npmrc de tus proyectos de Node.js. Este archivo suele estar en el mismo directorio que
package.json
. Asegúrate de incluir estos ajustes en los proyectos de Node.js para los paquetes que publiques, así como en los proyectos que instalen dependencias de tu repositorio de npm.Si tienes otros repositorios de Node.js a los que conectarte, repite los pasos anteriores para obtener los ajustes y añadirlos al archivo
.npmrc
.
Siguientes pasos
- Configurar el acceso a los repositorios
- Información sobre cómo gestionar repositorios
- Información sobre cómo gestionar paquetes