Safeguard
Compliance•

How do you run a license review from an SBOM, step by step?

Export license data from your SBOM, normalise to SPDX identifiers, fill gaps, apply your policy, and hand the hard cases to counsel. Not legal advice.

Safeguard Security Team
3 min read

Export the licence field for every component in your SBOM, normalise the values to SPDX identifiers, fill the gaps by hand, compare against your approved list, and send the unclear cases to someone qualified to advise. This is an engineering process, not legal advice.

Why the SBOM is the right starting point

Licence questions come up at release time, in due diligence, and when a customer asks. If the answer lives in your SBOMs, you can give it without cloning repositories. CycloneDX lists licensing conflicts alongside outdated components and vulnerabilities as risks that component inventories help identify.

Step 1: export the licence data

Pull component name, version, ecosystem and licence from every SBOM in scope. Note which SBOM revision and date you used.

Step 2: normalise to SPDX identifiers

The SPDX License List gives each commonly found licence a standardised short identifier, a full name and a canonical URL, so licences can be identified efficiently and reliably. The listed version at the time of writing was 3.29.0, dated 16 September 2026. Map free text such as "MIT License" or "Apache 2" to the identifier. Where a licence has an exception, SPDX expresses it with the WITH operator.

Step 3: measure coverage first

Before judging licences, count how many components have no licence value. If that is a large share, the review is incomplete however the rest looks. See NOASSERTION versus NONE for what empty values mean.

Step 4: fill gaps

For each unknown, open the package metadata and the repository licence file. Record what you found, where, and the date. Do not guess.

Step 5: apply a policy

Write the policy once, as a list your team can read.

CategoryTypical handling
On the approved listPass
On a review listNeeds a named approver
On a blocked listFail the release or require removal
UnknownTreat as review until resolved

Whether a licence belongs on which list depends on how you distribute your software, so your policy should come from your counsel and your own product facts. A hosted service, a downloadable app and a library each interact with licences differently.

Step 6: keep the record

Store the decision with the component, version, reviewer and date. When the component changes version, the licence can change too, so re-check on upgrade.

Step 7: automate the repeat

After the first pass, run the same check in your pipeline so new components with unknown or blocked licences are flagged when they arrive, not at release.

One practical tip: keep a short glossary beside the policy, so reviewers use the same words for the same cases. "Unknown", "unreviewed" and "approved with condition" are different states, and mixing them is how a component slips through. Review the glossary when your product changes how it distributes software.

Safeguard stores SBOMs and evidence in one place, and its policies and gates can act on dependency findings. A free scan is a quick way to see your component list.

Quick check

Can the SBOM tell me whether I can ship a component?

It tells you the declared licence. Whether that licence fits your distribution model is a question for your counsel.

What if a licence field is empty?

Treat it as unknown, check the source, and record what you find. Do not assume permissive.

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.