Scaricare i pacchetti Python utilizzando l'accesso diretto al repository

Dopo integrare Assured OSS con Security Command Center, I pacchetti Assured Open Source Software ospitato in un repository Artifact Registry creato in un progetto controllo.

Questa pagina spiega come connettersi al repository Artifact Registry per Assured OSS di accedere e scaricare direttamente i pacchetti Python.

Questo documento si applica solo al livello premium di Assured OSS. Per il livello gratuito, consulta Scaricare i pacchetti Python utilizzando l'accesso diretto al repository per il livello gratuito.

Prima di iniziare

  1. Integra Assured OSS con Security Command Center.

  2. Convalidare la connettività ad Assured OSS per gli account di servizio richiesti.

  3. Installa la versione più recente di Google Cloud CLI.

  4. Se hai già installato Google Cloud CLI, assicurati di avere alla versione più recente eseguendo il comando:

    gcloud components update
    

Configura l'autenticazione

Puoi autenticarti nel repository del pacchetto Python di Assured OSS utilizzando uno dei seguenti metodi:

  • Eseguire l'autenticazione con un portachiavi
  • Autenticazione con una chiave dell'account di servizio

Le sezioni seguenti descrivono come configurare questi metodi di autenticazione.

Autenticazione con keyring

Per utilizzare il keyring Python per eseguire l'autenticazione in Artifact Registry, consulta la sezione sull'autenticazione il keyring informazioni sulle credenziali di ricerca ordine. I nostri suggerimenti di utilizzare il keyring Python per l'autenticazione.

Per configurare il keyring per l'autenticazione:

  1. Installa la libreria keyring:

    pip install keyring
    
  2. Installa il backend Artifact Registry:

    pip install keyrings.google-artifactregistry-auth
    
  3. Elenca i backend per confermare l'installazione:

    keyring --list-backends
    

    L'elenco deve includere quanto segue:

    • ChainerBackend(priority:10)
    • GooglePythonAuth(priority:9)
  4. Per informazioni sulla configurazione di Credenziali predefinite dell'applicazione: consulta la sezione Configurare l'autenticazione.

    Questo passaggio garantisce che l'helper delle credenziali Assured OSS ottiene la chiave durante la connessione con i repository.

Autenticazione con una chiave dell'account di servizio

Esegui l'autenticazione con una chiave dell'account di servizio quando l'applicazione richiede l'autenticazione con un nome utente e una password.

Sostituisci l'URL del repository di pacchetti https://us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple con l'URL https://_json_key_base64:BASE64_KEY@us-python.pkg.dev/PROJECT_ID/assuredoss-python/simple

Sostituisci quanto segue:

  • Sostituisci PROJECT_ID con l'ID del progetto che hai selezionato quando hai configurato Assured Open Source Software.
  • Sostituisci BASE64_KEY con l'account di servizio con codifica base64 JSON. Per convertire l'intero file JSON della chiave dell'account di servizio in codifica base64, utilizza il seguente comando:

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

    Sostituisci KEY_FILE_LOCATION con la posizione del servizio il file di chiavi JSON dell'account.

Installa i pacchetti

Le istruzioni riportate di seguito presuppongono che tu stia utilizzando PyPI come repository per scaricare le dipendenze. Se utilizzi un altro repository, devi seguire procedure diverse per scaricare le dipendenze.

Installa i pacchetti esistenti in Assured OSS

Per specificare i pacchetti Python Assured OSS che vuoi scaricare, crea due file requirements.txt. I file di esempio sono i seguenti:

  • 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.
    

Per scaricare i pacchetti, esegui i seguenti comandi:

  • Per scaricare i pacchetti richiesti presenti nell'etichetta Artifact Registry per Assured OSS, esegui questo comando:

     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
    

    Considera quanto segue:

    • Il valore --require-hashes è facoltativo. Se inclusi, gli hash vengono specificati per tutti di pacchetti e per tutte le versioni di pacchetto nel file requirements.txt.
    • Sostituisci BASE64_KEY con il file JSON dell'account di servizio codificato in base64.
    • Il valore -v è facoltativo. Se specificato, il comando fornisce più output.
  • Per scaricare i pacchetti richiesti che non sono presenti nell'Artifact Registry per Assured OSS, esegui quanto segue:

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

    Questo comando scarica anche le dipendenze mancanti dei pacchetti che hai scaricato utilizzando il comando precedente.

