bom
: Das SBOM Multitool bom
? bom
ist ein Dienstprogramm, mit dem Sie Software-Stücklisten (SBOMs) erstellen, anzeigen und umwandeln können. bom
wurde im Rahmen des Projekts zur Erstellung einer SBOM für das Kubernetes-Projekt erstellt. Es ermöglicht Softwareautoren, auf einfache, aber leistungsstarke Weise eine SBOM für ihre Projekte zu erstellen.
bom ist ein Projekt, das im Automating Compliance Toling TAC der Linux Foundation entsteht
bom
ist ein Allzweck-Tool, das SPDX-Pakete aus Verzeichnissen, Container-Images, einzelnen Dateien und anderen Quellen generieren kann. Das Dienstprogramm verfügt über einen integrierten Lizenzklassifikator, der die über 400 Lizenzen im SPDX-Katalog erkennt.
Zu den weiteren Funktionen gehören die Golang-Abhängigkeitsanalyse und die vollständige .gitignore
Unterstützung beim Scannen von Git-Repositorys.
Ausführlichere Anweisungen zum Erstellen einer SBOM für Ihr Projekt finden Sie unter „Erstellen einer Stückliste für Ihr Projekt“.
Das Handbuch enthält Informationen darüber, was eine Software-Stückliste ist, den SPDX-Standard und Anweisungen zum Hinzufügen von Dateien, Bildern, Verzeichnissen und anderen Quellen zu Ihrer SBOM.
bom generate
bom document
So installieren Sie bom
:
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
ist der bom
-Unterbefehl zum Generieren von SPDX-Manifesten.
Unterstützt derzeit die Erstellung von SBOM aus Dateien, Bildern und Docker-Archiven (Bilder in Tarballs). Es unterstützt das Abrufen von Bildern aus Remote-Registern zur Analyse.
bom kann mithilfe einer wachsenden Anzahl von Analysegeräten einen tieferen Blick auf Bilder werfen, um gemeinsamen Basisbildern mehr Aussagekraft zu verleihen.
Die SBOM-Daten können auch in eine vollständige Herkunftsbescheinigung exportiert werden. Die Ausgabe erzeugt eine Herkunftsangabe, die alle SPDX-Daten als Gesamtsubjekte auflistet, ansonsten aber bereit ist, zu einem späteren Zeitpunkt in Ihrer CI/CD-Pipeline vervollständigt zu werden. Weitere Einzelheiten finden Sie unter der Flagge --provenance.
Usage:
bom generate [flags]
Flags:
-a, --analyze-images go deeper into images using the available analyzers
--archive strings list of archives to add as packages (supports tar, tar.gz)
-c, --config string path to yaml SBOM configuration file
-d, --dirs strings list of directories to include in the manifest as packages
-f, --file strings list of files to include
--format string format of the document (supports tag-value, json) (default "tag-value")
-h, --help help for generate
--ignore strings list of regexp patterns to ignore when scanning directories
-i, --image strings list of images
--image-archive strings list of docker archive tarballs to include in the manifest
-l, --license string SPDX license identifier to declare in the SBOM
--name string name for the document, in contrast to URLs, intended for humans
-n, --namespace string an URI that serves as namespace for the SPDX doc
--no-gitignore don't use exclusions from .gitignore files
--no-gomod don't perform go.mod analysis, sbom will not include data about go packages
--no-transient don't include transient go dependencies, only direct deps from go.mod
-o, --output string path to the file where the document will be written (defaults to STDOUT)
--provenance string path to export the SBOM as an in-toto provenance statement
--scan-images scan container images to look for OS information (currently debian only) (default true)
Global Flags:
--log-level string the logging verbosity, either 'panic', 'fatal', 'error', 'warning', 'info', 'debug', 'trace' (default "info")
bom document
Der bom document subcommand
kann SBOMs visualisieren und sie nach Informationen abfragen.
bom document → Work with SPDX documents
Usage:
bom document [command]
Available Commands:
outline bom document outline → Draw structure of a SPDX document
query bom document query → Search for information in an SBOM
bom document outline
Mithilfe bom document outline
können SBOM-Inhalte gerendert werden, um zu sehen, wie die darin enthaltenen Informationen strukturiert sind. Hier ist ein Beispiel für die Darstellung des debian:bookworm-slim
Images für amd64:
bom generate --output=debian.spdx --image
debian@sha256:0aac521df91463e54189d82fe820b6d36b4a0992751c8339fbdd42e2bc1aa491 | bom document outline -
bom document outline debian.spdx
_
___ _ __ __| |_ __
/ __| '_ / _` / /
__ |_) | (_| |> <
|___/ .__/ __,_/_/_
|_|
SPDX Document SBOM-SPDX-71f1009c-dc17-4f4d-b4ec-72210c1a8d7f
│
│ ? DESCRIBES 1 Packages
│
├ sha256:0aac521df91463e54189d82fe820b6d36b4a0992751c8339fbdd42e2bc1aa491
│ │ ? 1 Relationships
│ └ CONTAINS PACKAGE sha256:b37cbf60a964400132f658413bf66b67e5e67da35b9c080be137ff3c37cc7f65
│ │ │ ? 86 Relationships
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE bsdutils@1:2.38.1-4
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]+git20210903+057cd650a4ed-9
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE diffutils@1:3.8-3
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]~rc1-1+b1
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]
│ │ ├ CONTAINS PACKAGE [email protected]+nmu1
│ │ ├ CONTAINS PACKAGE [email protected]
[trimmed]
Die folgenden Beispiele zeigen, wie bom verschiedene Quellen verarbeiten kann, um eine SPDX-Stückliste zu erstellen. Mehrere Quellen können kombiniert werden, um ein Dokument zu erhalten, das verschiedene Pakete beschreibt.
Um ein Verzeichnis als Quelle für Ihr SBOM zu verarbeiten, verwenden Sie das Flag -d
oder übergeben Sie einfach den Pfad (oder das aktuelle Verzeichnis) als erstes Argument an bom generate
:
bom generate .
In diesem Beispiel wird das kube-apiserver
-Image abgerufen, analysiert und im SBOM beschrieben. Jede seiner Schichten wird dann im resultierenden Dokument als Unterpaket ausgedrückt:
bom generate -n http://example.com/ --image registry.k8s.io/kube-apiserver:v1.21.0
Sie können eine SBOM nur mit Dateien im Manifest erstellen. Verwenden Sie dazu -f
:
bom generate -n http://example.com/
-f Makefile
-f file1.exe
-f document.md
-f other/file.txt
Die Teilnahme an der Kubernetes-Community unterliegt dem Kubernetes-Verhaltenskodex.