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.
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 (
javaoupython). 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
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 (
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 :
Configurez l'authentification à l'aide des Identifiants par défaut de l'application (ADC).
Téléchargez le
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 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 :
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 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_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 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.
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 (
javaoupython). 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 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 :
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 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.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 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_LOCALRemplacez 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 :
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" . --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 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.
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 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_URLRemplacez les éléments suivants :
- PATH_TO_DATA_FILE avec le chemin d'accès local du script
generator.shque 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_LOCALRemplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.
- PATH_TO_DATA_FILE avec le chemin d'accès local du script
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 :
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.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 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.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 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_URLRemplacez 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_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 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 :
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" . --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 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.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 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_URLRemplacez les éléments suivants :
- PATH_TO_DATA_FILE avec le chemin d'accès local du script
download_metadata.pyque 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_LOCALRemplacez ROOT_CERT_LOCAL par le chemin d'accès local du certificat racine.
- PATH_TO_DATA_FILE avec le chemin d'accès local du script
Étapes suivantes
- Vérifier la provenance de la compilation
- Découvrez comment protéger votre chaîne d'approvisionnement logicielle.