bom
: Мультитул SBOM bom
? bom
— это утилита, которая позволяет создавать, просматривать и преобразовывать спецификации программного обеспечения (SBOM). bom
был создан в рамках проекта по созданию SBOM для проекта Kubernetes. Он позволяет авторам программного обеспечения создавать SBOM для своих проектов простым, но эффективным способом.
bom — это проект, находящийся в стадии разработки в Центре автоматизации соответствия требованиям Toling TAC Linux Foundation.
bom
— это инструмент общего назначения, который может генерировать пакеты SPDX из каталогов, образов контейнеров, отдельных файлов и других источников. Утилита имеет встроенный классификатор лицензий, который распознает более 400 лицензий в каталоге SPDX.
Другие функции включают анализ зависимостей Golang и полную поддержку .gitignore
при сканировании репозиториев git.
Более подробные инструкции о том, как создать SBOM для вашего проекта, см. в разделе «Создание спецификации для вашего проекта».
Руководство включает информацию о том, что такое спецификация программного обеспечения, стандарте SPDX и инструкции по добавлению файлов, изображений, каталогов и других источников в ваш SBOM.
bom generate
bom document
Чтобы установить bom
:
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
— это подкоманда bom
для создания манифестов SPDX.
В настоящее время поддерживается создание SBOM из файлов, изображений и архивов Docker (изображения в архивах). Он поддерживает получение изображений из удаленных реестров для анализа.
bom может глубже изучать изображения, используя растущее число анализаторов, призванных придать больше смысла общим базовым изображениям.
Данные SBOM также можно экспортировать в аттестацию происхождения in-toto. В результате будет получен отчет о происхождении, в котором будут перечислены все данные SPDX как объекты in-toto, но в остальном он будет готов к завершению на более позднем этапе вашего конвейера CI/CD. Дополнительную информацию смотрите в флаге --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
bom document subcommand
может визуализировать SBOM, а также запрашивать у них информацию.
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
Используя bom document outline
можно визуализировать содержимое SBOM, а также увидеть, как структурирована содержащаяся в нем информация. Вот пример рендеринга образа debian:bookworm-slim
для 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]
Следующие примеры показывают, как компания bom может обрабатывать различные источники для создания спецификации материалов SPDX. Несколько источников можно объединить, чтобы получить документ, описывающий различные пакеты.
Чтобы обработать каталог как источник для вашего SBOM, используйте флаг -d
или просто передайте путь (или текущий каталог) в качестве первого аргумента bom generate
:
bom generate .
Этот пример извлекает образ kube-apiserver
, анализирует его и описывает в SBOM. Каждый из его слоев затем выражается как подпакет в результирующем документе:
bom generate -n http://example.com/ --image registry.k8s.io/kube-apiserver:v1.21.0
Вы можете создать SBOM, используя только файлы в манифесте. Для этого используйте -f
:
bom generate -n http://example.com/
-f Makefile
-f file1.exe
-f document.md
-f other/file.txt
Участие в сообществе Kubernetes регулируется Кодексом поведения Kubernetes.