Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Amazon Inspector SBOM-Generator
Eine Softwareliste (Software Bill of Materials, SBOM) ist eine formal strukturierte Liste von Komponenten, Bibliotheken und Modulen, die zur Erstellung einer Software erforderlich sind. Der Amazon Inspector SBOM Generator (Sbomgen) ist ein Tool, das eine SBOM für Archive, Container-Images, Verzeichnisse, lokale Systeme sowie kompilierte Dateien und Binärdateien erstellt. Go Rust Sbomgensucht nach Dateien, die Informationen über installierte Pakete enthalten. Wenn Sbomgen eine relevante Datei gefunden wird, extrahiert es Paketnamen, Versionen und andere Metadaten. Sbomgenwandelt dann Paketmetadaten in eine CycloneDX SBOM um. Sie können Sbomgen damit die CycloneDX SBOM als Datei oder in STDOUT generieren und zur Schwachstellenerkennung SBOMs an Amazon Inspector senden. Sie können es auch Sbomgen als Teil der CI/CD Integration verwenden, bei der Container-Images automatisch als Teil Ihrer Bereitstellungspipeline gescannt werden.
Unterstützte Pakettypen
Sbomgensammelt Inventar für die folgenden Pakettypen:
-
Alpine APK
-
Debian/Ubuntu DPKG
-
Red Hat RPM
-
C#
-
Go
-
Java
-
Node.js
-
PHP
-
Python
-
Ruby
-
Rust
Unterstützte Konfigurationsprüfungen für Container-Images
Sbomgenkann eigenständige Docker-Dateien scannen und den Verlauf anhand vorhandener Images auf Sicherheitsprobleme aufbauen. Weitere Informationen finden Sie unter Amazon Inspector Dockerfile-Checks.
Installation von Sbomgen
Sbomgenist nur für Linux-Betriebssysteme verfügbar.
Sie müssen Docker installiert sein, wenn Sie lokal zwischengespeicherte Bilder analysieren möchtenSbomgen. Dockerist nicht erforderlich, um Bilder zu analysieren, die als .tar
Dateien exportiert wurden, oder Bilder, die in Remote-Container-Registern gehostet werden.
Amazon Inspector empfiehlt, dass Sie von einem System Sbomgen aus arbeiten, das mindestens die folgenden Hardwarespezifikationen aufweist:
-
4-fache Kern-CPU
-
8 GB RAM
So installieren Sie Sbomgen
-
Laden Sie die neueste Sbomgen ZIP-Datei von der richtigen URL für Ihre Architektur herunter:
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
Alternativ können Sie frühere Versionen der Amazon Inspector SBOM Generator-Zip-Datei herunterladen.
-
Entpacken Sie den Download mit dem folgenden Befehl:
unzip inspector-sbomgen.zip
-
Suchen Sie im entpackten Verzeichnis nach den folgenden Dateien:
-
inspector-sbomgen
— Dies ist das Tool, das Sie ausführen werden, um es zu generieren SBOMs. -
README.txt
— Dies ist die Dokumentation zur VerwendungSbomgen. -
LICENSE.txt
— Diese Datei enthält die Softwarelizenz fürSbomgen. -
licenses
— Dieser Ordner enthält Lizenzinformationen für Pakete von Drittanbietern, die von verwendet werdenSbomgen. -
checksums.txt
— Diese Datei enthält Hashes des Sbomgen Tools. -
sbom.json
— Dies ist eine CycloneDX SBOM für das Tool. Sbomgen -
WhatsNew.txt
— Diese Datei enthält ein zusammengefasstes Änderungsprotokoll, sodass Sie wichtige Änderungen und Verbesserungen zwischen den Sbomgen Versionen schnell einsehen können.
-
-
(Optional) Überprüfen Sie die Authentizität und Integrität des Tools mit dem folgenden Befehl:
sha256sum < inspector-sbomgen
-
Vergleichen Sie die Ergebnisse mit dem Inhalt der
checksums.txt
Datei.
-
-
Erteilen Sie dem Tool mit dem folgenden Befehl die Rechte zur ausführbaren Datei:
chmod +x inspector-sbomgen
-
Stellen Sie mit Sbomgen dem folgenden Befehl sicher, dass die Installation erfolgreich abgeschlossen wurde:
./inspector-sbomgen --version
Sie sollten die Ausgabe ähnlich der folgenden sehen:
Version: 1.X.X
Verwenden von Sbomgen
In diesem Abschnitt werden verschiedene Verwendungsmöglichkeiten beschriebenSbomgen. Anhand der integrierten Beispiele können Sie mehr Sbomgen über die Verwendung erfahren. Führen Sie den folgenden list-examples
Befehl aus, um sich diese Beispiele anzusehen:
./inspector-sbomgen list-examples
Generieren Sie eine SBOM für ein Container-Image und geben Sie das Ergebnis aus
Sie können Sbomgen es verwenden, um Bilder SBOMs für Container zu generieren und das Ergebnis in eine Datei auszugeben. Diese Funktion kann mit dem container
Unterbefehl aktiviert werden.
-Beispielbefehl
Im folgenden Codeausschnitt können Sie es durch die ID Ihres Bilds und image:tag
durch den Pfad zu der Ausgabe, die Sie speichern möchten, ersetzen. output_path.json
# generate SBOM for container image ./inspector-sbomgen container
--image image:tag
-ooutput_path.json
Anmerkung
Die Dauer und Leistung des Scans hängen von der Bildgröße und der geringen Anzahl der Ebenen ab. Kleinere Bilder verbessern nicht nur die Sbomgen Leistung, sondern reduzieren auch die potenzielle Angriffsfläche. Kleinere Images verbessern auch die Dauer der Erstellung, des Herunterladens und Uploads von Images.
Bei Verwendung Sbomgen mit ScanSbom
verarbeitet die Amazon Inspector Scan API keine Pakete SBOMs , die mehr als 5.000 Pakete enthalten. In diesem Szenario gibt die Amazon Inspector Scan API eine HTTP 400-Antwort zurück.
Wenn ein Bild Massenmediendateien oder -verzeichnisse enthält, sollten Sie erwägen, sie von der Sbomgen Verwendung des --skip-files
Arguments auszuschließen.
Beispiel: Häufige Fehlerfälle
Das Scannen von Container-Images kann aufgrund der folgenden Fehler fehlschlagen:
-
InvalidImageFormat
— Tritt auf, wenn falsch formatierte Container-Images mit beschädigten TAR-Headern, Manifestdateien oder Konfigurationsdateien gescannt werden. -
ImageValidationFailure
— Tritt auf, wenn die Überprüfung der Prüfsumme oder der Inhaltslänge für Container-Image-Komponenten fehlschlägt, wie z. B. nicht übereinstimmende Content-Length-Header, falsche Manifest-Digests oder eine fehlgeschlagene Prüfsummenüberprüfung. SHA256 -
ErrUnsupportedMediaType
— Tritt auf, wenn Bildkomponenten Medientypen enthalten, die nicht unterstützt werden. Informationen zu unterstützten Medientypen finden Sie unter Unterstützte Betriebssysteme und Medientypen.
Amazon Inspector unterstützt den application/vnd.docker.distribution.manifest.list.v2+json
Medientyp nicht. Amazon Inspector unterstützt jedoch Manifestlisten. Beim Scannen von Bildern, die Manifestlisten verwenden, können Sie mit dem --platform
Argument explizit angeben, welche Plattform verwendet werden soll. Wenn das --platform
Argument nicht angegeben ist, wählt der Amazon Inspector SBOM Generator das Manifest automatisch basierend auf der Plattform aus, auf der es ausgeführt wird.
Generieren Sie eine SBOM aus Verzeichnissen und Archiven
Sie können sie verwendenSbomgen, um SBOMs aus Verzeichnissen und Archiven zu generieren. Diese Funktion kann mit den archive
Unterbefehlen directory
oder aktiviert werden. Amazon Inspector empfiehlt, diese Funktion zu verwenden, wenn Sie eine SBOM aus einem Projektordner, z. B. einem heruntergeladenen Git-Repository, generieren möchten.
Beispielbefehl 1
Der folgende Ausschnitt zeigt einen Unterbefehl, der eine SBOM aus einer Verzeichnisdatei generiert.
# generate SBOM from directory ./inspector-sbomgen directory --path /path/to/dir -o /tmp/sbom.json
Beispiel für Befehl 2
Der folgende Ausschnitt zeigt einen Unterbefehl, der eine SBOM aus einer Archivdatei generiert. Die einzigen unterstützten Archivformate sind, und. .zip
.tar
.tar.gz
# generate SBOM from archive file (tar, tar.gz, and zip formats only) ./inspector-sbomgen archive --path testData.zip -o /tmp/sbom.json
Generieren Sie eine SBOM aus Go oder Rust kompilierten Binärdateien
Sie können es verwenden, Sbomgen um SBOMs aus kompilierten Go und binären Dateien zu generieren. Rust Sie können diese Fähigkeit mit dem folgenden Unterbefehl aktivieren: binary
./inspector-sbomgen binary --path /path/to/your/binary
Generieren Sie eine SBOM aus bereitgestellten Volumes
Sie können Amazon Inspector SBOM Generator verwenden, um SBOMs aus bereitgestellten Volumes zu generieren. Diese Funktion kann mit dem Unterbefehl aktiviert werden. volume
Wir empfehlen, diese Funktion zu verwenden, wenn Sie Speichervolumes analysieren möchten, z. B. Amazon EBS-Volumes, die auf Ihrem System bereitgestellt wurden. Im Gegensatz zum Unterbefehl directory werden beim Scannen von Mounted Volumes Betriebssystempakete und Betriebssysteminformationen erkannt.
Sie können ein Amazon EBS-Volume scannen, indem Sie es an eine EC2 Amazon-Instance anhängen, auf der Amazon Inspector SBOM Generator installiert ist, und es auf dieser Instance mounten. Für Amazon EBS-Volumes, die derzeit von anderen EC2 Amazon-Instances verwendet werden, können Sie einen Amazon EBS-Snapshot des Volumes erstellen und dann aus diesem Snapshot ein neues Amazon EBS-Volume für Scanzwecke erstellen. Weitere Informationen zu Amazon EBS finden Sie unter Was ist Amazon EBS? im Amazon Elastic Block Store-Benutzerhandbuch.
-Beispielbefehl
Der folgende Ausschnitt zeigt einen Unterbefehl, der aus einem bereitgestellten Volume eine SBOM generiert. Das --path
Argument sollte das Stammverzeichnis angeben, in dem das Volume eingehängt ist.
# generate SBOM from mounted volume ./inspector-sbomgen volume --path /mount/point/of/volume/root
-Beispielbefehl
Der folgende Ausschnitt zeigt einen Unterbefehl, der eine SBOM aus einem bereitgestellten Volume generiert und dabei bestimmte Dateipfade mit dem Argument ausschließt. --exclude-suffix
Das --exclude-suffix
Argument ist besonders nützlich, wenn ein Volume Massendateien (wie Protokolldateien oder Mediendateien) enthält. Dateien und Verzeichnisse, deren Pfade mit den angegebenen Suffixen enden, werden vom Scannen ausgeschlossen, wodurch die Scanzeit und der Speicherverbrauch reduziert werden können.
# generate SBOM from mounted volume with exclusions ./inspector-sbomgen volume --path /mount/point/of/volume/root \ --exclude-suffix .log \ --exclude-suffix cache
Alle Dateipfade im Zielvolume werden auf ihre ursprünglichen Pfade normalisiert. Wenn beispielsweise ein Volume gescannt wird, auf dem /mnt/volume
sich eine Datei befindet/mnt/volume/var/lib/rpm/rpmdb.sqlite
, wird der Pfad /var/lib/rpm/rpmdb.sqlite
in der generierten SBOM auf den Pfad normalisiert.
Senden Sie eine SBOM zur Identifizierung von Sicherheitslücken an Amazon Inspector
Sie können nicht nur eine SBOM generieren, sondern auch eine SBOM zum Scannen mit einem einzigen Befehl aus der Amazon Inspector Scan API senden. Amazon Inspector bewertet den Inhalt der SBOM auf Sicherheitslücken, bevor die Ergebnisse an zurückgegeben werden. Sbomgen Abhängig von Ihren Eingaben können die Ergebnisse angezeigt oder in eine Datei geschrieben werden.
Anmerkung
Sie müssen über einen aktiven Benutzer AWS-Konto mit Leseberechtigungen verfügen, InspectorScan-ScanSbom
um diese Funktion nutzen zu können.
Um diese Funktion zu aktivieren, übergeben Sie das --scan-sbom
Argument an die Sbomgen CLI. Sie können das --scan-sbom
Argument auch an einen der folgenden Sbomgen Unterbefehle übergeben:archive
,,binary
, container
directory
,localhost
.
Anmerkung
Die Amazon Inspector Scan API verarbeitet SBOMs nicht mehr als 2.000 Pakete. In diesem Szenario gibt die Amazon Inspector Scan API eine HTTP 400-Antwort zurück.
Sie können sich bei Amazon Inspector über ein AWS Profil oder eine IAM-Rolle mit den folgenden AWS CLI Argumenten authentifizieren:
--aws-profile
profile
--aws-regionregion
--aws-iam-role-arnrole_arn
Sie können sich auch bei Amazon Inspector authentifizieren, indem Sie die folgenden Umgebungsvariablen angeben. Sbomgen
AWS_ACCESS_KEY_ID=$access_key \ AWS_SECRET_ACCESS_KEY=$secret_key \ AWS_DEFAULT_REGION=$region \ ./inspector-sbomgen
arguments
Um das Antwortformat anzugeben, verwenden Sie das --scan-sbom-output-format cyclonedx
Argument oder das --scan-sbom-output-format inspector
Argument.
Beispielbefehl 1
Dieser Befehl erstellt eine SBOM für die neueste Alpine Linux Version, scannt die SBOM und schreibt die Ergebnisse der Sicherheitslücke in eine JSON-Datei.
./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
Beispielbefehl 2
Dieser Befehl authentifiziert sich bei Amazon Inspector und verwendet AWS Anmeldeinformationen als Umgebungsvariablen.
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
Beispielbefehl 3
Dieser Befehl authentifiziert sich bei Amazon Inspector mithilfe des ARN für eine IAM-Rolle.
./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
Verwenden Sie zusätzliche Scanner, um die Erkennungsfunktionen zu verbessern
Der Amazon Inspector SBOM Generator wendet vordefinierte Scanner auf der Grundlage des verwendeten Befehls an.
Standard-Scanner-Gruppen
Jeder Amazon Inspector SBOM Generator-Unterbefehl wendet die folgenden Standard-Scanner-Gruppen automatisch an.
-
Für den
directory
Unterbefehl: binary, programming-language-packages dockerfile scanner groups -
Für den
localhost
Unterbefehl: os, Scanner-Gruppen für programming-language-packages Extra-Ökosysteme -
Für den
container
Unterbefehl: os, extra-ecosystems programming-language-packages, dockerfile, binary scanner groups
Spezielle Scanner
Verwenden Sie die --additional-scanners
Option, gefolgt vom Namen des Scanners, der hinzugefügt werden soll, um andere Scanner als die Standard-Scanner-Gruppen einzubeziehen. Im Folgenden finden Sie einen Beispielbefehl, der zeigt, wie das geht.
# Add WordPress installation scanner to directory scan ./inspector-sbomgen directory --path /path/to/directory/ --additional-scanners wordpress-installation -o output.json
Im Folgenden finden Sie einen Beispielbefehl, der zeigt, wie Sie mehrere Scanner mit einer durch Kommas getrennten Liste hinzufügen.
./inspector-sbomgen container --image image:tag --additional-scanners scanner1,scanner2 -o output.json
Optimieren Sie Containerscans, indem Sie die maximale zu scannende Dateigröße anpassen
Wenn Sie ein Container-Image analysieren und verarbeiten, werden standardmäßig Dateien mit einer Größe von 200 MB oder weniger Sbomgen gescannt. Dateien, die größer als 200 MB sind, enthalten selten Paketmetadaten. Fehler können auftreten, wenn Sie eine Datei Go oder Rust Binärdatei mit mehr als 200 MB inventarisieren. Verwenden Sie das --max-file-size
Argument, um die Größenbeschränkung anzupassen. Auf diese Weise können Sie das Limit erhöhen, um große Dateien einzuschließen, und das Limit verringern, um den Ressourcenverbrauch zu reduzieren, indem Sie große Dateien ausschließen.
Beispiel
Das folgende Beispiel zeigt, wie das --max-file-size
Argument verwendet wird, um die Dateigröße zu erhöhen.
# 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
Durch das Anpassen dieser Einstellung können Sie die Festplattennutzung, den Speicherverbrauch und die Gesamtdauer des Scans kontrollieren.
Deaktivieren Sie die Fortschrittsanzeige
Sbomgenzeigt eine sich drehende Fortschrittsanzeige an, die in CI/CD Umgebungen zu viele Schrägstriche führen kann.
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
Sie können die Fortschrittsanzeige mit dem folgenden --disable-progress-bar
Argument deaktivieren:
./inspector-sbomgen container --image alpine:latest \ --outfile /tmp/sbom.json \ --disable-progress-bar
Authentifizierung bei privaten Registern mit Sbomgen
Wenn Sie Ihre Anmeldedaten für die private Registrierung angeben, können Sie Daten SBOMs aus Containern generieren, die in privaten Registern gehostet werden. Sie können diese Anmeldeinformationen mit den folgenden Methoden bereitstellen:
Authentifizieren Sie sich mit zwischengespeicherten Anmeldeinformationen (empfohlen)
Für diese Methode authentifizieren Sie sich bei Ihrer Container-Registry. Wenn Sie dies beispielsweise verwendenDocker, können Sie sich mit dem Docker Loging-Befehl bei Ihrer Container-Registry authentifizieren:. docker login
-
Authentifizieren Sie sich bei Ihrer Container-Registry. Wenn Sie dies beispielsweise verwendenDocker, können Sie sich mit dem folgenden Befehl bei Ihrer Registrierung authentifizieren: Docker
login
-
Nachdem Sie sich bei Ihrer Container-Registry authentifiziert haben, verwenden Sie es Sbomgen auf einem Container-Image, das sich in der Registrierung befindet. Um das folgende Beispiel zu verwenden,
ersetzen Sie es durch den Namen des zu scannenden Bilds:image:tag
./inspector-sbomgen container --image
image:tag
Authentifizieren Sie sich mit der interaktiven Methode
Geben Sie für diese Methode Ihren Benutzernamen als Parameter an und Sie Sbomgen werden bei Bedarf zur sicheren Passworteingabe aufgefordert.
Um das folgende Beispiel zu verwenden,
ersetzen Sie es durch den Namen des Bilds, das Sie scannen möchten, und image:tag
durch einen Benutzernamen, der Zugriff auf das Bild hat: your_username
./inspector-sbomgen container --image
image:tag
--usernameyour_username
Authentifizieren Sie sich mit der nicht interaktiven Methode
Speichern Sie für diese Methode Ihr Passwort oder Ihr Registrierungstoken in einer .txt
Datei.
Anmerkung
Der aktuelle Benutzer sollte diese Datei nur lesen können. Die Datei sollte auch Ihr Passwort oder Token in einer einzigen Zeile enthalten.
Um das folgende Beispiel zu verwenden,
ersetzen Sie es durch Ihren Benutzernamen, your_username
durch die password.txt
.txt
Datei, die Ihr Passwort oder Token in einer einzigen Zeile enthält, und
durch den Namen des zu scannenden Bilds: image:tag
INSPECTOR_SBOMGEN_USERNAME=
your_username
\ INSPECTOR_SBOMGEN_PASSWORD=`catpassword.txt
` \ ./inspector-sbomgen container --imageimage:tag
Beispielausgaben von Sbomgen
Im Folgenden finden Sie ein Beispiel für eine SBOM für ein Container-Image, das mithilfe von inventarisiert wurde. 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" } ] } ] }