Transfira pacotes Python através do acesso direto ao repositório

Depois de integrar o Assured OSS com o Security Command Center, os pacotes do Assured Open Source Software são alojados num repositório do Artifact Registry criado num projeto que controla.

Esta página explica como pode estabelecer ligação ao repositório do Artifact Registry para o Assured OSS para aceder diretamente e transferir os pacotes Python.

Este documento aplica-se apenas ao nível premium do Assured OSS. Para o nível gratuito, consulte o artigo Transfira pacotes Python através do acesso direto ao repositório para o nível gratuito.

Antes de começar

  1. Integre o Assured OSS com o Security Command Center.

  2. Valide a conetividade ao OSS garantido para as contas de serviço pedidas.

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

  4. Se instalou a CLI Google Cloud anteriormente, certifique-se de que tem a versão mais recente executando o comando:

    gcloud components update
    

Configure a autenticação

Pode autenticar-se no repositório do pacote Python do Assured OSS através de um dos seguintes métodos:

  • Efetue a autenticação com um porta-chaves
  • Autentique com uma chave de conta de serviço

As secções seguintes descrevem como configurar estes métodos de autenticação.

Autentique com o porta-chaves

Para usar o keyring do Python para se autenticar no Artifact Registry, consulte o artigo sobre a autenticação com o keyring e as informações sobre a ordem de pesquisa de credenciais. Recomendamos que use o keyring do Python para a autenticação.

Para configurar o conjunto de chaves 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 deve incluir o seguinte:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Para obter informações sobre a configuração das Credenciais padrão da aplicação, consulte o artigo Configure a autenticação.

    Este passo garante que o auxiliar de credenciais do Assured OSS obtém a sua chave quando se liga aos repositórios.

Autentique com uma chave de conta de serviço

Autentique com uma chave de conta de serviço quando a aplicação requer autenticação com um nome de utilizador e uma palavra-passe.

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

Substitua PROJECT_ID pelo ID do projeto que selecionou quando configurou o software de código aberto garantido.

Instale pacotes

As instruções seguintes pressupõem que está a usar o PyPI como o repositório para transferir as suas dependências. Se estiver a usar outro repositório, tem de seguir passos diferentes para transferir dependências.

Instale pacotes existentes no Assured OSS

Para especificar os pacotes Python de OSS assegurado que quer transferir, crie dois ficheiros requirements.txt. Os ficheiros 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 transferir os pacotes, execute os seguintes comandos:

  • Para transferir os pacotes necessários presentes no Artifact Registry para o OSS garantido, 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 pacotes no ficheiro requirements.txt.
    • -v é opcional. Se for especificado, o comando dá mais resultados.
  • Para transferir os pacotes necessários que não estão presentes no Artifact Registry para o OSS garantido, execute o seguinte:

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

    Este comando também transfere as dependências em falta dos pacotes que transferiu através do comando anterior.

Apresente todos os pacotes Python disponíveis no Assured OSS

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

Gerar o ficheiro requirements-google.txt

Esta secção faculta informações adicionais sobre a geração do ficheiro requirements-google.txt necessário para transferir os pacotes Python. Para transferir o hash e gerar o ficheiro requirements-google.txt para o seu ambiente, pode usar uma das seguintes duas opções:

  • Use um script para gerar um único ficheiro de requisitos para todos os artefactos.

  • Transfira um ficheiro de requisitos separado para cada artefacto.

As secções seguintes fornecem mais informações acerca destas opções.

Opção 1: use um script para gerar um único ficheiro de requisitos para todos os artefactos

Use o script generator.sh para gerar um único ficheiro requirements-google.txt para todos os pacotes Python (juntamente com os respetivos hashs) disponíveis com o Assured OSS para o sistema operativo Linux. Os pacotes têm de cumprir restrições como a versão do Python, a arquitetura da máquina e o sistema operativo. Em seguida, pode eliminar as versões do pacote que não precisa e usar o ficheiro resultante.

O script generator.sh ajuda das duas seguintes formas:

  • Gera a lista mais recente de versões de pacotes Python disponíveis com o Assured OSS que podem ser instaladas com êxito no seu sistema.
  • Gera o ficheiro requirements-google.txt juntamente com todos os hashes.

O script necessário e o respetivo ficheiro README.md estão disponíveis num contentor do Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0) que pode ser transferido através da CLI do Google Cloud.

Para transferir o script e o ficheiro README.md, siga estes passos:

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

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

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

  2. Transfira o generator.sh para a sua máquina através do 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 onde quer guardar o ficheiro transferido.

  3. Transfira o ficheiro README.md através do 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 onde quer guardar o ficheiro transferido. O ficheiro README.md contém instruções sobre como usar o script.

Para executar o script, use os seguintes comandos:

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

     chmod +x generator.sh
     ./generator.sh
    
  • Para obter as informações do pacote num ficheiro CSV, execute o seguinte comando:

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

Opção 2: transfira o requirements.txt para cada artefacto necessário

Também pode transferir um ficheiro requirements.txt separado (que contém o hash) para cada artefacto do Python e, em seguida, combiná-los num único ficheiro requirements.txt.

Os hashes dos artefactos estão disponíveis num contentor do Cloud Storage que pode ser transferido através da CLI gcloud. Os hashes de cada pacote e uma versão encontram-se na localização do contentor do Cloud Storage.gs://cloud-aoss/python/PACKAGE_NAME/VERSION

Para transferir o ficheiro requirements.txt, siga estes passos:

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

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

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

  2. Transfira o requirements.txt de um pacote e uma versão específicos para a sua máquina local através do seguinte comando:

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

    Substitua o seguinte:

    • PACKAGE_NAME: o nome do pacote
    • VERSION: a versão do pacote
    • PATH_TO_LOCAL_STORE: o caminho local onde quer transferir o ficheiro

    Exemplo de comando:

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

    Ficheiro de exemplo requirements.txt:

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

    O conteúdo de cada ficheiro requirements.txt pode ser combinado num único ficheiro requirements-google.txt.

O que se segue?