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 la cuenta de servicio predeterminada para Compute Engine, Funciones de Google Kubernetes Engine, Cloud Run, App Engine o Cloud Run proporciona.

  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 usas la variable, verifica que las cuentas que pueda 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 quieres subir desde estos entornos con la cuenta de servicio predeterminada, debes modificar los permisos.

Cuando descargas módulos Go empaquetados para usarlos como dependencias de Artifact Registry, el 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 .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 usan credenciales en el archivo netrc:

Credenciales de corta duración (recomendado)
Usa la herramienta de ayuda de credenciales de Go de Artifact Registry para actualizar los tokens de autenticación en tu archivo netrc con las credenciales de tu entorno, o bien 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 autenticación. Puedes usar la herramienta de ayuda de credenciales de Go de Artifact Registry para agregar la clave de cuenta de servicio no encriptada a tu archivo netrc o agregarla manualmente al archivo.

Antes de comenzar

  1. Instala Go 1.15 o una versión posterior.
  2. Instala el complemento package-go-module de gcloud CLI:

    gcloud components install package-go-module

Configura el entorno de Go

  1. Instruye a Go a descargar módulos de Artifact Registry, el proxy público del módulo Go 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 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 de sumas de comprobación públicas:

      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 sumas de comprobación públicas, ejecuta el siguiente comando:

      export GONOSUMDB=example.com/foo
    

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

      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 tu 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 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 autenticarte en 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 el rol adecuado de Artifact Registry a la cuenta de servicio para proporcionar acceso al repositorio.

  3. Ejecuta el siguiente comando para agregar las credenciales de tu cuenta de servicio a tu 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 como una coma. lista separada.
    • PATH_TO_JSON_KEY es la ruta de acceso a la cuenta de servicio JSON. archivo de claves.

      El asistente de credenciales de Go agrega la clave de la cuenta de servicio a tu archivo netrc para la autenticación de contraseña.

También puedes agregar manualmente la clave de tu cuenta de servicio al archivo netrc con 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 con 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 quieres que se descarguen directamente desde la fuente, puedes agregarlos en una lista separada 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 tu archivo netrc con la herramienta de paquete de módulos 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 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?