bom
: a multiferramenta SBOM bom
? bom
é um utilitário que permite criar, visualizar e transformar Listas de Materiais de Software (SBOMs). bom
foi criado como parte do projeto de criação de um SBOM para o projeto Kubernetes. Ele permite que os autores de software gerem um SBOM para seus projetos de maneira simples, mas poderosa.
bom é um projeto incubado no Automating Compliance Toling TAC da Linux Foundation
bom
é uma ferramenta de uso geral que pode gerar pacotes SPDX a partir de diretórios, imagens de contêiner, arquivos únicos e outras fontes. O utilitário possui um classificador de licença integrado que reconhece mais de 400 licenças no catálogo SPDX.
Outros recursos incluem análise de dependência Golang e suporte completo .gitignore
ao verificar repositórios git.
Para obter instruções mais detalhadas sobre como criar um SBOM para o seu projeto, consulte "Gerando uma lista de materiais para o seu projeto".
O guia inclui informações sobre o que é uma lista de materiais de software, o padrão SPDX e instruções para adicionar arquivos, imagens, diretórios e outras fontes ao seu SBOM.
bom generate
bom document
Para instalar bom
:
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
é o subcomando bom
para gerar manifestos SPDX.
Atualmente oferece suporte à criação de SBOM a partir de arquivos, imagens e arquivos docker (imagens em tarballs). Ele suporta a extração de imagens de registros remotos para análise.
bom pode analisar mais profundamente as imagens usando um número crescente de analisadores projetados para adicionar mais sentido às imagens de base comum.
Os dados SBOM também podem ser exportados para um atestado de proveniência in-toto. A saída produzirá uma declaração de proveniência listando todos os dados SPDX como assuntos in-toto, mas pronta para ser concluída em um estágio posterior em seu pipeline de CI/CD. Veja o sinalizador --provence para mais detalhes.
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
O bom document subcommand
pode visualizar SBOMs, bem como consultá-los em busca de informações.
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
o conteúdo do SBOM pode ser renderizado e ver como as informações que eles contêm estão estruturadas. Aqui está um exemplo de renderização da imagem 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]
Os exemplos a seguir mostram como o bom pode processar diferentes fontes para gerar uma lista de materiais SPDX. Múltiplas fontes podem ser combinadas para obter um documento descrevendo diferentes pacotes.
Para processar um diretório como fonte para seu SBOM, use o sinalizador -d
ou simplesmente passe o caminho (ou diretório atual) como primeiro argumento para bom generate
:
bom generate .
Este exemplo extrai a imagem kube-apiserver
, analisa-a e descreve-a no SBOM. Cada uma de suas camadas é então expressa como um subpacote no documento resultante:
bom generate -n http://example.com/ --image registry.k8s.io/kube-apiserver:v1.21.0
Você pode criar um SBOM apenas com arquivos no manifesto. Para isso, use -f
:
bom generate -n http://example.com/
-f Makefile
-f file1.exe
-f document.md
-f other/file.txt
A participação na comunidade Kubernetes é regida pelo Código de Conduta do Kubernetes.
![]() | ![]() | ![]() |