Configura la autenticación en Artifact Registry para npm

Debes autenticarte en Artifact Registry cuando uses una aplicación de terceros para conectarte a un repositorio.

No necesitas configurar la autenticación para Cloud Build ni para Google Cloud entornos de ejecución como Google Kubernetes Engine y Cloud Run, pero debes verificar que se hayan configurado los permisos necesarios.

Node.js admite dos métodos para autenticar solicitudes en tu repositorio de Artifact Registry:

  • Tokens de acceso: Usa tokens de acceso cuando un usuario humano administre la autenticación en tu aplicación.
  • Autenticación con contraseña: Usa esta opción cuando una aplicación no sea compatible con las credenciales predeterminadas de la aplicación, pero admita la autenticación mediante un nombre de usuario y una contraseña.

Antes de comenzar

  1. Instala la Google Cloud CLI. Después de la instalación, inicializa Google Cloud CLI con el siguiente comando:

    gcloud init

    Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  2. (Opcional) Configura valores predeterminados para los comandos de gcloud CLI.
  3. Si te conectas a repositorios desde Windows, instala PowerShell.
  4. Crea una cuenta de servicio que actúe en nombre de tu aplicación.
  5. Si eres nuevo en la Administración de socios de red, lee la descripción general con el fin de obtener información sobre los paquetes con alcance y el archivo de configuración para configuración de la autenticación.

Genera tokens para la autenticación

Para autenticar tu paquete en Artifact Registry, primero debes generar un token de autenticación. Luego, puedes usar este token cuando realices solicitudes desde tu paquete a Artifact Registry.

Puedes generar un oauth2 token de acceso con Google Cloud o un oauth2l token fuera de Google Cloud.

Los tokens de acceso son válidos durante 60 minutos. Genera un token de acceso poco antes de ejecutar comandos que interactúen con los repositorios. Si tu token de acceso venció, debes generar uno nuevo.

Genera un token con gcloud

Para generar un token de acceso oauth2 con Google Cloud, ejecuta el siguiente comando:

export ACCESS_TOKEN="oauth2accesstoken:$(gcloud auth print-access-token)"

Ahora puedes hacer referencia a ACCESS_TOKEN cuando realices solicitudes desde tu paquete de Node.js a Artifact Registry.

Genera un token sin usar gcloud

Para generar un token de acceso con solo la CLI de oauth2l, haz lo siguiente:

  1. Ejecuta el siguiente comando para instalar la versión más reciente de oauth2l:

    go install github.com/google/oauth2l@latest
    
  2. Ejecuta el siguiente comando:

    export ACCESS_TOKEN="oauth2l fetch --scope cloud-platform"
    

    Google Cloud genera un token hash SHA256 y lo almacena en la variable ACCESS_TOKEN. Ahora puedes hacer referencia a ACCESS_TOKEN cuando realices solicitudes desde tu paquete de Node.js a Artifact Registry.

Configura la autenticación con contraseña con claves de cuenta de servicio

Usa este enfoque cuando la aplicación de Node.js requiera la autenticación con un nombre de usuario y una contraseña especificados.

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 crear una cuenta de servicio y configurar la autenticación, haz lo siguiente:

  1. 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.

    Ir a la página Cuentas de servicio

  2. Otorga la función específica de Artifact Registry a la cuenta de servicio para proporcionar acceso al repositorio.

  3. Si deseas activar la cuenta de servicio en la sesión actual de gcloud CLI, ejecuta el siguiente comando:

    gcloud auth activate-service-account ACCOUNT --key-file=KEY-FILE
    

    Dónde

    • ACCOUNT es la cuenta de usuario o servicio.
    • KEY-FILE es la ruta al archivo de claves JSON de la cuenta de servicio .
  4. 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 usa el proyecto actual o predeterminado.
    • REPOSITORY es el ID del repositorio. Si configuraste un repositorio predeterminado de Artifact Registry, se usa cuando se omite esta marca del comando.
    • LOCATION es la ubicación regional o multirregional del repositorio.
    • SCOPE-NAME es el nombre del permiso de la Administración de socios de red que se debe asociar con el repositorio.

      El uso de permisos garantiza que siempre publiques e instales paquetes desde el repositorio correcto.

      Los paquetes sin permisos están asociados con tu registro predeterminado de la Administración de socios de red, por lo general, el registro público de la Administración de socios de red. Si no especificas un permiso, la configuración que se muestra establece 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 la Administración de socios de red como de tu repositorio de Artifact Registry.

    • KEY-FILE es la ruta al archivo de claves JSON de la cuenta de servicio .

  5. Agrega los ajustes de la configuración que se muestra al archivo de configuración .npmrc en tus proyectos de Node.js. Por lo general, este archivo se encuentra en el mismo directorio que package.json. Asegúrate de incluir estos parámetros de configuración en los proyectos de Node.js para los paquetes que publiques, así como para los proyectos que instalarán dependencias desde tu repositorio de la Administración de socios de red.

  6. Si tienes otros repositorios de Node.js para conectarte, repite los pasos anteriores para obtener la configuración y agrégala al archivo .npmrc.

¿Qué sigue?