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.
Pour vérifier l'authenticité et l'intégrité des packages logiciels Open Source, installez l'outil aoss-verifier.
Exportez
$(go env GOPATH)/bin, puis exécutez la commandeaoss-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, soitpython. 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
jarpour un package Java - Extension de fichier
whlpour un package Python
- Extension de fichier
--disable_certificate_verificationest 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_pathest 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 dossiertmp_downloadsdu répertoire actuel.--disable_deletesest 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.- LANGUAGE : langage du package de programmation, soit
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 :
Configurez l'authentification à l'aide des Identifiants par défaut de l'application (ADC).
Téléchargez
signature.zipà l'aide de la commande suivante :gcloud storage cp SIGNATURE_ZIP_URL PATH_TO_LOCAL_STORE --recursiveRemplacez 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 :
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.shExé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_URLRemplacez 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.
Installez l'outil aoss-verifier.
Exportez
$(go env GOPATH)/bin, puis exécutez la commandeaoss-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,vexinfoethealthinfo. - LANGUAGE : langage du package de programmation, soit
java, soitpython. 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_verificationest 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_pathest 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 dossiertmp_downloadsdu répertoire actuel.--disable_deletesest 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.- TYPE : les valeurs possibles sont
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 :
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.shExé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.jsonouhealthInfo.json../signatureverification.sh --data_file_path PATH_TO_DATA_FILE --signature_local_path SIGNATURE_LOCAL_PATH --root_cert_url ROOT_CERT_URLRemplacez 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_LOCALRemplacez 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 :
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" . --recursiveRé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.
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.shExé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_URLRemplacez les éléments suivants :
- PATH_TO_DATA_FILE par le chemin d'accès local du script
generator.shque 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_LOCALRemplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.
- PATH_TO_DATA_FILE par le chemin d'accès local du script
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 :
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.shRé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.crtRemplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.
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_URLRemplacez 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_LOCALRemplacez 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 :
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" . --recursiveRé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.crtRemplacez PATH_TO_LOCAL_STORE par le chemin d'accès local où vous souhaitez télécharger le certificat.
Téléchargez le script de validation.
gcloud storage cp "gs://cloud-aoss/utils/signature-verification/v1.0/signatureverification.sh" . --recursive chmod +x signatureverification.shExé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_URLRemplacez les éléments suivants :
- PATH_TO_DATA_FILE par le chemin d'accès local du script
download_metadata.pyque 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_LOCALRemplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.
- PATH_TO_DATA_FILE par le chemin d'accès local du script