Valider les signatures dans le niveau sans frais Assured OSS

Cette page explique comment vérifier la signature des artefacts Assured OSS.

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

Validation des packages

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 à partir du site Web 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 (java ou 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 dans 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 le 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 : Obtenez l'URL de la 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 le montre l'exemple suivant, vous trouverez l'URL du fichier zip de la 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 extrait des métadonnées Cloud Storage (buildInfo.json file). Comme indiqué 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 local pour la validation manuelle ou l'URL Cloud Storage directement pour utiliser le script de validation. Pour télécharger le fichier signature.zip, procédez comme suit :

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

  2. Téléchargez le 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 ZIP de la signature.
    • PATH_TO_LOCAL_STORE : chemin d'accès local où vous souhaitez télécharger le fichier.

Étape 2 : Obtenez 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 en local 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 : Obtenez 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 sera le PATH_TO_DATA_FILE pour la validation.

Étape 4 : Validation

Vous pouvez valider manuellement le fichier ZIP de signature en suivant la procédure de validation manuelle de la signature ou utiliser le script de validation.

Pour effectuer la validation à l'aide du script de validation, 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 validation et validez-le. 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 accessibles à 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 (java ou 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 le script de validation

Cette section explique comment utiliser un script de validation pour valider 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 dans Accéder aux métadonnées. Le fichier de métadonnées se trouve dans le fichier signature.zip.

Exemple de contenu buildInfo.zip

buildInfo.json
signature.zip

buildInfo.json correspond au fichier de métadonnées à valider et signature.zip au fichier ZIP de signature.

Étape 2 : Obtenez 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 en local 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 validation à l'aide du script de validation, 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 validation et validez-le. Vous devez utiliser le chemin d'accès local pour le fichier ZIP de la signature. Pour le certificat racine, vous pouvez utiliser l'URL ou le chemin d'accès local. Le fichier de données correspond au 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 avec le fichier de métadonnées que nous vérifions, obtenu à l'étape 1.

    • SIGNATURE_LOCAL_PATH par l'URL ZIP de la 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 local au certificat.

Validation du script utilitaire

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

Générateur Python Requirements.txt

Accédez à la signature de ce fichier sur 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 valider rapidement la signature à l'aide du script de validation, procédez comme suit :

  1. Configurez l'authentification.

  2. Si vous n'avez pas encore téléchargé le fichier script du générateur requirements.txt, faites-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 en local 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 validation et validez-le.

    ./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 avec le chemin d'accès local du script generator.sh que nous souhaitons valider, 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 sur 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 valider rapidement la signature à l'aide du script de validation, 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 la 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 en local ou utiliser directement le lien du certificat. Commande permettant de 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 validation et validez-le.

    ./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 avec le chemin d'accès local du script de validation que nous souhaitons valider, 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 sur 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 valider rapidement la signature à l'aide du script de validation, 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, faites-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 en local 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 validation et validez-le.

    ./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 avec le chemin d'accès local du script download_metadata.py que nous souhaitons valider, 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