bom
: SBOM Multitool bom
คืออะไร? bom
เป็นโปรแกรมอรรถประโยชน์ที่ช่วยให้คุณสามารถสร้าง ดู และแปลงรายการวัสดุซอฟต์แวร์ (SBOM) bom
ถูกสร้างขึ้นโดยเป็นส่วนหนึ่งของโปรเจ็กต์เพื่อสร้าง SBOM สำหรับโปรเจ็กต์ Kubernetes ช่วยให้ผู้เขียนซอฟต์แวร์สามารถสร้าง SBOM สำหรับโครงการของตนด้วยวิธีที่เรียบง่ายแต่ทรงพลัง
bom เป็นโปรเจ็กต์ที่บ่มเพาะใน Automating Compliance 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 จากไฟล์ รูปภาพ และไฟล์เก็บถาวรนักเทียบท่า (รูปภาพใน tarball) รองรับการดึงรูปภาพจากรีจิสตรีระยะไกลเพื่อการวิเคราะห์
bom สามารถมองภาพให้ลึกยิ่งขึ้นโดยใช้เครื่องวิเคราะห์จำนวนมากขึ้น ซึ่งออกแบบมาเพื่อเพิ่มความรู้สึกให้กับภาพพื้นฐานทั่วไป
ข้อมูล SBOM ยังสามารถส่งออกไปยังการรับรองแหล่งที่มาภายในได้ ผลลัพธ์จะสร้างคำสั่งแหล่งที่มาซึ่งแสดงรายการข้อมูล SPDX ทั้งหมดเป็นหัวข้อใน 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
สามารถแสดงภาพ SBOMs รวมทั้งเคียวรีข้อมูลเหล่านั้น
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
หรือเพียงแค่ส่งพาธ (หรือ dir ปัจจุบัน) เป็นอาร์กิวเมนต์แรกที่จะ 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