Verifica delle firme nel Livello senza costi di Assured OSS

Per confermare l'integrità dei pacchetti open source selezionati, puoi verificare la firma sugli artefatti di Assured Open Source Software (Assured OSS).

Questo documento si applica solo al Livello senza costi. Per il livello Premium, consulta Accedi ai metadati di sicurezza e verifica i pacchetti.

Verifica dei pacchetti

Le firme dei pacchetti vengono archiviate separatamente dal pacchetto in un bucket Cloud Storage in formato zip. Puoi verificare le firme utilizzando lo strumento di verifica di Assured OSS (aoss-verifier) o uno script di verifica.

Utilizzo dello strumento aoss-verifier

Prima di utilizzare questo strumento, assicurati che Go sia installato sul tuo sistema. Se Go non è installato, installalo dal sito web di Go.

  1. Per verificare l'autenticità e l'integrità dei pacchetti software open source, installa lo strumento aoss-verifier.

  2. Esporta $(go env GOPATH)/bin ed esegui il comando aoss-verifier verify-package.

    aoss-verifier verify-package \
       --language LANGUAGE \
       --package_id PACKAGE_ID \
       --version VERSION \
       --artifact_path ARTIFACT_PATH \
       [--disable_certificate_verification] \
       [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \
       [--disable_deletes]
    

    Sostituisci quanto segue:

    • LANGUAGE: il linguaggio del pacchetto di programmazione, java o python. Il valore deve essere in minuscolo.
    • PACKAGE_ID: per Java è groupId:artifactId e per Python è packageName. Il valore deve essere in minuscolo.
    • VERSION: la versione del pacchetto.
    • ARTIFACT_PATH: il percorso del file di dati nella directory locale che vuoi verificare. Utilizza le seguenti estensioni dei nomi file:
      • Estensione del file jar per un pacchetto Java
      • Estensione del file whl per un pacchetto Python

    --disable_certificate_verification è un flag facoltativo che, se utilizzato, ignora la corrispondenza del certificato foglia con il certificato radice tramite la catena di certificati.

    --temp_downloads_path è un flag facoltativo per impostare il percorso in cui vuoi scaricare i file. (sostituisci TEMP_DOWNLOADS_DIR_PATH). Se questo flag non è impostato, i file vengono scaricati nella cartella tmp_downloads nella directory corrente.

    --disable_deletes è un flag facoltativo che conserva i file scaricati. Per impostazione predefinita, lo strumento pulisce tutti i file scaricati.

Per ulteriori informazioni, consulta il file README.

Utilizzo dello script di verifica

Questa sezione descrive come utilizzare uno script di verifica per verificare le firme dei pacchetti scaricati.

Passaggio 1: recupera l'URL della firma

L'URL del file ZIP è disponibile nei metadati di sicurezza di ogni pacchetto. L'esempio seguente è un campione dei metadati di Container Analysis.

Come mostrato nell'esempio seguente, puoi trovare l'URL del file ZIP della firma nel campo description: digestUrl.

package {
  distribution {
    cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
    maintainer: "<nil>"
    url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3.jar"
    description: "{\n \"artifactMetadataList\": [\n {\n \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3_binary_2022-10-12T06:54:05Z.zip\"\n }\n ]\n}"
  }
  distribution {
    cpe_uri: "cpe:2.3:a:JAVA::com.fasterxml.jackson.core:jackson-databind:2.13.3:*:*:*:*:*:*:*"
    url: "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/com/fasterxml/jackson/core/jackson-databind/2.13.3/jackson-databind-2.13.3-sources.jar"
    description: "{\n  \"digestUrl\": \"gs://cloud-aoss/java/com.fasterxml.jackson.core:jackson-databind/2.13.3/jackson-databind-2.13.3-sources_source_2022-10-12T06:54:05Z.zip\"\n}"
  }
}

Esempio di metadati di Cloud Storage (buildInfo.json file). Come mostrato nell'esempio seguente, puoi ottenere l'URL del file ZIP della firma dal campo externalRefs : referenceLocator.

"packages": [
        {
            "SPDXID": "SPDXRef-Package-logback-core-1.2.11.jar",
            "checksums": [
                {
                    "algorithm": "SHA256",
                    "checksumValue": "c847e0e310acda8bc1347c9d9cc051e91210b9f943e131fceb5034c2f0c9a5d8"
                }
            ],
            "downloadLocation": "https://us-maven.pkg.dev/cloud-aoss/cloud-aoss-java/ch/qos/logback/logback-core/1.2.11/logback-core-1.2.11.jar",
            "externalRefs": [
                {
                    "referenceCategory": "SECURITY",
                    "referenceLocator": "cpe:2.3:a:*:JAVA\\:\\:ch\\.qos\\.logback\\:logback\\-core:1\\.2\\.11:*:*:*:*:*:*:*",
                    "referenceType": "cpe23Type"
                },
                {
                    "referenceCategory": "OTHER",
                    "referenceLocator": "gs://cloud-aoss/java/ch.qos.logback:logback-core/1.2.11/logback-core-1.2.11_binary_2022-10-12T14:19:11Z.zip",
                    "referenceType": "digestURL"
                }
            ],

Puoi utilizzare il file ZIP della firma locale per la verifica manuale o l'URL di Cloud Storage direttamente per utilizzare lo script di verifica. Puoi scaricare il file signature.zip seguendo questi passaggi:

  1. Configura l'autenticazione utilizzando le Credenziali predefinite dell'applicazione (ADC).

  2. Scarica signature.zip utilizzando il seguente comando:

      gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursive
    

    Sostituisci quanto segue:

    • SIGNATURE_ZIP_URL: l'URL del file ZIP della firma.
    • PATH_TO_LOCAL_STORE: il percorso locale in cui vuoi scaricare il file.

Passaggio 2: scarica il certificato radice

Per accedere al certificato radice, utilizza il seguente URL:

https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

Puoi scaricare il certificato localmente o utilizzare direttamente il link del certificato. Per scaricare il certificato, esegui questo comando:

curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi scaricare il certificato.

Passaggio 3: recupera la posizione del file del pacchetto

Il file che verificheremo è il file jar per i pacchetti Java e il file wheel per i pacchetti Python. Questo file sarà il PATH_TO_DATA_FILE per la verifica.

Passaggio 4: sottoponi tutto a verifica

Puoi verificare manualmente il file ZIP della firma seguendo i passaggi descritti in Verifica manuale della firma o utilizzare lo script di verifica.

Per eseguire la verifica utilizzando lo script di verifica, esegui questi comandi:

  1. Scarica lo script di verifica e concedi le autorizzazioni.

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. Esegui lo script di verifica e verifica. Puoi utilizzare gli URL remoti o i percorsi locali per il file ZIP della firma e il certificato radice.

      ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url SIGNATURE_ZIP_URL --root_cert_url ROOT_CERT_URL
    

    Sostituisci quanto segue:

    • PATH_TO_DATA_FILE con il percorso del file del pacchetto identificato nel passaggio 3
    • SIGNATURE_ZIP_URL con l'URL del file ZIP della firma ottenuto nel passaggio 1.
    • ROOT_CERT_URL con l'URL del certificato radice ottenuto nel passaggio 2.

Verifica dei metadati

Questa sezione spiega come verificare la firma sui metadati di Assured OSS a cui accedi utilizzando Cloud Storage.

Utilizza lo strumento aoss-verifier

Utilizza lo strumento aoss-verifier per verificare i metadati.

Prima di utilizzare questo strumento, installa Go.

  1. Installa lo strumento aoss-verifier.

  2. Esporta $(go env GOPATH)/bin ed esegui il comando aoss-verifier verify-metadata.

    aoss-verifier verify-metadata \
       --metadata_type TYPE \
       --language LANGUAGE \
       --package_id PACKAGE_ID \
       --version VERSION \
       [--disable_certificate_verification] \
       [--temp_downloads_path TEMP_DOWNLOADS_DIR_PATH] \
       [--disable_deletes]
    

    Sostituisci quanto segue:

    • TYPE: i valori possibili sono buildinfo, vexinfo e healthinfo.
    • LANGUAGE: il linguaggio del pacchetto di programmazione, java o python. Il valore deve essere in minuscolo.
    • PACKAGE_ID: per Java, il formato è groupId:artifactId. Per Python, il formato è packageName. Il valore deve essere in minuscolo.
    • VERSION: la versione del pacchetto.

    --disable_certificate_verification è un flag facoltativo che, se utilizzato, ignora la corrispondenza del certificato foglia con il certificato radice tramite la catena di certificati.

    --temp_downloads_path è un flag facoltativo per impostare il percorso in cui vuoi scaricare i file (sostituisci TEMP_DOWNLOADS_DIR_PATH). Se questo flag non è impostato, i file vengono scaricati nella cartella tmp_downloads nella directory corrente.

    --disable_deletes è un flag facoltativo che conserva i file scaricati. Per impostazione predefinita, lo strumento pulisce tutti i file scaricati.

Per saperne di più, consulta il file README.

Utilizzo dello script di verifica

Questa sezione descrive come utilizzare uno script di verifica per verificare il file dei metadati di sicurezza.

Passaggio 1: scarica il file ZIP della firma e il file dei metadati

Possiamo accedere ai metadati come descritto in Accedi ai metadati. Il file dei metadati sarà presente insieme al file signature.zip.

Esempio: contenuti di buildInfo.zip

buildInfo.json
signature.zip

buildInfo.json è il file dei metadati che deve essere verificato e signature.zip è il file ZIP della firma.

Passaggio 2: scarica il certificato radice

Utilizza il seguente link per ottenere il certificato radice:

https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

Puoi scaricare il certificato localmente o utilizzare direttamente il link del certificato. Per scaricare il certificato, esegui questo comando:

curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt

Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi scaricare il certificato.

Passaggio 3: verifica

Puoi verificare signature.zip utilizzando la verifica manuale o utilizzando lo script di verifica.

Per eseguire la verifica utilizzando lo script di verifica, esegui questi comandi:

  1. Scarica lo script di verifica e concedi le autorizzazioni.

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. Esegui lo script di verifica e verifica. Devi utilizzare il percorso locale per il file ZIP della firma. Per il certificato radice, puoi utilizzare l'URL o il percorso locale. Il file di dati sarà il file di metadati che stiamo verificando: buildInfo.json, vexInfo.json o healthInfo.json.

      ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URL
    

    Sostituisci quanto segue:

    • PATH_TO_DATA_FILE con il file dei metadati che stiamo verificando, come ottenuto nel passaggio 1.

    • SIGNATURE_LOCAL_PATH con l'URL del file ZIP della firma ottenuto nel passaggio 1.

    • ROOT_CERT_URL con l'URL del certificato radice ottenuto nel passaggio 2.

      Se vuoi utilizzare un certificato locale già scaricato, utilizza questa opzione:

      --root_cert_local ROOT_CERT_LOCAL
      

      Sostituisci ROOT_CERT_LOCAL con il percorso del certificato locale.

Verifica dello script di utilità

Assured OSS fornisce tre script di utilità. Questa sezione descrive come verificare la firma di questi script.

Generatore Python Requirements.txt

Accedi alla firma di questo file all'indirizzo gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip. Puoi verificare la signature.zip utilizzando la verifica manuale o utilizzando lo script di verifica. Per verificare rapidamente la firma utilizzando lo script di verifica, segui questi passaggi:

  1. Configura l'autenticazione.

  2. Se non hai ancora scaricato il file di script del generatore requirements.txt, scaricalo.

     gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursive
    
  3. Recupera il certificato radice. Il link dell'URL è https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt Puoi scaricare il certificato localmente o utilizzare direttamente il link del certificato. Per scaricare il certificato, esegui questo comando:

    curl -o PATH_TO_LOCAL_STORE/ca.crt "https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt"
    

    Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi scaricare il certificato.

  4. Scarica lo script di verifica se non l'hai ancora fatto.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. Esegui lo script di verifica e verifica.

    ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip" --root_cert_url ROOT_CERT_URL
    

    Sostituisci quanto segue:

    • PATH_TO_DATA_FILE con il percorso locale dello script generator.sh che vogliamo verificare, come ottenuto nel passaggio 2.
    • ROOT_CERT_URL con l'URL del certificato radice. Se vuoi utilizzare un certificato locale già scaricato, esegui questo comando:
    –root_cert_local ROOT_CERT_LOCAL
    

    Sostituisci ROOT_CERT_LOCAL con il percorso locale del certificato radice.

Script di verifica della firma

Accedi alla firma di questo file all'indirizzo gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip. Puoi verificare la signature.zip utilizzando la verifica manuale o utilizzando lo script di verifica. Per verificare rapidamente la firma utilizzando lo script di verifica, segui questi passaggi:

  1. Configura l'autenticazione.

  2. Se non hai ancora scaricato il file di script per la verifica della firma, scaricalo.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  3. Recupera il certificato radice. Il link dell'URL è https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt Puoi scaricare il certificato localmente o utilizzare direttamente il link del certificato. Comando per scaricare il certificato:

    curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
    

    Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi scaricare il certificato.

  4. Esegui lo script di verifica e verifica.

    ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip" --root_cert_url ROOT_CERT_URL
    

    Sostituisci quanto segue:

    PATH_TO_DATA_FILE con il percorso locale dello script di verifica che vogliamo verificare, come ottenuto nel passaggio 2. ROOT_CERT_URL con l'URL del certificato radice. Se vuoi utilizzare un certificato locale già scaricato, utilizza questa opzione:

    –root_cert_local ROOT_CERT_LOCAL
    

    Sostituisci ROOT_CERT_LOCAL con il percorso locale del certificato radice.

Scarica lo script dei metadati

Accedi alla firma di questo file all'indirizzo gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip. Puoi verificare la signature.zip utilizzando la verifica manuale o utilizzando lo script di verifica. Per verificare rapidamente la firma utilizzando lo script di verifica, segui questi passaggi:

  1. Configura l'autenticazione.

  2. Se non hai ancora scaricato il file di script download_metadata.py, scaricalo.

    gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursive
    
  3. Recupera il certificato radice. Il link dell'URL è https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt Puoi scaricare il certificato localmente o utilizzare direttamente il link del certificato.

    Per scaricare il certificato, esegui questo comando:

    curl -o PATH_TO_LOCAL_STORE/ca.crt https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt
    

    Sostituisci PATH_TO_LOCAL_STORE con il percorso locale in cui vuoi scaricare il certificato.

  4. Scarica lo script di verifica.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. Esegui lo script di verifica e verifica.

    ./signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_url gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip --root_cert_url ROOT_CERT_URL
    

    Sostituisci quanto segue:

    • PATH_TO_DATA_FILE con il percorso locale dello script download_metadata.py che vogliamo verificare, come ottenuto nel passaggio 2.
    • ROOT_CERT_URL con l'URL del certificato radice. Se vuoi utilizzare un certificato locale già scaricato, esegui questo comando:
    –root_cert_local ROOT_CERT_LOCAL
    

    Sostituisci ROOT_CERT_LOCAL con il percorso locale del certificato radice.

Passaggi successivi