Safeguard
Supply Chain•

How do you name and store an SBOM for every release?

Name each SBOM by release ID and artifact digest, give it a unique serial number, store it read-only beside the release, and never overwrite an old one.

Safeguard Security Team
3 min read

Name each SBOM after the release it describes, include the artifact digest, give it a unique serial number, and store it read-only next to the release record. Never overwrite an older SBOM. If you must correct one, publish a new revision and keep the old.

Why naming matters

An SBOM you cannot match to a specific build is nearly useless in an audit or an incident. Months later someone will ask what a given release contained when a new advisory lands. If the answer depends on guessing which file belongs to which build, you have lost the benefit.

NIST SP 800-218 practice PS.3.2 asks organizations to collect, safeguard, maintain and share provenance data for all components of each software release, for example in an SBOM. The practice is per release, so your storage should be too.

Fields that help you match and track

The CycloneDX specification gives you built-in fields for this.

FieldWhat the spec saysHow to use it
serialNumberEvery BOM should have a unique serial number, a lowercase RFC 4122 UUID in URN formOne per generated SBOM, even if contents are unchanged
versionInteger starting at 1, increment when the BOM is modifiedRevisions of the same SBOM
metadata.timestampWhen the BOM was createdEvidence of when it was generated

When a system receives several BOMs with the same serial number, the spec says it should use the highest version. So keep the serial number stable for a revision and change it for a new generation.

A naming pattern

Use something readable and sortable, for example:

product-name_1.8.2_sha256-ab12cd34_sbom.cdx.json

The release version tells people what it is. The shortened digest ties it to the exact artifact. Put the full digest inside the document metadata too.

Where to store it

  1. In the artifact registry or release bucket beside the build, so they travel together.
  2. In the release evidence pack, linked by release ID.
  3. With write protection, so edits require a deliberate new revision.
  4. With a retention rule that matches your audit and customer commitments.

Generate it from the build, not from the repo

An SBOM generated from source can differ from what was actually built. Where possible, generate it from the final artifact or during the build, then compare it with the dependency lockfile as a sanity check.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at how each component is listed with its version, and imagine that list frozen against a release ID.

Safeguard provides SBOM and dependency scanning, and a free scan is available at gold.safeguard.sh/scan.

Quick check

Do we need a new serial number for every release?

Yes. Each generated SBOM should have its own unique serial number. Use the version field only for revisions of the same one.

Can we regenerate an old release's SBOM later?

You can, but a regenerated one may differ from the original. Keep the original from release time as the record.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.