Valider les signatures dans le niveau sans frais Assured OSS

Pour confirmer l'intégrité des packages Open Source sélectionnés, vous pouvez vérifier la signature sur les artefacts Assured Open Source Software (Assured OSS).

Ce document ne s'applique qu'au niveau sans frais. Pour le niveau Premium, consultez Accéder aux métadonnées de sécurité et valider les packages.

Validation du package

Les signatures de package sont stockées séparément du package dans un bucket Cloud Storage au format ZIP. Vous pouvez valider les signatures à l'aide de l'outil de validation Assured OSS (aoss-verifier) ou d'un script de validation.

Utiliser l'outil aoss-verifier

Avant d'utiliser cet outil, assurez-vous que Go est installé sur votre système. Si Go n'est pas installé, installez-le depuis le site Web de Go.

  1. Pour vérifier l'authenticité et l'intégrité des packages logiciels Open Source, installez l'outil aoss-verifier.

  2. Exportez $(go env GOPATH)/bin, puis exécutez la commande 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]
    

    Remplacez les éléments suivants :

    • LANGUAGE : langage du package de programmation, soit java, soit python. La valeur doit être en minuscules.
    • PACKAGE_ID : pour Java, il s'agit de groupId:artifactId et pour Python, de packageName. La valeur doit être en minuscules.
    • VERSION : version du package.
    • ARTIFACT_PATH : chemin d'accès au fichier de données de votre répertoire local que vous souhaitez valider. Utilisez les extensions de nom de fichier suivantes :
      • Extension de fichier jar pour un package Java
      • Extension de fichier whl pour un package Python

    --disable_certificate_verification est un flag facultatif qui permet d'ignorer la mise en correspondance du certificat d'entité finale avec le certificat racine via la chaîne de certificats, le cas échéant.

    --temp_downloads_path est un flag facultatif permettant de définir le chemin d'accès du dossier dans lequel vous souhaitez télécharger les fichiers. (remplacez TEMP_DOWNLOADS_DIR_PATH). Si ce flag n'est pas défini, les fichiers sont téléchargés dans le dossier tmp_downloads du répertoire actuel.

    --disable_deletes est un flag facultatif qui permet de conserver les fichiers téléchargés. Par défaut, l'outil nettoie tous les fichiers téléchargés.

Pour en savoir plus, consultez le fichier README.

Utiliser un script de validation

Cette section explique comment utiliser un script de validation pour vérifier les signatures des packages téléchargés.

Étape 1 : Obtenir l'URL de signature

L'URL du fichier ZIP est disponible dans les métadonnées de sécurité de chaque package. L'exemple suivant est un extrait des métadonnées Container Analysis.

Comme illustré dans l'exemple suivant, vous trouverez l'URL du fichier ZIP de signature dans le champ 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}"
  }
}

Exemple de métadonnées Cloud Storage (buildInfo.json file). Comme illustré dans l'exemple suivant, vous pouvez obtenir l'URL du fichier ZIP de signature à partir du champ 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"
                }
            ],

Vous pouvez utiliser le fichier ZIP de signature locale pour la validation manuelle ou l'URL Cloud Storage directement pour utiliser le script de validation. Vous pouvez télécharger le fichier signature.zip en procédant comme suit :

  1. Configurez l'authentification à l'aide des Identifiants par défaut de l'application (ADC).

  2. Téléchargez signature.zip à l'aide de la commande suivante :

      gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursive
    

    Remplacez les éléments suivants :

    • SIGNATURE_ZIP_URL : URL du fichier ZIP de la signature.
    • PATH_TO_LOCAL_STORE : chemin d'accès local où vous souhaitez télécharger le fichier.

Étape 2 : Obtenir le certificat racine

Pour accéder au certificat racine, utilisez l'URL suivante :

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

Vous pouvez télécharger le certificat localement ou utiliser directement le lien du certificat. Pour télécharger le certificat, exécutez la commande suivante :

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

Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.

Étape 3 : Obtenir l'emplacement du fichier du package

Le fichier que nous allons vérifier est le fichier JAR pour les packages Java et le fichier wheel pour les packages Python. Ce fichier serait le PATH_TO_DATA_FILE pour la validation.

Étape 4 : Validation

Vous pouvez valider manuellement le fichier ZIP de signature en suivant les étapes de la section Validation manuelle de la signature ou utiliser le script de validation.