Elenca tutti i pacchetti Python disponibili in Assured OSS

Per utilizzare un API per ottenere un elenco di tutti i pacchetti Python nel repository Artifact Registry, consulta Elenca tutti i pacchetti Python disponibili in Assured OSS.

Generazione del file requirements-google.txt

Questa sezione fornisce ulteriori informazioni sulla generazione del file requirements-google.txt necessario per scaricare i pacchetti Python. Per scaricare l'hash e generare il file requirements-google.txt per il tuo ambiente, puoi utilizzare una delle due opzioni seguenti:

  • Utilizza uno script per generare un singolo file dei requisiti per tutti gli artefatti.

  • Scarica un file dei requisiti separato per ogni elemento.

Le sezioni seguenti forniscono ulteriori informazioni su queste opzioni.

Opzione 1: utilizza uno script per generare un singolo file dei requisiti per tutti gli elementi

Utilizza lo script generator.sh per generare un unico requirements-google.txt file per tutti i pacchetti Python (insieme ai relativi hash) disponibili con Assured OSS per il sistema operativo Linux. I pacchetti devono soddisfare vincoli quali la versione di Python, l'architettura della macchina e il sistema operativo. Puoi quindi eliminare le versioni del pacchetto che non ti occorrono e utilizzare il file risultante.

Lo script generator.sh può essere utile nei seguenti due modi:

  • Genera l'elenco più recente delle versioni dei pacchetti Python disponibili con Assured OSS, che possono essere installati correttamente sul tuo sistema.
  • Genera il file requirements-google.txt insieme a tutti gli hash.

Lo script richiesto e il relativo file README.md sono disponibili in un bucket Cloud Storage (gs://cloud-aoss/utils/python-requirements-txt/v1.0) che può essere scaricato utilizzando Google Cloud CLI.

Per scaricare lo script e il file README.md:

  1. Esegui l'autenticazione con l'account di servizio per accedere al bucket Cloud Storage utilizzando il seguente comando:

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

    Sostituisci KEY_FILE con il percorso del file contenente le credenziali dell'account di servizio fornito durante la configurazione.

  2. Scarica generator.sh sulla tua macchina utilizzando il seguente comando:

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

    Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi salvare il file scaricato.

  3. Scarica il file README.md utilizzando il seguente comando:

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

    Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi salvare il file scaricato. Il file README.md contiene istruzioni su come utilizzare lo script.

Per eseguire lo script, utilizza i comandi seguenti:

  • Per generare il file requirements-google.txt, esegui questo comando:

     chmod +x generator.sh
     ./generator.sh
    
  • Per ottenere le informazioni sul pacchetto in un file CSV, esegui questo comando:

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

Opzione 2: scarica requirements.txt per ogni elemento richiesto

Puoi anche scaricare un file requirements.txt (contenente l'hash) distinto per ogni elemento Python e poi combinarli in un unico file requirements.txt.

Gli hash degli elementi sono disponibili in un bucket Cloud Storage che può essere scaricato utilizzando l'interfaccia a riga di comando gcloud. Hash per ogni pacchetto e una versione si trovano nel percorso gs://cloud-aoss/python/PACKAGE_NAME/VERSION Località del bucket Cloud Storage.

Per scaricare il file requirements.txt:

  1. Esegui l'autenticazione con l'account di servizio per accedere al bucket Cloud Storage utilizzando il seguente comando:

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

    Sostituisci KEY_FILE con il percorso del file contenente le credenziali dell'account di servizio.

  2. Scarica requirements.txt di un pacchetto e di una versione specifici sul tuo macchina locale utilizzando il comando seguente:

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

    Sostituisci quanto segue:

    • PACKAGE_NAME: nome del pacchetto
    • VERSION: la versione del pacchetto
    • PATH_TO_LOCAL_STORE: il percorso locale in cui vuoi scaricare il file

    Comando di esempio:

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

    Esempio di file requirements.txt:

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

    I contenuti di ogni file requirements.txt possono essere combinati in un singolo file requirements-google.txt.

Passaggi successivi