Configura la autenticación para Go

La autenticación en Artifact Registry es diferente para las cargas 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 La marca --json_key se pasa para usar una clave de cuenta de servicio.

  1. Las credenciales predeterminadas de la aplicación (ADC), que es una estrategia que busca credenciales en el siguiente orden:

    1. Credenciales definidas en la variable de entorno GOOGLE_APPLICATION_CREDENTIALS

    2. Credenciales que proporciona la cuenta de servicio predeterminada para Compute Engine, Google Kubernetes Engine, Cloud Run, App Engine o Cloud Functions

  2. Credenciales que proporciona Google Cloud CLI, incluidas las credenciales de usuario de el comando gcloud auth application-default login

La variable GOOGLE_APPLICATION_CREDENTIALS hace que la cuenta de autenticación explícita, lo que facilita la solución de problemas. Si no debe usar la variable, verifique que las cuentas que podría usar ADC tengan los permisos necesarios Por ejemplo, el cuenta de servicio predeterminada para VMs de Compute Engine, nodos de Google Kubernetes Engine, y las revisiones de Cloud Run tienen acceso de solo lectura a los repositorios. Si desde estos entornos con la cuenta de servicio predeterminada debes modificar los permisos.

Cuando descargues módulos de Go empaquetados para usarlos como dependencias de Artifact Registry, el objeto binario de Go, usa las credenciales de tu archivo netrc para autenticarse en Artifact Registry. Para simplificar la autenticación puedes usar el auxiliar de credenciales de Go para actualizar los tokens en tu archivo netrc para la autenticación en Artifact Registry.

La ubicación del archivo netrc se puede establecer con la variable de entorno de netrc. Si no se configura la variable NETRC, el comando go leerá $HOME/.netrc en plataformas similares a UNIX o %USERPROFILE%\_netrc en Windows

Artifact Registry admite los siguientes métodos de autenticación cuando se usa en el archivo netrc:

Credenciales de corta duración (recomendado)
Usar la herramienta auxiliar de credenciales de Go de Artifact Registry para actualizar los tokens de autenticación en tu archivo netrc con el credenciales en tu entorno o agregar manualmente tu registro 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 de varios factores. Puedes usar Artifact Registry Usa la herramienta auxiliar de credenciales para agregar el clave de la cuenta de servicio sin encriptar al archivo netrc o agrégala de forma manual al el archivo.

Antes de comenzar

  1. Instalación Ir 1.15 o superior.
  2. Instala el complemento package-go-module de gcloud CLI:

    gcloud components install package-go-module

Configura el entorno de Go

  1. Indica a Go que descargue módulos de Artifact Registry, el servicio público de Go del módulo, y, luego, usa el código fuente en ese orden:

      export GOPROXY=https://LOCATION-go.pkg.dev/PROJECT/REPOSITORY,https://proxy.golang.org,direct
    

    Reemplaza lo siguiente:

    • LOCATION es la región o multirregional ubicación del repositorio.
    • PROJECT es tu cuenta de Google Cloud ID del proyecto:
    • REPOSITORY es el nombre del repositorio en el que se almacena el paquete.
  2. Excluye tu módulo de la verificación con la base de datos pública de suma de comprobación:

      export GONOSUMDB=MODULE_PATH_REGEX
    

    Reemplaza MODULE_PATH_REGEX por la ruta de acceso de tu módulo o una clave si quieres excluir varios módulos.

    Por ejemplo, para excluir el módulo example.com/foo de la verificación mediante la base de datos pública de suma de comprobación, ejecuta el siguiente comando:

      export GONOSUMDB=example.com/foo
    

    El siguiente comando excluye todos los módulos con rutas de acceso que comiencen en example.com para que no se verifique con la base de datos pública de suma de comprobación:

      export GONOSUMDB=example.com/*
    

Agrega credenciales de Artifact Registry a tu archivo netrc

  1. Ejecuta el siguiente comando para agregar tus credenciales de Artifact Registry a la 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 región o multirregional ubicación de tu repositorio. Para agregar varias ubicaciones, ingrésalas como una coma. lista separada.
    • PATH_TO_JSON_KEY opcional La ruta de acceso a tu cuenta de servicio .

      El auxiliar de credenciales de Go agrega parámetros de configuración a tu archivo netrc para la autenticación. a Artifact Registry. Si pasas la marca --json_key, se agrega la clave al archivo netrc para autenticar con contraseña.

  2. Si usas credenciales de corta duración para la autenticación a Artifact Registry, deberás actualizar tu token de OAuth ejecutando 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 una 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:

  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 autorización Rol de Artifact Registry a la cuenta de servicio para proporcionar el repositorio access.

  3. Ejecuta el siguiente comando para agregar las credenciales de tu cuenta de servicio a tu 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 región o multirregional ubicación de tu repositorio. Para agregar varias ubicaciones, ingrésalas como una coma. lista separada.
    • PATH_TO_JSON_KEY es la ruta de acceso a la cuenta de servicio JSON. archivo de claves.

      El auxiliar de credenciales de Go agrega la clave de la cuenta de servicio a tu red para la autenticación con contraseña.

También es posible agregar manualmente 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 configuración regional o multirregional ubicación de tu repositorio.
  • KEY por la clave codificada en base64 en el archivo de claves de tu 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 a Go para que lo descargue directamente desde GitHub. Si tienes otros módulos que quieras descargar directamente de la fuente, puedes agregarlos en espacios separados por comas como se muestra en el siguiente ejemplo:

  export GONOPROXY=MODULE_PATH1, MODULE_PATH2

En el que MODULE_PATH1 y MODULE_PATH2 son rutas de acceso de módulos de los módulos que se descargarán desde la fuente.

Para agregar el auxiliar de credenciales de Go a tu lista de GONOPROXY y ejecutarlo para configurarlo, tus credenciales:

  1. Agrega el auxiliar de credenciales de Go a tu GONOPROXY.

      export GONOPROXY=github.com/GoogleCloudPlatform/artifact-registry-go-tools
    
  2. Ejecuta el siguiente comando para agregar tus credenciales de Artifact Registry a la 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 que LOCATION es la región o multirregional ubicación de tu repositorio. Para agregar varias ubicaciones, ingrésalas como un una lista separada por comas.

    El auxiliar de credenciales de Go agrega parámetros de configuración a tu archivo netrc para la autenticación. a Artifact Registry. Si pasas la marca --json_key, se agregará la clave tu archivo netrc para autenticar con contraseña.

¿Qué sigue?