En esta página, se describe cómo configurar la autenticación con Artifact Registry Repositorio de paquetes de Python.
Debes autenticarte en Artifact Registry cuando uses una aplicación de terceros para conectarte a un repositorio.
No es necesario que configures la autenticación para Cloud Build o Google Cloud entornos de ejecución como Google Kubernetes Engine y Cloud Run, pero deberías verificar que los permisos necesarios de configuración.
Antes de comenzar
- Si el repositorio de destino no existe, Crea un nuevo repositorio de paquetes de Python.
- Verifica que Python 3 esté instalado. Para obtener instrucciones de instalación, consulta la Instructivo para configurar Python de Google Cloud
- Verifica que la cuenta de usuario o de servicio que usas tenga las los permisos necesarios para acceder a la en un repositorio de confianza.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- (Opcional) Establece los valores predeterminados para gcloud CLI de gcloud.
Descripción general
Artifact Registry admite los siguientes métodos de autenticación.
- Biblioteca de llaveros de Python (recomendado)
- Artifact Registry proporciona un backend de llavero de claves para almacenar las credenciales de Conéctate a repositorios de Artifact Registry.
- Autenticación con contraseña
- Usa esta opción cuando no puedas usar el llavero de claves y necesites una opción que admita autenticación con contraseña básica.
En las instrucciones de esta documentación, se describe cómo configurar pip como el único índice de paquetes que pip busca. Recomendamos usar repositorios virtuales para buscar paquetes en tus paquetes privados en Artifact Registry y paquetes públicos de PyPI en lugar de configuración y varios índices de paquetes en el archivo de configuración de pip. La herramienta pip no índices de paquetes de búsqueda en cualquier orden, de manera que los consumidores descargar o instalar por error un paquete público con el mismo nombre de uno de tus paquetes privados. Los repositorios virtuales permiten configurar prioridades fuentes upstream para mitigar este riesgo de confusión de dependencias.
Autenticación con llavero de claves
El llavero de claves de Python proporciona a las aplicaciones una forma de acceder a backends de llaveros de claves, lo que significa sistemas operativos y almacenes de credenciales externos.
Artifact Registry proporciona la keyrings.google-artifactregistry-auth backend de llavero de claves para controlar la autenticación Repositorios de Artifact Registry
Orden de búsqueda de credenciales
Cuando usas el backend del llavero de claves de Artifact Registry, no están almacenados en tu proyecto de Python. En cambio, Artifact Registry busca las credenciales en el siguiente orden:
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 la cuenta de servicio predeterminada para Compute Engine, Funciones de Google Kubernetes Engine, Cloud Run, App Engine o Cloud Run proporciona.
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.
Configura el llavero de claves
Para configurar la autenticación con el backend de llaveros de Artifact Registry, haz lo siguiente:
Instala la biblioteca de llaveros de claves.
pip install keyring
Instala el backend de Artifact Registry.
pip install keyrings.google-artifactregistry-auth
Genera una lista de backends para confirmar la instalación.
keyring --list-backends
La lista debe incluir
ChainerBackend(priority:10)
GooglePythonAuth(priority: 9)
Ejecuta el siguiente comando para imprimir la configuración del repositorio en agregar a tu proyecto de Python.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION
Reemplaza los siguientes valores:
- PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto predeterminado o actual.
- 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.
Agrega la siguiente configuración al archivo
.pypirc
. La ubicación predeterminada es la siguiente:- Linux y macOS:
$HOME/.pypirc
- Windows:
%USERPROFILE%\.pypirc
[distutils] index-servers = PYTHON-REPO-ID [PYTHON-REPO-ID] repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/
Reemplaza los siguientes valores:
- PYTHON-REPO-ID es un ID del repositorio al que puedes hacer referencia. con herramientas como Twine.
- PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto predeterminado o actual.
- 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.
- Linux y macOS:
Agregar tu repositorio al archivo de configuración de pip La ubicación del archivo dependerá de si quieres actualizar el archivo por usuario o el archivo a un entorno virtual que estás usando.
Para el archivo asociado con el usuario de tu sistema operativo:
- Unix:
$HOME/.config/pip/pip.conf
o$HOME/.pip/pip.conf
- macOS:
/Library/Application Support/pip/pip.conf
o$HOME/.config/pip/pip.conf
- Windows:
%APPDATA%\pip\pip.ini
o%USERPROFILE%\pip\pip.ini
Para entornos virtuales:
- Unix y macOS:
$VIRTUAL_ENV/pip.conf
- Windows:
%VIRTUAL_ENV%\pip.ini
Si quieres configurar pip para que solo busque en tu repositorio, usa
index-url
. y asegúrate de que no haya otros índices de paquetes configurados con el parámetro de configuraciónextra-index-url
.[global] index-url = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
La cadena
/simple/
al final de la ruta de acceso del repositorio indica que el que implementa la API de Python Simple Repository.- Unix:
Ahora, tu entorno de Python está configurado para autenticarse con Artifact Registry.
Autenticación del llavero de claves con credenciales de usuario
Después de configurar el llavero de claves, puedes usarlo con tus credenciales de usuario en gcloud CLI. Accede a Google Cloud CLI antes de conectarte en un repositorio de paquetes de Python.
Ejecuta el siguiente comando:
gcloud auth login
Autenticación de llavero de claves con credenciales de cuenta de servicio
Después de configurar el llavero de claves, puedes configurar un servicio para la autenticación.
- Crea un servicio. o elige una existente para la automatización.
- Otorga el rol específico de Artifact Registry a la cuenta de servicio para proporcionar acceso al repositorio.
Usa una de las siguientes opciones para autenticarte con tu cuenta de servicio:
Credenciales predeterminadas de la aplicación (recomendado)
Asigna la ubicación del archivo de claves de la cuenta de servicio a la variable
GOOGLE_APPLICATION_CREDENTIALS
para que el auxiliar de credenciales de Artifact Registry pueda obtener tu clave cuando se conecta con repositorios.export GOOGLE_APPLICATION_CREDENTIALS=KEY-FILE
Credenciales de la CLI de gcloud
Antes de conectarte a un repositorio, accede con la cuenta de servicio. Evitar esta opción si te conectas a repositorios desde VMs de Compute Engine ya que Artifact Registry encuentra las credenciales de la cuenta de servicio de la VM antes de las credenciales en gcloud CLI.
gcloud auth activate-service-account --key-file=KEY-FILE
Reemplaza KEY-FILE por la ruta de acceso a la cuenta de servicio. archivo de claves.
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:
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 autorización Rol de Artifact Registry a la cuenta de servicio para proporcionar el repositorio el acceso a los datos.
Ejecuta el siguiente comando para imprimir la configuración del repositorio en agregar a tu proyecto de Python.
gcloud artifacts print-settings python --project=PROJECT \ --repository=REPOSITORY \ --location=LOCATION \ --json-key=KEY-FILE
Reemplaza los siguientes valores:
- PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto predeterminado o actual.
- 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.
- KEY-FILE es la ruta al archivo de claves JSON de la cuenta de servicio.
Agrega la siguiente configuración al archivo
.pypirc
. La ubicación predeterminada es para el archivo de configuración de pip por usuario es la siguiente:- Linux y macOS:
$HOME/.pypirc
- Windows:
%USERPROFILE%\.pypirc
[distutils] index-servers = PYTHON-REPO-ID [PYTHON-REPO-ID] repository = https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/ username: _json_key_base64 password: KEY
Reemplaza los siguientes valores:
- PYTHON-REPO-ID es un ID del repositorio al que puedes hacer referencia. con herramientas como Twine.
- PROJECT es el ID del proyecto. Si se omite esta marca, se usa el proyecto predeterminado o actual.
- 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.
- KEY es la clave codificada en base64 en el archivo de claves de tu cuenta de servicio.
- Linux y macOS:
Agregar tu repositorio al archivo de configuración de pip El Ubicación del archivo de configuración pip dependerá de si quieres actualizar el archivo por usuario o el archivo a un entorno virtual que estás usando.
Para el archivo asociado con el usuario de tu sistema operativo:
- Unix:
$HOME/.config/pip/pip.conf
o$HOME/.pip/pip.conf
- macOS:
/Library/Application Support/pip/pip.conf
o$HOME/.config/pip/pip.conf
- Windows:
%APPDATA%\pip\pip.ini
o%USERPROFILE%\pip\pip.ini
Para entornos virtuales:
- Unix y macOS:
$VIRTUAL_ENV/pip.conf
- Windows:
%VIRTUAL_ENV%\pip.ini
Agrega la siguiente línea al archivo de configuración de pip:
[global] index-url = https://_json_key_base64:KEY@LOCATION-python.pkg.dev/PROJECT/REPOSITORY/simple/
- KEY es la clave privada en el archivo de claves de tu cuenta de servicio.
- La cadena
/simple/
al final de la ruta de acceso del repositorio indica que el que implementa la API de Python Simple Repository.
- Unix:
¿Qué sigue?
- Configura el acceso a los repositorios
- Obtén más información sobre cómo administrar repositorios
- Obtén más información sobre cómo administrar paquetes