Descargar paquetes de Python mediante acceso directo al repositorio

Enterprise

Después de integrar Assured OSS con Security Command Center, los paquetes de software libre de Assured se alojan en un repositorio de Artifact Registry que se crea en un proyecto que controlas.

En esta página se explica cómo puedes conectarte al repositorio de Artifact Registry de Assured OSS para acceder directamente a los paquetes de Python y descargarlos.

Este documento solo se aplica al nivel premium de Assured OSS. Para el nivel gratuito, consulta Descargar paquetes de Python mediante acceso directo al repositorio en el nivel gratuito.

Antes de empezar

  1. Integra Assured OSS con Security Command Center.

  2. Valida la conectividad a Assured OSS para las cuentas de servicio solicitadas.

  3. Instala la versión más reciente de Google Cloud CLI.

  4. Si ya has instalado Google Cloud CLI, asegúrate de que tienes la versión más reciente ejecutando el siguiente comando:

    gcloud components update
    

Configurar la autenticación

Puedes autenticarte en el repositorio del paquete de Python de Assured OSS con uno de los siguientes métodos:

  • Autenticarse con un llavero
  • Autenticarse con una clave de cuenta de servicio

En las siguientes secciones se describe cómo configurar estos métodos de autenticación.

Autenticar con llavero

Para usar el llavero de Python para autenticarte en Artifact Registry, consulta la sección sobre autenticación con llavero y la información sobre el orden de búsqueda de credenciales. Te recomendamos que uses el llavero de Python para la autenticación.

Para configurar el llavero para la autenticación, haz lo siguiente:

  1. Instala la biblioteca keyring:

    pip install keyring
    
  2. Instala el backend de Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. Lista los back-ends para confirmar la instalación:

    keyring --list-backends
    

    La lista debe incluir lo siguiente:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Para obtener información sobre cómo configurar las credenciales predeterminadas de la aplicación, consulta Configurar la autenticación.

    Con este paso, te aseguras de que el asistente de credenciales de Assured OSS obtenga tu clave al conectarse con los repositorios.

Autenticarse con una clave de cuenta de servicio

Autentícate con una clave de cuenta de servicio cuando la aplicación requiera autenticación con un nombre de usuario y una contraseña.

Sustituye la URL del repositorio de paquetes https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple por la URL https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple.

Sustituye PROJECT_ID por el ID del proyecto que seleccionaste al configurar Assured Open Source Software.

Instalar paquetes

En las siguientes instrucciones se presupone que usas PyPI como repositorio para descargar tus dependencias. Si usas otro repositorio, debes seguir otros pasos para descargar las dependencias.

Instalar paquetes que ya estén en Assured OSS

Para especificar los paquetes de Python de software libre de Assured que quieras descargar, crea dos archivos requirements.txt. Los archivos de ejemplo son los siguientes:

  • requirements-google.txt

    # Packages present in Google's Artifact Registry
    
    urllib3==1.26.11 --hash=sha256:1cffe1aa066363a75c856f261c8fce62d87f7c40ce0f46453ea12bf652b12a13
    jsonschema==4.13.0 --hash=sha256:29895bfe55b93b75552fbdd1e09aa0c82b7c1c9395d4f267e10c7d43cd31a74e
    
  • requirements-pypi.txt

    # Packages present in Google's Artifact Registry are mentioned here so that pip
    # downloads their dependencies from PyPI.
    
    urllib3==1.26.11
    jsonschema==4.13.0
    
    # Below this comment, add any package version which you need but is NOT
    # present in Google's Artifact Registry and therefore needs to be downloaded from
    # PyPI.
    

Para descargar los paquetes, ejecuta los siguientes comandos:

  • Para descargar los paquetes necesarios que se encuentran en Artifact Registry para Assured OSS, ejecuta lo siguiente:

     pip install --require-hashes --requirement=requirements-google.txt \
         --index-url https://_json_key_base64:$BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python repo/simple -v \
         --no-deps
    

    Ten en cuenta lo siguiente:

    • --require-hashes es opcional. Si se incluyen, los hashes se especifican para todos los paquetes y para todas las versiones de los paquetes en el archivo requirements.txt.
    • -v es opcional. Si se especifica, el comando proporciona más resultados.
  • Para descargar los paquetes necesarios que no están presentes en Artifact Registry para Assured OSS, ejecuta lo siguiente:

     pip install --requirement=requirements-pypi.txt --index-url https://pypi.org/simple -v
    

    Este comando también descarga las dependencias que faltan de los paquetes que has descargado con el comando anterior.

Mostrar todos los paquetes de Python disponibles en Assured OSS

Para usar una API para obtener una lista de todos los paquetes de Python del repositorio de Artifact Registry, consulte List all Python packages available in Assured OSS (Lista de todos los paquetes de Python disponibles en Assured OSS).

