bom
: Le multi-outil SBOM bom
? bom
est un utilitaire qui vous permet de créer, visualiser et transformer des nomenclatures logicielles (SBOM). bom
a été créé dans le cadre du projet de création d'un SBOM pour le projet Kubernetes. Il permet aux auteurs de logiciels de générer un SBOM pour leurs projets d'une manière simple mais puissante.
bom est un projet en incubation dans le cadre du TAC Automating Compliance Toling de la Linux Foundation.
bom
est un outil à usage général qui peut générer des packages SPDX à partir de répertoires, d'images de conteneurs, de fichiers uniques et d'autres sources. L'utilitaire dispose d'un classificateur de licences intégré qui reconnaît les plus de 400 licences du catalogue SPDX.
Les autres fonctionnalités incluent l'analyse des dépendances Golang et la prise en charge complète de .gitignore
lors de l'analyse des référentiels git.
Pour des instructions plus détaillées sur la façon de créer un SBOM pour votre projet, voir « Génération d'une nomenclature pour votre projet ».
Le guide comprend des informations sur ce qu'est une nomenclature logicielle, la norme SPDX et des instructions pour ajouter des fichiers, des images, des répertoires et d'autres sources à votre SBOM.
bom generate
bom document
Pour installer bom
:
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
est la sous-commande bom
pour générer des manifestes SPDX.
Prend actuellement en charge la création de SBOM à partir de fichiers, d'images et d'archives Docker (images dans des archives tar). Il prend en charge l'extraction d'images à partir de registres distants pour analyse.
bom peut examiner plus en profondeur les images à l’aide d’un nombre croissant d’analyseurs conçus pour ajouter plus de sens aux images de base communes.
Les données SBOM peuvent également être exportées vers une attestation de provenance intégrale. La sortie produira une déclaration de provenance répertoriant toutes les données SPDX en tant que sujets intégrés, mais prête à être complétée à une étape ultérieure de votre pipeline CI/CD. Voir l'indicateur --provenance pour plus de détails.
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
La bom document subcommand
peut visualiser les SBOM et les interroger pour obtenir des informations.
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
En utilisant bom document outline
le contenu SBOM peut également être restitué pour voir comment les informations qu'ils contiennent sont structurées. Voici un exemple de rendu de l'image debian:bookworm-slim
pour 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]
Les exemples suivants montrent comment bom peut traiter différentes sources pour générer une nomenclature SPDX. Plusieurs sources peuvent être combinées pour obtenir un document décrivant différents packages.
Pour traiter un répertoire comme source de votre SBOM, utilisez l'indicateur -d
ou transmettez simplement le chemin (ou le répertoire actuel) comme premier argument à bom generate
:
bom generate .
Cet exemple extrait l'image kube-apiserver
, l'analyse et la décrit dans le SBOM. Chacune de ses couches est ensuite exprimée sous forme de sous-package dans le document résultant :
bom generate -n http://example.com/ --image registry.k8s.io/kube-apiserver:v1.21.0
Vous pouvez créer un SBOM avec uniquement des fichiers dans le manifeste. Pour cela, utilisez -f
:
bom generate -n http://example.com/
-f Makefile
-f file1.exe
-f document.md
-f other/file.txt
La participation à la communauté Kubernetes est régie par le Code de conduite Kubernetes.