Pour effectuer la vérification à l'aide du script de vérification, exécutez les commandes suivantes :

  1. Téléchargez le script de validation et accordez les autorisations.

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. Exécutez le script de vérification et vérifiez. Vous pouvez utiliser les URL distantes ou les chemins d'accès locaux pour le fichier ZIP de signature et le certificat racine.

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

    Remplacez les éléments suivants :

    • PATH_TO_DATA_FILE par le chemin d'accès au fichier de package identifié à l'étape 3.
    • SIGNATURE_ZIP_URL par l'URL du fichier ZIP de signature obtenue à l'étape 1.
    • ROOT_CERT_URL par l'URL du certificat racine obtenue à l'étape 2.

Vérification des métadonnées

Cette section explique comment vérifier la signature des métadonnées Assured OSS auxquelles vous accédez à l'aide de Cloud Storage.

Utiliser l'outil aoss-verifier

Utilisez l'outil aoss-verifier pour valider les métadonnées.

Avant d'utiliser cet outil, installez Go.

  1. Installez l'outil aoss-verifier.

  2. Exportez $(go env GOPATH)/bin, puis exécutez la commande 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]
    

    Remplacez les éléments suivants :

    • TYPE : les valeurs possibles sont buildinfo, vexinfo et healthinfo.
    • LANGUAGE : langage du package de programmation, soit java, soit python. La valeur doit être en minuscules.
    • PACKAGE_ID : pour Java, le format est groupId:artifactId. Pour Python, le format est packageName. La valeur doit être en minuscules.
    • VERSION : version du package.

    --disable_certificate_verification est un flag facultatif qui permet d'ignorer la mise en correspondance du certificat d'entité finale avec le certificat racine via la chaîne de certificats, le cas échéant.

    --temp_downloads_path est un flag facultatif permettant de définir le chemin d'accès du dossier dans lequel vous souhaitez télécharger les fichiers (remplacez TEMP_DOWNLOADS_DIR_PATH). Si ce flag n'est pas défini, les fichiers sont téléchargés dans le dossier tmp_downloads du répertoire actuel.

    --disable_deletes est un flag facultatif qui permet de conserver les fichiers téléchargés. Par défaut, l'outil nettoie tous les fichiers téléchargés.

Pour plus d'informations, consultez le fichier README.

Utiliser un script de validation

Cette section explique comment utiliser un script de vérification pour vérifier le fichier de métadonnées de sécurité.

Étape 1 : Obtenez le fichier ZIP de signature et le fichier de métadonnées

Nous pouvons accéder aux métadonnées comme indiqué dans Accéder aux métadonnées. Le fichier de métadonnées est présent avec le fichier signature.zip.

Exemple : contenu de buildInfo.zip

buildInfo.json
signature.zip

buildInfo.json est le fichier de métadonnées à valider et signature.zip est le fichier ZIP de signature.

Étape 2 : Obtenir le certificat racine

Utilisez le lien URL suivant pour obtenir le certificat racine :

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

Vous pouvez télécharger le certificat localement ou utiliser directement le lien du certificat. Pour télécharger le certificat, exécutez la commande suivante :

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

Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.

Étape 3 : Validation

Vous pouvez valider signature.zip manuellement ou à l'aide du script de validation.

Pour effectuer la vérification à l'aide du script de vérification, exécutez les commandes suivantes :

  1. Téléchargez le script de validation et accordez les autorisations.

      gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
      chmod +x signatureverification.sh
    
  2. Exécutez le script de vérification et vérifiez. Vous devez utiliser le chemin d'accès local pour le fichier ZIP de signature. Pour le certificat racine, vous pouvez utiliser l'URL ou le chemin d'accès local. Le fichier de données est le fichier de métadonnées que nous vérifions : buildInfo.json, vexInfo.json ou healthInfo.json.

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

    Remplacez les éléments suivants :

    • PATH_TO_DATA_FILE par le fichier de métadonnées que nous vérifions, tel qu'obtenu à l'étape 1.

    • SIGNATURE_LOCAL_PATH par l'URL du fichier ZIP de signature obtenue à l'étape 1.

    • ROOT_CERT_URL par l'URL du certificat racine obtenue à l'étape 2.

      Si vous souhaitez utiliser un certificat local déjà téléchargé, utilisez plutôt cette option :

      --root_cert_local ROOT_CERT_LOCAL
      

      Remplacez ROOT_CERT_LOCAL par le chemin d'accès au certificat local.

