Git, CI/CD & GitOpsLXVIII · SBOMSBOMFoundations
What an SBOM is — the bill of materials for software
What you'll learn
- Define an SBOM and the structural analogy to a manufacturing BOM
- Identify the three core fields every SBOM captures per component
- Distinguish the questions an SBOM answers from the ones it does not
Prerequisites
Verified against Git 2.55.x teaching target; 2.40+ minimum · GitHub Actions continuous service; Aug 2026 documentation baseline · Argo CD v3.5.x teaching target; v3.0+ minimum · Flux v2.9.x · Sigstore Cosign v3.1.x · SLSA v1.2 · OCI Distribution Specification v1.1 · Git LFS v3.7.1 · Kubernetes (cross-course target) 1.36.x
A Software Bill of Materials is a structured inventory of the components inside a software artifact. A car BOM lists every part, its supplier, and its version; a software BOM does the same for an image, a binary, or a release archive: it names the components, the version of each, and the metadata that lets a downstream consumer look each component up.
The structural analogy
A manufacturing BOM answers three questions: what is in it, who supplied each part, and which version was installed. A software SBOM answers the same three for a built artifact: identity (the package name), version (the exact version string the artifact contains), and supplier (the publisher, upstream project, or registry). The software SBOM does not need a quantity field, but it needs a fourth field the manufacturing BOM does not: a content hash that binds the version string to specific bytes.
flowchart LR
A["Finished artifact"] --> B["SBOM"]
B --> C["Component identity"]
B --> D["Component version"]
B --> E["Component supplier"]
B --> F["Hash / checksum"]
What an SBOM does and does not do
Every SBOM captures the same three core facts per component: identity, version, and hash. The operational questions an SBOM answers are the same regardless of format: where are we exposed (vulnerability matching), what is the license posture (license audit), what changed in the last build (diff), and what is the regulatory evidence (audit).
Three limits are worth naming on the first lesson: an SBOM does not verify components (a package at version 1.2.3 may be a recompiled binary that identifies itself as 1.2.3), does not capture runtime behaviour (dynamically loaded packages and configuration fetched at boot may be missing), and does not report exploitability (a CVE match is not an exploit).
Production discipline
- Generate the SBOM at build time, not on demand. An SBOM generated later disagrees with the deployed bytes.
- Anchor the SBOM to the artifact digest.
- Pick one format as the source of truth. Index the SBOM in something that queries it (a matcher, a diff, a license checker).
Cross-course references
- Git, CI/CD & GitOps — Part LIII-05 (SBOM Generation in CI) covers the first use of syft in the container pipeline.
- Container Security for Production Sysadmins — Part VI (SBOM-driven compliance) is the consumer side.
Quiz
Knowledge check · 4 questions
Q1. Which three core facts does every SBOM capture per component, regardless of format?
Q2. An SBOM generated against a source commit is a property of the source commit and stays valid for any rebuild from that commit.
Q3. Name two operational questions an SBOM answers and one thing an SBOM does NOT provide.
Q4. Diagnose why the team cannot answer the regulator's question.
Team T runs 12 services. CI generates an SBOM with syft and uploads it as a CI artifact with 30-day retention. A regulator asks six months later for the SBOM of the production image deployed at the time of an incident. The team cannot find the SBOM; the artifact retention expired.
Passing score: 75%. Answers are checked in this browser.