SBOMs, Component Provenance, Vulnerability Governance, Repository Firewall Concepts, and Supply-Chain Risk: Concepts, Architecture, and Mental Model
Build a layered evidence model around one artifact. Nexus Repository can store and serve bytes, but identity, inventory, origin, vulnerability knowledge, signatures, transport security, and policy decisions are distinct claims with distinct failure modes.
Learning objectives
- Separate artifact coordinates, cryptographic digests/checksums, source commits, build identity, SBOM inventory, provenance, signatures, vulnerability intelligence, and policy disposition.
- Explain what an SBOM can and cannot prove and why vulnerability data embedded in it ages independently from artifact bytes.
- Explain provenance/attestation as build-origin evidence tied to an artifact digest rather than a second package coordinate.
- Place Nexus Repository and Repository Firewall correctly inside the broader evidence and enforcement system.
- Inspect read-only Nexus/component evidence before mutating any repository or policy state.
1. The practical problem: “we have the artifact” is not enough
Chapter 22 added policy evaluation at the repository boundary. Chapter 23 asks a harder question: what evidence supports a decision about one artifact? A release can have a Maven coordinate, SHA-256 digest, source commit, build run ID, SBOM, provenance statement, package signature, vulnerability report, and repository policy result. Those values are related, but they are not interchangeable.
If an incident response runbook stores only the coordinate
com.example:learner-widget:1.0.0, it may not prove
which bytes were used. If it stores only the SHA-256, it still does
not explain which source or builder produced those bytes. If it
stores only an SBOM, it still does not establish who produced the
application or whether the inventory is complete. Precision begins
by naming the claim.
2. One artifact, many evidence layers
| Evidence | Main question answered | Typical stability | Does not prove |
|---|---|---|---|
| Coordinate/version | What logical package name/version did the ecosystem request? | Usually intended to be stable; mutability rules vary. | Exact bytes unless immutable mapping is enforced. |
| Digest/checksum | Are these bytes identical to the expected bytes? | Immutable for the same bytes. | Trusted origin, vulnerability status, or authorization. |
| Source commit | Which source revision is claimed? | Commit ID is immutable in Git; repository refs are not. | That the binary actually came from that commit. |
| Build identity | Which build invocation/platform produced output? | Immutable record if preserved. | That the claim is authentic unless attested/verified. |
| SBOM | Which components/dependencies are represented in this software? | Point-in-time document for one software build/version. | Complete provenance or future vulnerability safety. |
| Provenance/attestation | Where, when, and how was the artifact produced? | Evidence should be immutable for a build. | Absence of vulnerabilities. |
| Signature | Does signed content verify under a particular key/trust policy? | Signature bytes are stable; trust/revocation can evolve. | Security quality or vulnerability-free content. |
| Vulnerability intelligence | What risks are currently known for identified components? | Mutable/time-varying. | Artifact byte identity. |
| Policy disposition | What did governance decide at a given time/context? | Mutable as policy/evidence/waivers change. | Objective proof that the component is malicious or safe. |
3. Mental model: evidence and enforcement surround repository storage
flowchart TD
SRC[Source commit] --> BUILD[Build invocation]
BUILD --> ART[Artifact bytes]
BUILD --> PROV[Provenance attestation]
BUILD --> SBOM[SBOM inventory]
ART --> HASH[Digest / checksum]
ART --> NX[Nexus hosted or proxy repository]
NX --> DB[(Repository metadata DB)]
NX --> BLOB[(Blob content)]
SBOM --> IDENT[Component identities]
IDENT --> VULN[Time-varying vulnerability intelligence]
PROV --> GOV[Verification / policy]
HASH --> GOV
VULN --> GOV
FW[Repository Firewall policy] --> GOV
GOV --> DEC{{Allow / quarantine / hold / waive}}
DEC --> CONSUME[Downstream consumption]
The database/blob pair is Nexus state. The SBOM, provenance, vulnerability feed, signature trust, and policy history may live in other systems. A production evidence packet links them by immutable identifiers—most importantly cryptographic digests—rather than pretending they are one database record.
4. Coordinate is not digest; digest is not provenance
Package managers commonly use coordinates such as group/name/version, npm scope/name/version, Python project/version, NuGet ID/version, or image tag. Coordinates are essential for discovery and dependency resolution, but a mutable repository or tag can map the same logical name to different bytes. A cryptographic digest fixes that ambiguity for a particular byte sequence.
That still leaves origin. A SHA-256 such as
sha256:3f… tells you whether two copies match; it does
not tell you who built them. Provenance ties an output
subject—normally identified by digest—to builder and build-process
information. SLSA’s current provenance model explicitly treats
provenance as verifiable information about where, when, and how an
artifact was produced.
5. SBOM: inventory, not a universal security certificate
A Software Bill of Materials is an inventory of software components and relationships. Current Sonatype documentation supports SBOM workflows in CycloneDX and SPDX; CycloneDX commonly identifies components with Package-URL (PURL), hashes, and coordinates. The important operational property is that an SBOM describes a particular application/build context.
Sonatype’s current best-practice guidance warns that vulnerability data inside an SBOM is point-in-time information. The dependencies can remain unchanged while new CVEs or exploitability information appears later. Therefore archive the SBOM as immutable evidence for the build, but re-evaluate the represented components against current intelligence.
6. Provenance and attestation: claims about production
Provenance is evidence about how the artifact was created. In the SLSA build model, the provenance identifies output artifacts by cryptographic digest and describes the builder/build process and relevant inputs. An attestation is a structured, potentially signed statement containing such claims. Verification asks whether the subject digest matches the artifact and whether the attestation satisfies an expected trust policy.
7. Checksum, signature, and TLS are three different controls
- Checksum/digest: detects byte mismatch relative to an expected value.
- Digital signature: binds data to a signing identity/key under a verifier’s trust model. Key compromise, revocation, identity policy, and timestamping still matter.
- TLS: protects/authenticates the network channel endpoint according to certificate trust while data is in transit. It does not turn downloaded bytes into a signed release artifact.
Disabling TLS verification because a client cannot connect destroys transport assurance. Ignoring a checksum mismatch destroys identity assurance. Accepting an untrusted signature because it is cryptographically valid ignores the trust-policy layer.
8. Repository Firewall belongs at admission/consumption, not inside the SBOM
Repository Firewall, taught in Chapter 22, can evaluate newly requested components against licensed policy and quarantine policy-violating content. That is a repository-boundary control. It does not replace build provenance or make an SBOM unnecessary, and a Firewall policy result can change independently of the artifact bytes.
Also remember the bypass problem: if CI or developer machines can silently switch to public upstreams when Nexus denies a component, the repository policy is not an authoritative control. Endpoint governance and network/client configuration are part of the security model.
9. Read-only inspection before mutation
Before adding evidence or changing policy, prove the current repository state:
- Record Nexus version/edition/runtime and repository name/type/format.
- Browse the component and identify every associated asset.
- Capture the package coordinate/version and any repository-reported checksums available for the asset.
- Use a fresh client or direct download to calculate SHA-256 independently.
- Record whether the artifact came from hosted publication, proxy cache, or group routing.
- Record the evidence system separately: SBOM file/version, provenance file, vulnerability snapshot timestamp, signature status, policy decision.
# Disposable downloaded file only
sha256sum learner-widget-1.0.0.jar
# PowerShell equivalent
Get-FileHash .\learner-widget-1.0.0.jar -Algorithm SHA256
A digest comparison is useful only when you state which expected digest you are comparing against and where that expectation came from.
10. State map: where evidence actually lives
| State | Typical owner | Safe operating rule |
|---|---|---|
| Nexus repository config/component metadata | Nexus database | Use supported UI/API; do not edit tables. |
| Artifact bytes | Nexus blob store | Never edit/delete blob files directly. |
| SBOM/provenance files | Build/evidence system or governed artifact store | Link to immutable artifact digest and control access. |
| Vulnerability intelligence | Scanner/intelligence service | Timestamp evaluations and expect change. |
| Policy/waiver decisions | Governance system | Record scope, rationale, owner, expiry, policy version. |
| Client cache | Developer/CI machine | Do not mistake cached success for current repository policy. |
11. Why this matters in DevOps
Reliable delivery needs a verifiable chain from source and build to repository and deployment. When a production incident occurs, the team should be able to answer: which exact bytes were deployed, which source/build produced them, which components were represented, what risk intelligence was known at the decision time, what policy allowed the release, and whether later intelligence changes require action. Nexus is one important custody/distribution boundary in that chain—not the entire chain.
12. Knowledge check
Two files have the same Maven coordinate but different SHA-256 values. What does that prove?
The logical coordinate is not sufficient to identify the exact bytes in this scenario. Treat the digest as the artifact byte identity and investigate why the coordinate is mutable or inconsistent.
An SBOM generated six months ago lists no CVE for a dependency. Can you conclude the dependency is safe today?
No. Vulnerability intelligence changes over time. Preserve the old SBOM as build inventory evidence and re-evaluate the component identities against current intelligence.
A signature verifies cryptographically. Does that prove the package has no vulnerabilities?
No. Signature verification can support origin/integrity under a trust model; it is not a vulnerability analysis.
What is the strongest simple link among artifact bytes, provenance, and an evidence packet?
A cryptographic digest of the exact artifact, provided each evidence record explicitly names that digest as its subject/reference and the evidence itself is protected.
A build succeeds only after changing npm/pip to reach the public registry directly. What governance problem does that reveal?
The governed Nexus/Firewall route is bypassable. Diagnose the repository/policy failure and close alternate routes if Nexus is meant to be the authoritative consumption boundary.
13. Summary and next step
You now have a layered evidence model: coordinate for logical identity, digest for byte identity, SBOM for inventory, provenance for build origin/process, signatures for authenticated claims, vulnerability intelligence for time-varying risk, and policy for governance. Lesson 2 turns that model into a disposable workflow and deliberately changes the intelligence while keeping the artifact bytes fixed.
Official references and version notes
- Sonatype: Software Bill of Materials (SBOM) — SBOM purpose, CycloneDX/SPDX support, analysis/export concepts, and point-in-time risk context.
- Sonatype: SBOM Best Practices — generate/store an SBOM for each application and do not use embedded vulnerability data as long-term risk state.
- Sonatype: CycloneDX Application Analysis — component identification by Package-URL, hashes, and coordinates plus dependency relationships.
- Sonatype: Repository Firewall — licensed repository-boundary policy enforcement and supported package ecosystems.
- Sonatype: Firewall Configuration for Nexus Repository — current repository-level enforcement model for recent Nexus versions.
- Sonatype: Nexus Repository Feature Matrix — Community/Pro entitlement boundaries; IQ/Firewall remain separate products/licensing.
- Sonatype: Nexus Repository System Requirements — current Java/database/runtime requirements.
- Sonatype nexus-public release 3.95.2-01 — dated Nexus baseline used by this chapter.
- CycloneDX: Specification Overview — current BOM object model, components, dependencies, hashes, and external references.
- CycloneDX 1.7 JSON Reference — current schema reference used to explain fields, not a claim that every Sonatype integration ingests every 1.7 feature.
- SLSA v1.2: Provenance — provenance as verifiable information describing where, when, and how software was produced.
- SLSA v1.2: Build Requirements — output identification by cryptographic digest and provenance-generation/integrity requirements.
Keep the academy open
Support free, practical DevOps education.
Every lesson is designed to remain readable in a browser, downloadable from GitHub, and usable without a paid learning platform. Contributions help expand and maintain the curriculum.
0x716c4Ab160C4B66F31a28AE2448BfF68fc3a2ef0
Send only Ethereum/ERC-20 compatible assets to this
address.