Container SBOM and Runtime Traceability
🌟 Objective
Ensure that all container images used in pipelines or production have an SBOM (Software Bill of Materials) generated from the real artefact, versioned and traceable, enabling:
- Objective visibility of components, libraries and layers;
- Vulnerability analysis based on the actual content of the image;
- Comparison between versions and detection of unexpected changes;
- Support for regulatory requirements (e.g. SLSA, SSDF, EO 14028).
In the SbD-ToE model, the SBOM is treated as evidence of composition, not as a guarantee of security nor as a substitute for risk analysis.
🧬 What a container SBOM is
A container SBOM represents the effective state of the image after the build, including:
- Installed packages (e.g.
apk,apt,npm,pip); - Transitive dependencies;
- Origin and licensing information;
- Hashes, locations and metadata;
- Known links to CVEs.
🧱 An SBOM is not equivalent to a
Dockerfile, lockfile or declarative manifest.
It describes what is actually present, including side effects of the build process.
⚠️ Complete SBOM ≠ absence of risk
In automated environments, it is essential to avoid incorrect interpretations:
- ✔️ Existing SBOM → visible composition
- ❌ Existing SBOM ≠ secure image
- ❌ SBOM without CVEs ≠ non-existent risk
Typical limitations include:
- undetected dependencies;
- static binaries;
- manually embedded components;
- differences between build environments.
For that reason, the SBOM must be used as a technical input for analysis, not as a conclusion.
📘 Recommended formats and tools
| Format | Supported tools | Technical observations |
|---|---|---|
| CycloneDX | Syft, Trivy, Docker SBOM, GitHub | Lightweight, extensible, suited to pipelines |
| SPDX | SPDX tools, FOSSology | Common in formal audits |
| Syft JSON | Syft (syft image:tag -o json) | Useful for custom validations |
🌟 SbD-ToE recommendation: CycloneDX JSON as the base format for container image SBOMs.
🛠️ How to generate container SBOMs
| Stage | Technical example | Operational notes |
|---|---|---|
| Post-build generation | syft docker:app:tag -o cyclonedx-json | Must reflect the final image |
| Alternative generation | trivy image --format cyclonedx image:tag | May enrich with CVEs |
| CI/CD integration | Mandatory step after build | Automatic execution |
| Versioning | Artefact associated with the image digest | Unambiguous correlation |
Automatic generation does not eliminate the need for human interpretation of the results.
📂 Storage, versioning and correlation
To ensure real traceability:
- Store the SBOM as a versioned artefact;
- Explicitly associate:
- image (digest),
- build,
- pipeline;
- Reference the SBOM via labels or OCI metadata;
- Optionally sign the SBOM or link it to the image signature.
The absence of this correlation reduces the SBOM to an informational file with no auditable value.
🔍 Correct use of the SBOM
In SbD-ToE, the SBOM must be used to:
- Feed SCA scanners and analysis processes;
- Detect unexpected changes between builds;
- Support incident response;
- Justify acceptance or mitigation decisions.
It must not be used as:
- a seal of approval;
- a substitute for contextual analysis;
- proof of the absence of vulnerabilities.
✅ Good practices
- Generate the SBOM automatically after each build;
- Treat the SBOM as a versioned artefact;
- Review the SBOM after base image changes;
- Correlate the SBOM with signature and provenance;
- Use the SBOM as input to documented human decision;
- Review analysis criteria after relevant incidents.
📎 Cross-references
| Document | Relation to container SBOM |
|---|---|
01-imagens-base.md | Approved images must have an associated SBOM |
03-assinatura-cadeia-trust.md | Link between integrity and composition |
07-vulnerabilidades-imagens.md | SCA analysis based on the SBOM |
09-riscos-processo-imagens.md | SBOM as evidence, not decision |
15-aplicacao-lifecycle.md | Operational integration into the lifecycle |
🔍 The SBOM answers the question “what is here?”.
The question “is this acceptable?” still requires human analysis and decision.