Skip to main content

SBOM vs. license page

Is an SBOM the same as a license compliance page?

No. An SBOM is a machine-readable component list for security teams; procurement and legal reviewers need reviewed disclosure with full license text. A different artifact.

Last updated: July 2, 2026

Security teams, CRA programs, and supply-chain initiatives increasingly produce software bills of materials: CycloneDX, SPDX, Syft exports, GitHub dependency graphs. An SBOM lists components (names, versions, hashes, suppliers) and often a license field copied from package metadata.

Procurement, legal, and license compliance reviews ask for something different: Reviewed third-party license disclosure with full license text, attribution where required, and a record tied to what you actually ship. Not a machine-readable file alone.

Confusing the two is common after CRA training or SOC 2 prep. Teams finish SBOM work and assume license compliance is done. Buyers and auditors then ask for open-source license obligations, and the gap appears.

This page is the concept comparison. The hands-on walkthrough for turning an SBOM into a compliance page lives in the guides section as "SBOM to compliance page".

What is an SBOM for?

An SBOM is a machine-readable component inventory built for security and supply-chain tooling, not a license disclosure. The NTIA minimum elements define it as supplier, component name, version, unique identifiers, dependency relationships, and author, which is identity data for vulnerability matching rather than reviewed license text.

Security tooling matches CVEs to component identities. CRA Annex I documentation expects component lists in commonly used formats. Vulnerability response teams trace blast radius through dependency graphs.

SBOM license fields are starting points, not approvals. SPDX identifiers in CycloneDX often come from npm registry metadata, which is frequently wrong, incomplete, or marked NOASSERTION. AppSec teams rarely attach full GPL or proprietary SDK license text to an SBOM export.

  • Component identity (name, version, PURL, hash) for vulnerability matching.
  • Supplier and author metadata for supply-chain traceability.
  • Machine-readable format (CycloneDX, SPDX) for tooling and regulatory documentation.
  • Input to CRA component documentation and product-security programs.
  • Drift detection when CI generates a new SBOM each build.
  • Not: Human-readable third-party license disclosure for legal review.
  • Not: Full license text, notice, or attribution blocks per component.
  • Not: Publish gates confirming a human reviewed each obligation.

What does third-party license disclosure provide that an SBOM does not?

License disclosure provides reviewed, human-readable license text, attribution, and notices tied to a specific shipped release, which an SBOM does not. An SBOM answers "what components are here" for security tooling; disclosure answers "what are we legally obligated to reproduce when we ship this" for procurement and legal.

Third-party license disclosure answers procurement and legal questions: What open-source and third-party software is in this product, under which licenses, with what notice and attribution, as of which reviewed release.

In multi-person engineering teams, dependencies change constantly. One engineer merges a patch; another adds an SDK; transitive packages shift. A disclosure record only works if it is re-imported, re-reviewed, and re-published when the codebase changes, whether you host it at a URL or attach an export to a questionnaire.

  • Reviewed inventory per shipped product, not raw registry metadata.
  • Full license text for each in-scope component, not SPDX ID alone.
  • Attribution and copyright notice where MIT, Apache, BSD, GPL require them.
  • Copyleft and custom-license rows blocked until explicit review.
  • Clear product scope: Which SKU or release the record covers.
  • Publish approval: Someone accountable before external share.
  • Maintenance process: Update when lockfiles or SBOMs change.

Side-by-side: SBOM vs license compliance record

Keep this table at hand when a questionnaire asks for both "SBOM" and "open-source license compliance." They overlap on inventory but not on deliverable.

SBOMReviewed license record
Primary audienceSecurity teams and CRA programsProcurement and legal reviewers
FormatMachine-readable JSON or XMLReadable page or reviewed export
License fieldAn identifier hint from registry metadataFull license text after human review
ReviewOften fully automatedA human gate before anything publishes
CRA contextAnnex I component documentationA separate, long-standing buyer expectation
UpdatesRegenerated per buildRe-reviewed obligations, not just a diff

Does finishing an SBOM program satisfy license compliance?

No. You can generate perfect CycloneDX files on every release and still fail a procurement review that asks for license compliance, because an SBOM lists components but does not reproduce the license text, notices, and attribution that distribution obligations require.

The buyer opens your attachment, sees component names and "MIT" strings, and asks where the license text is.

CRA pushes organizations to document components, which accelerates SBOM adoption. It does not replace decades of buyer expectation that vendors maintain third-party license disclosure. EU product-security documentation and enterprise RFP license sections are parallel tracks.

Security teams own vulnerability severity, patching, incident reporting. License obligations (notice, attribution, copyleft conditions) need an owner who reviews before external share. That owner is rarely the same person who merges Dependabot PRs.

How SBOM and license workflows connect

The efficient model imports the same SBOM or lockfile into both pipelines. Security consumes the SBOM for CVEs and CRA docs. Compliance imports the same file into a review queue: Each component needs review, full text, approve, then publish to a disclosure record.

When the SBOM changes on the next release, both teams react. Security rescans for vulnerabilities. Compliance re-reviews new or changed license rows. One inventory source, two outputs. Neither output substitutes for the other.

  • Import CycloneDX, SPDX, or lockfiles once per release candidate.
  • Security: Vulnerability scan, CRA documentation, incident traceability.
  • Compliance: License match, full text attach, copyleft escalation, publish gate.
  • Publish disclosure record from approved snapshot (page or export as buyer requires).
  • Drift check: Flag SBOM changes that lack compliance re-approval.

Common mistakes

Uploading SBOM JSON to a vendor portal and calling it license compliance. Pasting SPDX IDs into a spreadsheet without text. Assuming FOSSA or Snyk license scan equals reviewed disclosure without publish gates.

Generating a PDF from SBOM tooling once and reusing it across releases while engineers keep merging dependencies. The same stale-snapshot problem as any static export, regardless of format.

Continue reading

Related topics

One idea per page: Follow the path that matches your next question.

Cookies on sourcetrust.dev

We use essential cookies for security, including abuse prevention on our site scan and walkthrough request form. With your permission, we also use optional analytics and diagnostics (Google Tag Manager on this site, and the Sentry browser SDK on the SourceTrust application when configured). See our cookie policy.