Verifica delle firme nel Livello senza costi di Assured OSS

Questa pagina spiega come verificare la firma sugli artefatti di Assured OSS.

Questa pagina si applica solo al livello senza costi. Per il livello premium, vedi Accedere ai metadati di sicurezza e verificare i pacchetti.

Verifica del pacchetto

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 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 dei file:
      • Estensione del file jar per un pacchetto Java
      • Estensione file whl per un pacchetto Python

    --disable_certificate_verification è un flag facoltativo che, se utilizzato, salta la corrispondenza tra il certificato foglia e 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 della directory attuale.

    --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: ottieni 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 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 tratto dai metadati di Cloud Storage (buildInfo.json file). Come mostrato nell'esempio seguente, puoi ottenere l'URL 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 l'utilizzo dello 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 principale

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: 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 i seguenti 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 lo 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 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 dei metadati di Assured OSS a cui si accede utilizzando Cloud Storage.

Utilizzare 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 tra il certificato end-entity e 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 della 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 il file dei metadati di sicurezza.

Passaggio 1: recupera il file ZIP della firma e il file di metadati

Possiamo accedere ai metadati come descritto in Accesso ai metadati. Il file dei metadati sarà presente nel file signature.zip.

Esempio: contenuti di buildInfo.zip

buildInfo.json
signature.zip

buildInfo.json è il file dei metadati da verificare e signature.zip è il file ZIP della firma.

Passaggio 2: scarica il certificato principale

Utilizza il seguente link URL 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 i seguenti 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 root, puoi utilizzare l'URL o il percorso locale. Il file di dati sarebbe 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 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 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 all'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 al 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 il seguente 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 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 dello script di 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 all'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 al 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 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 dello 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 all'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 al 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 il seguente comando:
    –root_cert_local ROOT_CERT_LOCAL
    

    Sostituisci ROOT_CERT_LOCAL con il percorso locale del certificato radice.

Passaggi successivi