Vérification du script utilitaire

Assured OSS fournit trois scripts utilitaires. Cette section explique comment vérifier la signature de ces scripts.

Générateur Requirements.txt Python

Accédez à la signature de ce fichier à l'adresse gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator-sig.zip. Vous pouvez valider le signature.zip manuellement ou à l'aide du script de validation. Pour vérifier rapidement la signature à l'aide du script de vérification, procédez comme suit :

  1. Configurez l'authentification.

  2. Si vous n'avez pas encore téléchargé le fichier de script du générateur requirements.txt, téléchargez-le.

     gcloud storage cp "gs://cloud-aoss/utils/python-requirements-txt/v1.0/generator.sh" . --recursive
    
  3. Récupérez le certificat racine. Le lien URL est https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt. Vous pouvez télécharger le certificat localement ou utiliser directement le lien du certificat. Pour télécharger le certificat, exécutez la commande suivante :

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

    Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.

  4. Téléchargez le script de validation si vous ne l'avez pas déjà fait.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. Exécutez le script de vérification et vérifiez.

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

    Remplacez les éléments suivants :

    • PATH_TO_DATA_FILE par le chemin d'accès local du script generator.sh que nous voulons vérifier, tel qu'obtenu à l'étape 2.
    • ROOT_CERT_URL par l'URL du certificat racine. Si vous souhaitez utiliser un certificat local déjà téléchargé, exécutez la commande suivante :
    –root_cert_local ROOT_CERT_LOCAL
    

    Remplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.

Script de validation de la signature

Accédez à la signature de ce fichier à l'adresse gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification-sig.zip. Vous pouvez valider le signature.zip manuellement ou à l'aide du script de validation. Pour vérifier rapidement la signature à l'aide du script de vérification, procédez comme suit :

  1. Configurez l'authentification.

  2. Si vous n'avez pas encore téléchargé le fichier de script de validation de signature, téléchargez-le.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  3. Récupérez le certificat racine. Le lien URL est https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt. Vous pouvez télécharger le certificat localement ou utiliser directement le lien du certificat. Commande pour télécharger le certificat :

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

    Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.

  4. Exécutez le script de vérification et vérifiez.

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

    Remplacez les éléments suivants :

    PATH_TO_DATA_FILE par le chemin d'accès local du script de validation que nous voulons vérifier, tel qu'obtenu à l'étape 2. ROOT_CERT_URL par l'URL du certificat racine. Si vous souhaitez utiliser un certificat local déjà téléchargé, utilisez plutôt cette option :

    –root_cert_local ROOT_CERT_LOCAL
    

    Remplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.

Télécharger le script de métadonnées

Accédez à la signature de ce fichier à l'adresse gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata-sig.zip. Vous pouvez valider le signature.zip manuellement ou à l'aide du script de validation. Pour vérifier rapidement la signature à l'aide du script de vérification, procédez comme suit :

  1. Configurez l'authentification.

  2. Si vous n'avez pas encore téléchargé le fichier de script download_metadata.py, téléchargez-le.

    gcloud storage cp "gs://cloud-aoss/utils/python-download-metadata/v1.1/download_metadata.py" . --recursive
    
  3. Récupérez le certificat racine. Le lien URL est https://privateca-content-6333d504-0000-2df7-afd6-30fd38154590.storage.googleapis.com/a2c725a592f1d586f1f8/ca.crt. Vous pouvez télécharger le certificat localement ou utiliser directement le lien du certificat.

    Pour télécharger le certificat, exécutez la commande suivante :

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

    Remplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.

  4. Téléchargez le script de validation.

    gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive
    chmod +x signatureverification.sh
    
  5. Exécutez le script de vérification et vérifiez.

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

    Remplacez les éléments suivants :

    • PATH_TO_DATA_FILE par le chemin d'accès local du script download_metadata.py que nous voulons vérifier, tel qu'obtenu à l'étape 2.
    • ROOT_CERT_URL par l'URL du certificat racine. Si vous souhaitez utiliser un certificat local déjà téléchargé, exécutez la commande suivante :
    –root_cert_local ROOT_CERT_LOCAL
    

    Remplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.

Étapes suivantes