bom
: SBOM 멀티툴 bom
무엇입니까? bom
은 소프트웨어 자재 명세서(SBOM)를 생성, 확인 및 변환할 수 있는 유틸리티입니다. bom
Kubernetes 프로젝트용 SBOM을 생성하기 위한 프로젝트의 일부로 생성되었습니다. 이를 통해 소프트웨어 작성자는 간단하면서도 강력한 방법으로 프로젝트에 대한 SBOM을 생성할 수 있습니다.
bom은 Linux Foundation의 Automating Compliance Toling TAC에서 인큐베이션 중인 프로젝트입니다.
bom
은 디렉터리, 컨테이너 이미지, 단일 파일 및 기타 소스에서 SPDX 패키지를 생성할 수 있는 범용 도구입니다. 이 유틸리티에는 SPDX 카탈로그에 있는 400개 이상의 라이선스를 인식하는 라이선스 분류자가 내장되어 있습니다.
다른 기능으로는 Golang 종속성 분석 및 git 리포지토리 스캔 시 전체 .gitignore
지원이 있습니다.
프로젝트에 대한 SBOM을 생성하는 방법에 대한 자세한 지침은 "프로젝트에 대한 BOM 생성"을 참조하십시오.
이 가이드에는 소프트웨어 BOM(Software Bill of Materials)이 무엇인지, SPDX 표준에 대한 정보와 파일, 이미지, 디렉터리 및 기타 소스를 SBOM에 추가하는 지침이 포함되어 있습니다.
bom generate
bom document
bom
설치하려면 다음을 수행하십시오.
go install sigs.k8s.io/bom/cmd/bom@latest
bom generate
bom generate
는 SPDX 매니페스트를 생성하는 bom
하위 명령입니다.
현재 파일, 이미지 및 Docker 아카이브(tarball의 이미지)에서 SBOM 생성을 지원합니다. 분석을 위해 원격 레지스트리에서 이미지 가져오기를 지원합니다.
bom은 공통 기본 이미지에 더 많은 의미를 추가하도록 설계된 점점 더 많은 분석기를 사용하여 이미지를 더 깊이 살펴볼 수 있습니다.
SBOM 데이터를 내부 출처 증명으로 내보낼 수도 있습니다. 출력에서는 모든 SPDX 데이터를 내부 주제로 나열하는 출처 설명을 생성하지만 그렇지 않으면 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 콘텐츠를 렌더링하여 포함된 정보가 어떻게 구성되어 있는지 확인할 수 있습니다. 다음은 amd64용 debian:bookworm-slim
이미지를 렌더링하는 예입니다:
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 행동 강령이 적용됩니다.