Fazer o download de pacotes Python usando o acesso direto ao repositório

Depois de integrar o Assured OSS ao Security Command Center, os pacotes de software Assured Open Source são hospedados em um repositório do Artifact Registry criado em um projeto que você controla.

Nesta página, explicamos como se conectar ao repositório do Artifact Registry para Assured OSS para acessar e baixar diretamente os pacotes Python.

Este documento se aplica apenas ao nível Premium do Assured OSS. Para o nível gratuito, consulte Fazer o download de pacotes Python usando o acesso direto ao repositório para o nível gratuito.

Antes de começar

  1. Integre o Assured OSS ao Security Command Center.

  2. Valide a conectividade com o Assured OSS para as contas de serviço solicitadas.

  3. Instale a versão mais recente da CLI do Google Cloud.

  4. Se você já instalou a Google Cloud CLI, verifique se tem a versão mais recente executando o comando:

    gcloud components update
    

Configurar a autenticação

É possível fazer a autenticação no repositório de pacotes Python do Assured OSS usando um destes métodos:

  • Autenticar com um keyring
  • Autenticar com uma chave de conta de serviço

As seções a seguir descrevem como configurar esses métodos de autenticação.

Autenticar com chaveiro

Para usar o keyring do Python para autenticação no Artifact Registry, consulte Como fazer a autenticação com o keyring e as informações sobre a ordem de pesquisa de credenciais. Recomendamos que você use o chaveiro do Python para autenticação.

Para configurar o keyring para autenticação, faça o seguinte:

  1. Instale a biblioteca keyring:

    pip install keyring
    
  2. Instale o back-end do Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. Liste os back-ends para confirmar a instalação:

    keyring --list-backends
    

    A lista precisa incluir o seguinte:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Para informações sobre como configurar o Application Default Credentials, consulte Configurar a autenticação.

    Esta etapa garante que o auxiliar de credenciais do Assured OSS recebe a chave ao se conectar aos repositórios.

Autenticar com uma chave de conta de serviço

Autentique com uma chave de conta de serviço quando o aplicativo exigir a autenticação com um nome de usuário e uma senha.

Substitua o URL do repositório de pacotes https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple com o URL https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple

Substitua:

  • Substitua PROJECT_ID pelo ID do projeto que você selecionados ao configurar o software de código aberto Assured.
  • Substitua BASE64_KEY pela conta de serviço codificada em base64. Arquivo de chave JSON. Para converter todo o arquivo de chave JSON da conta de serviço em Base64, use o seguinte comando:

    BASE64_KEY=$(cat KEY_FILE_LOCATION | base64 -w 0)
    

    Substitua KEY_FILE_LOCATION pelo local do serviço. do arquivo de chave JSON da conta de serviço.

Instalar pacotes

As instruções a seguir presumem que você está usando o PyPI como o repositório para fazer o download das dependências. Se você usa outro é preciso usar etapas diferentes para fazer o download das dependências.

Instalar pacotes existentes no Assured OSS

Para especificar os pacotes Python do Assured OSS que você quer baixar, crie dois arquivos requirements.txt. Os arquivos de exemplo são os seguintes:

  • 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 fazer o download dos pacotes, execute os seguintes comandos:

  • Para fazer o download dos pacotes necessários que estão presentes no Artifact Registry para Assured OSS, execute o seguinte:

     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
    

    Considere o seguinte:

    • --require-hashes é opcional. Se incluídos, os hashes são especificados para todos os pacotes e para todas as versões de pacote no arquivo requirements.txt.
    • Substitua BASE64_KEY pelo arquivo JSON da conta de serviço codificado em base64.
    • -v é opcional. Se especificado, o comando fornece mais output.
  • Para fazer o download dos pacotes necessários que não estão presentes no Artifact Registry para o Assured OSS, execute o seguinte:

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

    Esse comando também faz o download as dependências ausentes dos pacotes que você baixou usando o comando anterior.

