Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab lernen Sie, wie Sie den Befehl docker scout sbom verwenden, um Software-Bills of Materials (SBOMs) für Docker-Images zu generieren und anzuzeigen. Sie beginnen damit, ein einfaches SBOM im JSON-Format zu generieren und anzuzeigen, das eine detaillierte Liste der Softwarekomponenten in einem Image enthält.

Nach der Generierung des einfachen SBOMs werden Sie untersuchen, wie Sie eine für Menschen besser lesbare Liste der im SBOM gefundenen Pakete anzeigen können. Sie werden auch lernen, wie Sie diese Paketliste nach Typ filtern können, sodass Sie sich auf bestimmte Kategorien von Komponenten konzentrieren können. Abschließend üben Sie, das generierte SBOM in eine Datei zu schreiben, um es später zu verwenden oder zu analysieren. In diesem Lab erwerben Sie die grundlegenden Fähigkeiten, um docker scout sbom zur Untersuchung der Zusammensetzung Ihrer Docker-Images einzusetzen.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/ImageOperationsGroup -.-> docker/load("Load Image") docker/VolumeOperationsGroup -.-> docker/cp("Copy Data Between Host and Container") subgraph Lab Skills docker/ls -.-> lab-555215{{"Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen"}} docker/inspect -.-> lab-555215{{"Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen"}} docker/pull -.-> lab-555215{{"Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen"}} docker/images -.-> lab-555215{{"Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen"}} docker/load -.-> lab-555215{{"Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen"}} docker/cp -.-> lab-555215{{"Wie man den Befehl docker scout sbom verwendet, um SBOMs zu generieren und anzuzeigen"}} end

Generieren und Anzeigen eines einfachen SBOMs im JSON-Format

In diesem Schritt lernen wir, wie man ein einfaches Software-Bill of Materials (SBOM) für ein Docker-Image generiert und es im JSON-Format anzeigt. Ein SBOM ist eine formale Liste der Bestandteile, aus denen eine Softwarekomponente besteht. Es ist wie eine Packliste für Ihre Software, die alle verwendeten Drittanbieterkomponenten, Bibliotheken und Abhängigkeiten detailliert auflistet. Die Generierung eines SBOMs ist entscheidend, um die Sicherheitslage und die Lizenzkonformität Ihrer Software zu verstehen.

Wir werden das Tool syft verwenden, um das SBOM zu generieren. syft ist ein Befehlszeilentool und eine Bibliothek zur Generierung eines SBOMs aus Container-Images und Dateisystemen.

Zunächst laden wir ein einfaches Docker-Image herunter, das wir für diese Demonstration verwenden werden. Wir werden das Image alpine:latest verwenden, das eine leichte Linux-Distribution ist.

docker pull alpine:latest

Sie sollten eine Ausgabe sehen, die anzeigt, dass das Image heruntergeladen wird.

Using default tag: latest
latest: Pulling from library/alpine
...
Status: Downloaded newer image for alpine:latest
docker.io/library/alpine:latest

Jetzt, da wir das Image haben, können wir das SBOM generieren. Wir verwenden den syft-Befehl mit dem Namen des Images und geben das Ausgabeformat als JSON an.

syft alpine:latest -o json

Dieser Befehl analysiert das Image alpine:latest und gibt das SBOM im JSON-Format direkt in Ihrem Terminal aus. Die Ausgabe wird ein großer JSON-Objekt sein, das Informationen über die im Image gefundenen Pakete enthält, einschließlich ihrer Namen, Versionen, Lizenzen und Typen.

Sie können durch die Ausgabe scrollen, um die verschiedenen im SBOM aufgeführten Komponenten zu sehen. Diese einfache JSON-Ausgabe bietet einen umfassenden Überblick über die Softwarekomponenten innerhalb des Images.

Anzeigen einer Liste der Pakete im SBOM

Im vorherigen Schritt haben wir ein detailliertes SBOM im JSON-Format generiert. Obwohl es umfassend ist, kann die JSON-Ausgabe direkt im Terminal schwer zu lesen sein. In diesem Schritt lernen wir, wie man eine für Menschen besser lesbare Liste der im Docker-Image gefundenen Pakete anzeigt.

syft bietet ein einfaches Tabellenformat, das einfach zu überfliegen und zu verstehen ist. Wir können die Option -o table verwenden, um das SBOM in diesem Format zu generieren.

syft alpine:latest -o table

Dieser Befehl analysiert das Image alpine:latest erneut, aber diesmal gibt er das SBOM als Tabelle aus. Die Tabelle enthält typischerweise Spalten wie NAME, VERSION, TYPE und LOCATIONS.

Sie sollten eine Ausgabe ähnlich der folgenden sehen:

 ✔ Loaded image
 ✔ Analyzed image
 ├── apk
 │   ├── busybox
 │   ├── alpine-baselayout
 │   ├── alpine-keys
 │   ├── apk-tools
 │   ├── zlib
 │   ├── libcrypto1.1
 │   ├── libssl1.1
 │   ├── musl
 │   ├── musl-utils
 │   ├── scanelf
 │   ├── ssl_certs
 │   └── zlib
 └── filesystem
     └── etc/os-release

