Amazon Inspector SBOM-Generator - Amazon Inspector

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
  1. 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.

  2. Entpacken Sie den Download mit dem folgenden Befehl:

    unzip inspector-sbomgen.zip

  3. 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.

  4. (Optional) Überprüfen Sie die Authentizität und Integrität des Tools mit dem folgenden Befehl:

    sha256sum < inspector-sbomgen

    1. Vergleichen Sie die Ergebnisse mit dem Inhalt der checksums.txt Datei.

  5. Erteilen Sie dem Tool mit dem folgenden Befehl die Rechte zur ausführbaren Datei:

    chmod +x inspector-sbomgen

  6. 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 output_path.json durch den Pfad zu der Ausgabe, die Sie speichern möchten, ersetzen.

# generate SBOM for container image ./inspector-sbomgen container --image image:tag -o output_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 ScanSbomverarbeitet 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, containerdirectory,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-region region --aws-iam-role-arn role_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-region your_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

  1. 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

  2. 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, image:tag ersetzen Sie es durch den Namen des zu scannenden Bilds:

./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, image:tag ersetzen Sie es durch den Namen des Bilds, das Sie scannen möchten, und your_username durch einen Benutzernamen, der Zugriff auf das Bild hat:

./inspector-sbomgen container --image image:tag --username your_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, your_username ersetzen Sie es durch Ihren Benutzernamen, password.txt durch die .txt Datei, die Ihr Passwort oder Token in einer einzigen Zeile enthält, und image:tag durch den Namen des zu scannenden Bilds:

INSPECTOR_SBOMGEN_USERNAME=your_username \ INSPECTOR_SBOMGEN_PASSWORD=`cat password.txt` \ ./inspector-sbomgen container --image image: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" } ] } ] }