bom
: La multiherramienta SBOM bom
? bom
es una utilidad que le permite crear, ver y transformar listas de materiales de software (SBOM). bom
se creó como parte del proyecto para crear un SBOM para el proyecto Kubernetes. Permite a los autores de software generar un SBOM para sus proyectos de una manera simple pero poderosa.
bom es un proyecto que se está incubando en el TAC Automating Compliance Toling de la Fundación Linux.
bom
es una herramienta de propósito general que puede generar paquetes SPDX a partir de directorios, imágenes de contenedores, archivos individuales y otras fuentes. La utilidad tiene un clasificador de licencias incorporado que reconoce más de 400 licencias en el catálogo SPDX.
Otras características incluyen análisis de dependencia de Golang y soporte completo .gitignore
al escanear repositorios de git.
Para obtener instrucciones más detalladas sobre cómo crear un SBOM para su proyecto, consulte "Generar una lista de materiales para su proyecto".
La guía incluye información sobre qué es una lista de materiales de software, el estándar SPDX e instrucciones para agregar archivos, imágenes, directorios y otras fuentes a su SBOM.
bom generate
bom document
Para instalar bom
:
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
es el subcomando bom
para generar manifiestos SPDX.
Actualmente admite la creación de SBOM a partir de archivos, imágenes y archivos acoplables (imágenes en archivos tar). Admite la extracción de imágenes de registros remotos para su análisis.
bom puede observar más profundamente las imágenes utilizando un número creciente de analizadores diseñados para agregar más sentido a las imágenes base comunes.
Los datos de SBOM también se pueden exportar a una atestación de procedencia integral. El resultado producirá una declaración de procedencia que enumerará todos los datos SPDX como temas integrales, pero que, por lo demás, estará listo para completarse en una etapa posterior de su proceso de CI/CD. Consulte la bandera --procedencia para obtener más detalles.
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
El bom document subcommand
puede visualizar SBOM y consultarlos para obtener información.
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
Usando bom document outline
los contenidos SBOM se pueden representar y ver cómo está estructurada la información que contienen. Aquí hay un ejemplo que representa la imagen debian:bookworm-slim
para 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]
Los siguientes ejemplos muestran cómo bom puede procesar diferentes fuentes para generar una lista de materiales SPDX. Se pueden combinar varias fuentes para obtener un documento que describa diferentes paquetes.
Para procesar un directorio como fuente para su SBOM, use el indicador -d
o simplemente pase la ruta (o el directorio actual) como primer argumento para bom generate
:
bom generate .
Este ejemplo extrae la imagen kube-apiserver
, la analiza y la describe en el SBOM. Luego, cada una de sus capas se expresa como un subpaquete en el documento resultante:
bom generate -n http://example.com/ --image registry.k8s.io/kube-apiserver:v1.21.0
Puede crear un SBOM solo con archivos en el manifiesto. Para eso, use -f
:
bom generate -n http://example.com/
-f Makefile
-f file1.exe
-f document.md
-f other/file.txt
La participación en la comunidad de Kubernetes se rige por el Código de conducta de Kubernetes.