Dieses Tabellenformat macht es viel einfacher, schnell die Namen und Versionen der im Image installierten Pakete zu sehen. Dies ist besonders nützlich, um einen schnellen Überblick über den Inhalt des Images zu erhalten.

Filtern der Paketliste nach Typ

Im vorherigen Schritt haben wir das SBOM als Tabelle angezeigt, was einfacher zu lesen ist als die JSON-Ausgabe. Manchmal interessieren Sie sich jedoch möglicherweise nur für bestimmte Pakettypen. Beispielsweise möchten Sie möglicherweise nur die Betriebssystempakete oder die Anwendungsabhängigkeiten sehen.

syft ermöglicht es Ihnen, die Paketliste nach Typ zu filtern, indem Sie die Option --package-type verwenden. Sie können einen oder mehrere Pakettypen angeben, die in der Ausgabe enthalten sein sollen. Zu den gängigen Pakettypen gehören apk, deb, rpm, gem, npm, pip, go-module usw. Für das Image alpine:latest ist der primäre Pakettyp apk.

Filtern wir das SBOM, um nur Pakete des Typs apk anzuzeigen.

syft alpine:latest -o table --package-type apk

Dieser Befehl generiert das SBOM im Tabellenformat, aber es werden nur Einträge enthalten sein, bei denen der Pakettyp apk ist.

Sie sollten eine Ausgabe ähnlich der Tabelle aus dem vorherigen Schritt sehen, aber möglicherweise mit weniger Einträgen, wenn es andere Pakettypen im Image gab (obwohl für ein minimales Image wie Alpine apk der Haupttyp ist).

 ✔ Loaded image
 ✔ Analyzed image
 ├── apk
 │   ├── busybox
 │   ├── alpine-baselayout
 │   ├── alpine-keys
 │   ├── apk-tools
 │   ├── zlib
 │   ├── libcrypto1.1
 │   ├── libssl1.1
 │   ├── musl
 │   ├── musl-utils
 │   ├── scanelf
 │   ├── ssl_certs
 │   └── zlib

Diese Filterfunktion ist sehr nützlich, wenn Sie sich auf bestimmte Ebenen oder Typen von Abhängigkeiten in Ihrem Container-Image konzentrieren müssen.

Schreiben des SBOMs in eine Datei

In den vorherigen Schritten haben wir das SBOM in verschiedenen Formaten direkt im Terminal angezeigt. Obwohl dies für eine schnelle Überprüfung nützlich ist, müssen Sie das SBOM häufig in einer Datei speichern, um es weiter zu verarbeiten, zu analysieren oder zu teilen.

syft ermöglicht es Ihnen, die SBOM-Ausgabe in eine Datei zu schreiben, indem Sie die Option -o verwenden, gefolgt vom gewünschten Format und einer Umleitung in eine Datei. Wir können das SBOM in verschiedenen Formaten ausgeben, darunter JSON, SPDX und CycloneDX. JSON ist ein gängiges und vielseitiges Format.

Generieren wir das SBOM im JSON-Format und speichern es in einer Datei namens alpine_sbom.json im aktuellen Verzeichnis (~/project).

syft alpine:latest -o json > alpine_sbom.json

Dieser Befehl generiert das SBOM für das Image alpine:latest im JSON-Format und leitet die Ausgabe in die Datei alpine_sbom.json um. Sie werden diesmal die JSON-Ausgabe nicht im Terminal sehen.

Um zu überprüfen, ob die Datei erstellt wurde und die SBOM-Daten enthält, können Sie den Befehl ls verwenden, um die Dateien im aktuellen Verzeichnis aufzulisten, und den Befehl cat, um den Inhalt der Datei anzuzeigen.

ls

Sie sollten alpine_sbom.json in der Dateiliste sehen.

alpine_sbom.json

Lassen Sie uns nun den Inhalt der Datei anzeigen:

cat alpine_sbom.json

Sie sollten die im ersten Schritt gesehenen JSON-formatierten SBOM-Ausgabe sehen, aber jetzt ist sie in der Datei alpine_sbom.json gespeichert.

Das Speichern des SBOMs in einer Datei ist eine Standardpraxis für die Integration der SBOM-Generierung in CI/CD-Pipelines oder für das Teilen von SBOMs mit anderen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man mit dem syft-Tool eine grundlegende Software-Bill-of-Materials (SBOM) für ein Docker-Image generiert und anzeigt. Wir haben begonnen, indem wir das Image alpine:latest heruntergeladen und dann den Befehl syft alpine:latest -o json verwendet haben, um das SBOM im JSON-Format zu generieren und anzuzeigen. Dadurch erhalten wir eine detaillierte Liste der Softwarekomponenten im Image.

Anschließend haben wir untersucht, wie man eine für Menschen besser lesbare Liste der Pakete aus dem SBOM anzeigt, diese Liste nach Pakettyp filtert und schließlich das generierte SBOM in einer Datei speichert, um es später zu verwenden oder zu analysieren. Diese Schritte zeigen die grundlegenden Fähigkeiten von syft auf, um die Zusammensetzung von Docker-Images zu verstehen.