Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Générateur de SBOM Amazon Inspector
Une nomenclature logicielle (SBOM) est une liste officiellement structurée de composants, de bibliothèques et de modules nécessaires à la création d'un logiciel. Le générateur Amazon Inspector SBOM (Sbomgen) est un outil qui produit un SBOM pour les archives, les images de conteneurs, les répertoires, les systèmes locaux, les compilés et les fichiers binaires. Go Rust Sbomgenrecherche les fichiers contenant des informations sur les packages installés. Lorsqu'il Sbomgen trouve un fichier pertinent, il extrait les noms de package, les versions et les autres métadonnées. Sbomgentransforme ensuite les métadonnées du package en CycloneDX SBOM. Vous pouvez l'utiliser Sbomgen pour générer le CycloneDX SBOM sous forme de fichier ou dans STDOUT et l'envoyer à Amazon SBOMs Inspector pour détecter les vulnérabilités. Vous pouvez également l'utiliser dans le Sbomgen cadre de l' CI/CD intégration, qui analyse automatiquement les images des conteneurs dans le cadre de votre pipeline de déploiement.
Types de packages pris en charge
Sbomgencollecte l'inventaire des types de colis suivants :
-
Alpine APK
-
Debian/Ubuntu DPKG
-
Red Hat RPM
-
C#
-
Go
-
Java
-
Node.js
-
PHP
-
Python
-
Ruby
-
Rust
Contrôles de configuration d'image de conteneur pris en charge
Sbomgenpeut scanner des fichiers Dockerfiles autonomes et créer un historique à partir d'images existantes pour des problèmes de sécurité. Pour plus d'informations, consultez Amazon Inspector Dockerfile checks.
Installation deSbomgen
Sbomgenest uniquement disponible pour les systèmes d'exploitation Linux.
Vous devez l'avoir Docker installé si vous Sbomgen souhaitez analyser des images mises en cache localement. Dockern'est pas nécessaire pour analyser les images exportées sous forme de .tar
fichiers ou d'images hébergées dans des registres de conteneurs distants.
Amazon Inspector vous recommande de l'exécuter Sbomgen à partir d'un système présentant au moins les caractéristiques matérielles suivantes :
-
Processeur 4 cœurs
-
8 Go de RAM
Pour installer Sbomgen
-
Téléchargez le dernier fichier Sbomgen zip à partir de l'URL correspondant à votre architecture :
Linux AMD64 : https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/amd64/inspector-sbomgen.zip
Linux ARM64 : https://amazon-inspector-sbomgen.s3.amazonaws.com/latest/linux/arm64/inspector-sbomgen.zip
Vous pouvez également télécharger les versions précédentes du fichier zip Amazon Inspector SBOM Generator.
-
Décompressez le téléchargement à l'aide de la commande suivante :
unzip inspector-sbomgen.zip
-
Vérifiez la présence des fichiers suivants dans le répertoire extrait :
-
inspector-sbomgen
— Il s'agit de l'outil que vous allez exécuter pour générer SBOMs. -
README.txt
— Voici la documentation d'utilisationSbomgen. -
LICENSE.txt
— Ce fichier contient la licence logicielle pourSbomgen. -
licenses
— Ce dossier contient les informations de licence pour les packages tiers utilisés parSbomgen. -
checksums.txt
— Ce fichier fournit les hachages de l'Sbomgenoutil. -
sbom.json
— Il s'agit d'un CycloneDX SBOM pour l'Sbomgenoutil. -
WhatsNew.txt
— Ce fichier contient un journal des modifications résumé, qui vous permet de visualiser rapidement les principales modifications et améliorations entre Sbomgen les versions.
-
-
(Facultatif) Vérifiez l'authenticité et l'intégrité de l'outil à l'aide de la commande suivante :
sha256sum < inspector-sbomgen
-
Comparez les résultats avec le contenu du
checksums.txt
fichier.
-
-
Accordez des autorisations exécutables à l'outil à l'aide de la commande suivante :
chmod +x inspector-sbomgen
-
Vérifiez qu'il Sbomgen est correctement installé à l'aide de la commande suivante :
./inspector-sbomgen --version
Vous devriez obtenir un résultat similaire à ce qui suit :
Version: 1.X.X
Utiliser Sbomgen
Cette section décrit les différentes méthodes que vous pouvez utiliserSbomgen. Pour en savoir plus sur l'utilisation, consultez Sbomgen des exemples intégrés. Pour visualiser ces exemples, exécutez la list-examples
commande suivante :
./inspector-sbomgen list-examples
Génère un SBOM pour une image de conteneur et affiche le résultat
Vous pouvez l'utiliser Sbomgen pour générer des images SBOMs pour le conteneur et générer le résultat dans un fichier. Cette fonctionnalité peut être activée à l'aide de la container
sous-commande.
Exemple de commande
Dans l'extrait suivant, vous pouvez remplacer par
l'ID de votre image et par le chemin image:tag
d'accès à la sortie que vous souhaitez enregistrer. output_path.json
# generate SBOM for container image ./inspector-sbomgen container
--image image:tag
-ooutput_path.json
Note
La durée et les performances de numérisation dépendent de la taille de l'image et de la taille du nombre de couches. Les images plus petites améliorent non seulement Sbomgen les performances, mais réduisent également la surface d'attaque potentielle. Les images plus petites améliorent également les temps de création, de téléchargement et de chargement des images.
Lors de l'utilisation Sbomgen avec ScanSbom
, l'API Amazon Inspector Scan ne traite pas les colis SBOMs contenant plus de 5 000 colis. Dans ce scénario, l'API Amazon Inspector Scan renvoie une réponse HTTP 400.
Si une image inclut des fichiers ou des répertoires multimédias en masse, pensez à les exclure de Sbomgen l'utilisation de l'--skip-files
argument.
Exemple : cas d'erreur courants
La numérisation des images du conteneur peut échouer en raison des erreurs suivantes :
-
InvalidImageFormat
— Se produit lors de l'analyse d'images de conteneurs malformées contenant des en-têtes TAR, des fichiers manifestes ou des fichiers de configuration corrompus. -
ImageValidationFailure
— Se produit lorsque la validation de la somme de contrôle ou de la longueur du contenu échoue pour les composants de l'image du conteneur, tels que des en-têtes de contenu incompatibles, des résumés de manifeste incorrects ou un échec de la vérification de la somme de contrôle. SHA256 -
ErrUnsupportedMediaType
— Se produit lorsque les composants de l'image incluent des types de média non pris en charge. Pour plus d'informations sur les types de supports pris en charge, voir Systèmes d'exploitation et types de supports pris en charge.
Amazon Inspector ne prend pas en charge ce type de application/vnd.docker.distribution.manifest.list.v2+json
média. Amazon Inspector prend toutefois en charge les listes de manifestes. Lorsque vous scannez des images qui utilisent des listes de manifestes, vous pouvez spécifier explicitement la plate-forme à utiliser avec l'--platform
argument. Si l'--platform
argument n'est pas spécifié, le générateur Amazon Inspector SBOM sélectionne automatiquement le manifeste en fonction de la plate-forme sur laquelle il s'exécute.
Générer un SBOM à partir de répertoires et d'archives
Vous pouvez l'utiliser Sbomgen pour générer à SBOMs partir de répertoires et d'archives. Cette fonctionnalité peut être activée à l'aide des archive
sous-commandes directory
ou. Amazon Inspector recommande d'utiliser cette fonctionnalité lorsque vous souhaitez générer une SBOM à partir d'un dossier de projet, tel qu'un dépôt git téléchargé.
Exemple de commande 1
L'extrait suivant montre une sous-commande qui génère une SBOM à partir d'un fichier de répertoire.
# generate SBOM from directory ./inspector-sbomgen directory --path /path/to/dir -o /tmp/sbom.json
Exemple de commande 2
L'extrait suivant montre une sous-commande qui génère une SBOM à partir d'un fichier d'archive. Les seuls formats d'archive pris en charge sont .zip
.tar
, et.tar.gz
.
# generate SBOM from archive file (tar, tar.gz, and zip formats only) ./inspector-sbomgen archive --path testData.zip -o /tmp/sbom.json
Génération d'un SBOM à partir de fichiers binaires Go compilés Rust
Vous pouvez l'utiliser Sbomgen pour générer à SBOMs partir de fichiers compilés Go et Rust binaires. Vous pouvez activer cette fonctionnalité par le biais de la binary
sous-commande :
./inspector-sbomgen binary --path /path/to/your/binary
Génération d'un SBOM à partir de volumes montés
Vous pouvez utiliser Amazon Inspector SBOM Generator pour générer des données à SBOMs partir de volumes montés. Cette fonctionnalité peut être activée à l'aide de la volume
sous-commande. Nous vous recommandons d'utiliser cette fonctionnalité lorsque vous souhaitez analyser des volumes de stockage, tels que les volumes Amazon EBS qui ont été montés sur votre système. Contrairement à la sous-commande d'annuaire, l'analyse des volumes montés détecte les packages du système d'exploitation et les informations du système d'exploitation.
Vous pouvez scanner un volume Amazon EBS en le rattachant à une EC2 instance Amazon sur laquelle Amazon Inspector SBOM Generator est installé et en le montant sur cette instance. Pour les volumes Amazon EBS actuellement utilisés par d'autres EC2 instances Amazon, vous pouvez créer un instantané Amazon EBS du volume, puis créer un nouveau volume Amazon EBS à partir de cet instantané à des fins de numérisation. Pour plus d'informations sur Amazon EBS, consultez Qu'est-ce qu'Amazon EBS ? dans le guide de l'utilisateur d'Amazon Elastic Block Store.
Exemple de commande
L'extrait suivant montre une sous-commande qui génère une SBOM à partir d'un volume monté. L'--path
argument doit spécifier le répertoire racine dans lequel le volume est monté.
# generate SBOM from mounted volume ./inspector-sbomgen volume --path /mount/point/of/volume/root
Exemple de commande
L'extrait suivant montre une sous-commande qui génère une SBOM à partir d'un volume monté tout en excluant des chemins de fichiers spécifiques avec l'argument. --exclude-suffix
L'--exclude-suffix
argument est particulièrement utile lorsqu'un volume contient des fichiers en masse (tels que des fichiers journaux ou des fichiers multimédias). Les fichiers et les répertoires dont les chemins se terminent par les suffixes spécifiés seront exclus de l'analyse, ce qui peut réduire le temps d'analyse et l'utilisation de la mémoire.
# generate SBOM from mounted volume with exclusions ./inspector-sbomgen volume --path /mount/point/of/volume/root \ --exclude-suffix .log \ --exclude-suffix cache
Tous les chemins de fichiers du volume cible sont normalisés par rapport à leurs chemins d'origine. Par exemple, lors de la numérisation d'un volume monté sur /mnt/volume
lequel se trouve un fichier/mnt/volume/var/lib/rpm/rpmdb.sqlite
, le chemin sera normalisé par rapport /var/lib/rpm/rpmdb.sqlite
au SBOM généré.
Envoyez un SBOM à Amazon Inspector pour identifier les vulnérabilités
Outre la génération d'une SBOM, vous pouvez envoyer une SBOM à scanner à l'aide d'une seule commande depuis l'API Amazon Inspector Scan. Amazon Inspector évalue le contenu de la SBOM pour détecter les vulnérabilités avant de renvoyer les résultats à. Sbomgen En fonction de votre saisie, les résultats peuvent être affichés ou écrits dans un fichier.
Note
Pour utiliser cette fonctionnalité, vous devez disposer InspectorScan-ScanSbom
d'une autorisation de lecture active Compte AWS .
Pour activer cette fonctionnalité, vous devez transmettre l'--scan-sbom
argument à la Sbomgen CLI. Vous pouvez également transmettre l'--scan-sbom
argument à l'une des Sbomgen sous-commandes suivantes :archive
,binary
, container
directory
,localhost
.
Note
L'API Amazon Inspector Scan ne SBOMs traite pas plus de 5 000 colis. Dans ce scénario, l'API Amazon Inspector Scan renvoie une réponse HTTP 400.
Vous pouvez vous authentifier auprès d'Amazon Inspector via un AWS profil ou un rôle IAM avec les arguments suivants : AWS CLI
--aws-profile
profile
--aws-regionregion
--aws-iam-role-arnrole_arn
Vous pouvez également vous authentifier auprès d'Amazon Inspector en fournissant les variables d'environnement suivantes àSbomgen.
AWS_ACCESS_KEY_ID=$access_key \ AWS_SECRET_ACCESS_KEY=$secret_key \ AWS_DEFAULT_REGION=$region \ ./inspector-sbomgen
arguments
Pour spécifier le format de réponse, utilisez l'--scan-sbom-output-format cyclonedx
argument ou l'--scan-sbom-output-format inspector
argument.
Exemple de commande 1
Cette commande crée une SBOM pour la dernière Alpine Linux version, analyse la SBOM et écrit les résultats de la vulnérabilité dans un fichier JSON.
./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile
your_profile
\ --aws-regionyour_region
\ --scan-sbom-output-format cyclonedx \ --outfile /tmp/inspector_scan.json
Exemple de commande 2
Cette commande s'authentifie auprès d'Amazon Inspector en utilisant les AWS informations d'identification comme variables d'environnement.
AWS_ACCESS_KEY_ID=$your_access_key \ AWS_SECRET_ACCESS_KEY=$your_secret_key \ AWS_DEFAULT_REGION=$your_region \ ./inspector-sbomgen container --image alpine:latest \ -o /tmp/sbom.json \ --scan-sbom \ --scan-sbom-output-format inspector
Exemple de commande 3
Cette commande s'authentifie auprès d'Amazon Inspector à l'aide de l'ARN d'un rôle IAM.
./inspector-sbomgen container --image alpine:latest \ --scan-sbom \ --aws-profile your_profile \ --aws-region your_region \ --outfile /tmp/inspector_scan.json --aws-iam-role-arn arn:aws:iam::123456789012:role/
your_role
Utiliser des scanners supplémentaires pour améliorer les capacités de détection
Le générateur Amazon Inspector SBOM applique des scanners prédéfinis en fonction de la commande utilisée.
Groupes de scanners par défaut
Chaque sous-commande Amazon Inspector SBOM Generator applique automatiquement les groupes de scanners par défaut suivants.
-
Pour la
directory
sous-commande : binary programming-language-packages, dockerfile scanner groups -
Pour la
localhost
sous-commande : os programming-language-packages, extra-ecosystems scanner groups -
Pour la
container
sous-commande : os, extra-ecosystems programming-language-packages, dockerfile, groupes de scanners binaires
Scanners spéciaux
Pour inclure des scanners autres que les groupes de scanners par défaut, utilisez l'--additional-scanners
option suivie du nom du scanner à ajouter. Voici un exemple de commande qui montre comment procéder.
# Add WordPress installation scanner to directory scan ./inspector-sbomgen directory --path /path/to/directory/ --additional-scanners wordpress-installation -o output.json
Voici un exemple de commande qui montre comment ajouter plusieurs scanners avec une liste séparée par des virgules.
./inspector-sbomgen container --image image:tag --additional-scanners scanner1,scanner2 -o output.json
Optimisez l'analyse des conteneurs en ajustant la taille maximale des fichiers à scanner
Lorsque vous analysez et traitez une image de conteneur, Sbomgen scanne les fichiers dont la taille par défaut est inférieure ou égale à 200 Mo. Les fichiers de plus de 200 Mo contiennent rarement des métadonnées de package. Vous pouvez rencontrer des erreurs lorsque vous inventoriez un Rust fichier Go ou un fichier binaire de plus de 200 Mo. Pour ajuster la limite de taille, utilisez l'--max-file-size
argument. Cela vous permet d'augmenter la limite pour inclure des fichiers volumineux et de diminuer la limite pour réduire l'utilisation des ressources en excluant les fichiers volumineux.
exemple
L'exemple suivant montre comment utiliser l'--max-file-size
argument pour augmenter la taille du fichier.
# Increase the file size limit to scan files up to 300 MB ./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --max-file-size 300000000
Le réglage de ce paramètre permet de contrôler l'utilisation du disque, la consommation de mémoire et la durée globale du scan.
Désactiver l'indicateur de progression
Sbomgenaffiche un indicateur de progression de rotation qui peut entraîner l'apparition de barres obliques excessives dans CI/CD les environnements.
INFO[2024-02-01 14:58:46]coreV1.go:53: analyzing artifact | \ / | \ / INFO[2024-02-01 14:58:46]coreV1.go:62: executing post-processors
Vous pouvez désactiver l'indicateur de progression à l'aide de l'--disable-progress-bar
argument :
./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --disable-progress-bar
Authentification auprès de registres privés avec Sbomgen
En fournissant les informations d'authentification de votre registre privé, vous pouvez générer des données SBOMs à partir de conteneurs hébergés dans des registres privés. Vous pouvez fournir ces informations d'identification par les méthodes suivantes :
Authentifier à l'aide des informations d'identification mises en cache (recommandé)
Pour cette méthode, vous devez vous authentifier auprès de votre registre de conteneurs. Par exemple, si vous utilisezDocker, vous pouvez vous authentifier auprès de votre registre de conteneurs à l'aide de la commande de Docker journalisation :. docker login
-
Authentifiez-vous auprès de votre registre de conteneurs. Par exemple, si vous utilisezDocker, vous pouvez vous authentifier auprès de votre registre à l'aide de la Docker
login
commande suivante : -
Après vous être authentifié auprès de votre registre de conteneurs, utilisez-le Sbomgen sur une image de conteneur qui se trouve dans le registre. Pour utiliser l'exemple suivant, remplacez-le
par le nom de l'image à numériser :image:tag
./inspector-sbomgen container --image
image:tag
Authentifiez-vous à l'aide de la méthode interactive
Pour cette méthode, entrez votre nom d'utilisateur comme paramètre et vous Sbomgen serez invité à saisir un mot de passe sécurisé en cas de besoin.
Pour utiliser l'exemple suivant, remplacez-le
par le nom de l'image que vous souhaitez numériser et image:tag
par un nom d'utilisateur ayant accès à l'image : your_username
./inspector-sbomgen container --image
image:tag
--usernameyour_username
Authentifiez-vous à l'aide de la méthode non interactive
Pour cette méthode, enregistrez votre mot de passe ou votre jeton de registre dans un .txt
fichier.
Note
L'utilisateur actuel ne devrait pouvoir lire que ce fichier. Le fichier doit également contenir votre mot de passe ou votre jeton sur une seule ligne.
Pour utiliser l'exemple suivant, remplacez-le
par votre nom d'utilisateur, your_username
par le password.txt
.txt
fichier contenant votre mot de passe ou votre jeton sur une seule ligne et
par le nom de l'image à numériser : image:tag
INSPECTOR_SBOMGEN_USERNAME=
your_username
\ INSPECTOR_SBOMGEN_PASSWORD=`catpassword.txt
` \ ./inspector-sbomgen container --imageimage:tag
Exemples de sorties de Sbomgen
Voici un exemple de SBOM pour une image de conteneur inventoriée à l'aide de. Sbomgen
{ "bomFormat": "CycloneDX", "specVersion": "1.5", "serialNumber": "urn:uuid:828875ef-8c32-4777-b688-0af96f3cf619", "version": 1, "metadata": { "timestamp": "2023-11-17T21:36:38Z", "tools": [ { "vendor": "Amazon Web Services, Inc. (AWS)", "name": "Amazon Inspector SBOM Generator", "version": "1.0.0", "hashes": [ { "alg": "SHA-256", "content": "10ab669cfc99774786301a745165b5957c92ed9562d19972fbf344d4393b5eb1" } ] } ], "component": { "bom-ref": "comp-1", "type": "container", "name": "fedora:latest", "properties": [ { "name": "amazon:inspector:sbom_generator:image_id", "value": "sha256:c81c8ae4dda7dedc0711daefe4076d33a88a69a28c398688090c1141eff17e50" }, { "name": "amazon:inspector:sbom_generator:layer_diff_id", "value": "sha256:eddd0d48c295dc168d0710f70364581bd84b1dda6bb386c4a4de0b61de2f2119" } ] } }, "components": [ { "bom-ref": "comp-2", "type": "library", "name": "dnf", "version": "4.18.0", "purl": "pkg:pypi/dnf@4.18.0", "properties": [ { "name": "amazon:inspector:sbom_generator:source_file_scanner", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_package_collector", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_path", "value": "/usr/lib/python3.12/site-packages/dnf-4.18.0.dist-info/METADATA" }, { "name": "amazon:inspector:sbom_generator:is_duplicate_package", "value": "true" }, { "name": "amazon:inspector:sbom_generator:duplicate_purl", "value": "pkg:rpm/fedora/python3-dnf@4.18.0-2.fc39?arch=noarch&distro=39&epoch=0" } ] }, { "bom-ref": "comp-3", "type": "library", "name": "libcomps", "version": "0.1.20", "purl": "pkg:pypi/libcomps@0.1.20", "properties": [ { "name": "amazon:inspector:sbom_generator:source_file_scanner", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_package_collector", "value": "python-pkg" }, { "name": "amazon:inspector:sbom_generator:source_path", "value": "/usr/lib64/python3.12/site-packages/libcomps-0.1.20-py3.12.egg-info/PKG-INFO" }, { "name": "amazon:inspector:sbom_generator:is_duplicate_package", "value": "true" }, { "name": "amazon:inspector:sbom_generator:duplicate_purl", "value": "pkg:rpm/fedora/python3-libcomps@0.1.20-1.fc39?arch=x86_64&distro=39&epoch=0" } ] } ] }