Generar el archivo requirements-google.txt

En esta sección se proporciona información adicional sobre cómo generar el archivo requirements-google.txt que necesitas para descargar los paquetes de Python. Para descargar el hash y generar el archivo requirements-google.txt para tu entorno, puedes usar una de estas dos opciones:

  • Usa una secuencia de comandos para generar un único archivo de requisitos para todos los artefactos.

  • Descarga un archivo de requisitos independiente para cada artefacto.

En las siguientes secciones se ofrece más información sobre estas opciones.

Opción 1: Usar una secuencia de comandos para generar un único archivo de requisitos para todos los artefactos

Usa la secuencia de comandos generator.sh para generar un único archivo requirements-google.txt para todos los paquetes de Python (junto con sus hashes) disponibles con Assured OSS para el sistema operativo Linux. Los paquetes deben cumplir restricciones como la versión de Python, la arquitectura de la máquina y el sistema operativo. A continuación, puedes eliminar las versiones del paquete que no necesites y usar el archivo resultante.

La secuencia de comandos generator.sh te ayuda de dos formas:

  • Genera la lista más reciente de versiones de paquetes de Python disponibles con Assured OSS que se pueden instalar correctamente en tu sistema.
  • Genera el archivo requirements-google.txt junto con todos los hashes.

La secuencia de comandos necesaria y su archivo README.md están disponibles en un segmento de Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0), que se puede descargar con la CLI de Google Cloud.

Para descargar la secuencia de comandos y el archivo README.md, sigue estos pasos:

  1. Autentícate con la cuenta de servicio para acceder al segmento de Cloud Storage con el siguiente comando:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    Sustituye KEY_FILE por la ruta al archivo que contiene las credenciales de la cuenta de servicio proporcionadas durante la configuración.

  2. Descarga generator.sh en tu máquina con el siguiente comando:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh PATH_TO_LOCAL_STORE --recursive
    

    Sustituye PATH_TO_LOCAL_STORE por la ruta local donde quieras guardar el archivo descargado.

  3. Descarga el archivo README.md con el siguiente comando:

    gcloud storage cp gs://cloud-aoss/utils/python-requirements-txt/v1.0/README.md PATH_TO_LOCAL_STORE --recursive
    

    Sustituye PATH_TO_LOCAL_STORE por la ruta local donde quieras guardar el archivo descargado. El archivo README.md contiene instrucciones sobre cómo usar la secuencia de comandos.

Para ejecutar la secuencia de comandos, usa los siguientes comandos:

  • Para generar el archivo requirements-google.txt, ejecuta el siguiente comando:

     chmod +x generator.sh
     ./generator.sh
    
  • Para obtener la información del paquete en un archivo CSV, ejecuta el siguiente comando:

    chmod +x generator.sh
    ./generator.sh -i
    

Opción 2: Descargar requirements.txt para cada artefacto necesario

También puedes descargar un archivo requirements.txt independiente (que contiene el hash) para cada artefacto de Python y, a continuación, combinarlos en un solo archivo requirements.txt.

Los hashes de los artefactos están disponibles en un segmento de Cloud Storage, que se puede descargar con la CLI de gcloud. Los hashes de cada paquete y una versión se encuentran en la gs://cloud-aoss/python/PACKAGE_NAME/VERSIONubicación del segmento de Cloud Storage.

Para descargar el archivo requirements.txt, sigue estos pasos:

  1. Autentícate con la cuenta de servicio para acceder al segmento de Cloud Storage con el siguiente comando:

    gcloud auth activate-service-account --key-file KEY_FILE
    

    Sustituye KEY_FILE por la ruta al archivo que contiene las credenciales de la cuenta de servicio.

  2. Descarga el requirements.txt de un paquete y una versión específicos en tu máquina local con el siguiente comando:

    gcloud storage cp gs://cloud-aoss/python/PACKAGE_NAME/VERSION PATH_TO_LOCAL_STORE --recursive
    

    Haz los cambios siguientes:

    • PACKAGE_NAME: el nombre del paquete
    • VERSION: la versión del paquete
    • PATH_TO_LOCAL_STORE: la ruta local en la que quieres descargar el archivo

    Comando de ejemplo:

    gcloud storage cp gs://cloud-aoss/python/bleach/5.0.0 /tmp/bleach --recursive

    Archivo requirements.txt de ejemplo:

    bleach==5.0.0 \
     --hash=sha256:6d286e765bfd3e309209cfa1d063e4d46afa966dea8cb97431c02b1e3067d812
    

    El contenido de cada archivo requirements.txt se puede combinar en un único archivo requirements-google.txt.

Siguientes pasos