Listar todos os pacotes Python disponíveis no Assured OSS

Para usar uma API e conferir uma lista de todos os pacotes do Python no repositório do Artifact Registry, consulte Listar todos os pacotes do Python disponíveis no Assured OSS.

Geração do arquivo requirements-google.txt

Esta seção fornece informações adicionais sobre como gerar a Arquivo requirements-google.txt necessário para fazer o download do Python pacotes. Para fazer o download do hash e gerar o arquivo requirements-google.txt para seu ambiente, use uma das duas opções a seguir:

  • Usar um script para gerar um único arquivo de requisitos para todos os artefatos.

  • Faça o download de um arquivo de requisitos separado para cada artefato.

As seções a seguir fornecem mais informações sobre essas opções.

Opção 1: usar um script para gerar um único arquivo de requisitos para todos os artefatos

Use o script generator.sh para gerar um único arquivo requirements-google.txt para todos os pacotes Python (com os hashes) disponíveis com o Assured OSS para o sistema operacional Linux. O precisam atender a restrições, como versão do Python, arquitetura da máquina e sistema operacional. Depois, você pode excluir as versões do pacote e usar o arquivo resultante.

O script generator.sh é útil de duas maneiras:

  • Ele gera a lista mais recente de versões de pacote do Python disponíveis com Assured OSS que pode ser instalado com sucesso em seu sistema.
  • Ele gera o arquivo requirements-google.txt com todos os hashes.

O script necessário e o arquivo README.md estão disponíveis em um bucket do Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0), que pode ser feito o download usando a CLI do Google Cloud.

Para fazer o download do script e do arquivo README.md, siga estas etapas:

  1. Faça a autenticação com a conta de serviço para acessar o bucket do Cloud Storage usando o seguinte comando:

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

    Substitua KEY_FILE pelo caminho do arquivo que contém as credenciais da conta de serviço fornecidas durante a configuração.

  2. Faça o download de generator.sh para sua máquina usando o seguinte comando:

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

    Substitua PATH_TO_LOCAL_STORE pelo caminho local em que você quer salvar o arquivo baixado.

  3. Faça o download do arquivo README.md usando o seguinte comando:

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

    Substitua PATH_TO_LOCAL_STORE pelo caminho local em que você quer salvar o arquivo salvo. O arquivo README.md contém instruções sobre como usar o script.

Para executar o script, use os seguintes comandos:

  • Para gerar o arquivo requirements-google.txt, execute o seguinte comando:

     chmod +x generator.sh
     ./generator.sh
    
  • Para conferir as informações do pacote em um arquivo CSV, execute o seguinte comando:

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

Opção 2: fazer o download de requirements.txt para cada artefato necessário

Também é possível fazer o download de um arquivo requirements.txt separado (contendo o hash) para cada artefato Python e os combine em um único requirements.txt .

Os hashes de artefato estão disponíveis em um bucket do Cloud Storage para download usando a CLI gcloud. Os hashes de cada pacote e uma versão estão localizados no local do bucket gs://cloud-aoss/python/PACKAGE_NAME/VERSION do Cloud Storage.

Para fazer o download do arquivo requirements.txt, siga estas etapas:

  1. Autentique-se com a conta de serviço para acessar o bucket do Cloud Storage usando o seguinte comando:

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

    Substitua KEY_FILE pelo caminho do arquivo que contém as credenciais da conta de serviço.

  2. Faça o download do requirements.txt de um pacote e versão específicos para sua máquina local usando o seguinte comando:

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

    Substitua:

    • PACKAGE_NAME: o nome do pacote.
    • VERSION: a versão do pacote.
    • PATH_TO_LOCAL_STORE: o caminho local para onde você quer fazer o download do arquivo.

    Exemplo de comando:

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

    Arquivo requirements.txt de amostra:

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

    O conteúdo de cada arquivo requirements.txt pode ser combinado em um um único arquivo requirements-google.txt.

A seguir