Why SBOM management is now a supplier question, not only an engineering task
If your product or platform team must hand over SBOMs to buyers or regulators, the answer to "are we exposed to the new CVE?" cannot depend on someone grepping build folders. The practical setup is Dependency-Track for portfolio-wide component tracking and vulnerability correlation, Trivy to generate and scan an SBOM for every build in CI, and VEX statements to record which findings are not exploitable in your product and why. Together they turn a one-off document into a current, queryable record of what each release contains.
This is different from host or container scanning in one important way. A scanner that inspects a running server answers a question about that machine today. An SBOM question spans every application, every version and every transitive dependency across many builds, and it includes licenses as well as vulnerabilities. Buyers and regulators ask for evidence per release: which components shipped in version 3.4, which of them carried a known vulnerability when it went out, and what the team decided about each one. That history has to be generated automatically and kept, not reconstructed from memory when a questionnaire arrives.
Before you commit to a design, confirm three things with your legal and customer-facing teams: which SBOM format and version your buyers accept, how long release SBOMs must be retained, and who signs off on VEX decisions. The answers determine where the SBOM is stored, who can change a vulnerability analysis, and whether a supplier can rely on your records. Those are supplier decisions, and they belong to the business as much as to engineering.
What the SBOM program must do and where each requirement comes from
This table lists the functions a software supply chain program needs, the tooling that supports each one, and what the reader should confirm before committing. Use it as a checklist when scoping a build, and check the regulation column with counsel if a sector rule applies to your products or customers. The main takeaway is that SBOM generation, correlation and VEX are separate duties that must be run together.
| Requirement | What it asks for | Supporting capability and what to confirm |
|---|---|---|
| SBOM generated per build | A machine-readable inventory of components for each build artifact, in CycloneDX format | Trivy can produce an SBOM for a target and Dependency-Track consumes CycloneDX SBOMs. Confirm the build pipeline emits one SBOM per release artifact. |
| Component identity and versions per product | Each product or project maps to its own component list with exact versions | Dependency-Track organizes components by project. Confirm naming and version rules so the same library is not tracked under several identities. |
| Continuous correlation of new CVEs | New vulnerability disclosures are matched against existing SBOMs without waiting for a new build | Dependency-Track correlates components against sources including the NVD, GitHub Advisories, OSV and Trivy. Confirm which sources your team has enabled and how often they update. |
| VEX statements for not-exploitable findings | A recorded justification when a known vulnerability does not affect the product | Dependency-Track consumes and produces CycloneDX VEX documents. Confirm who approves each statement and how the justification is reviewed. |
| License risk by SPDX identifier | Known license terms for each component, checked against approved and prohibited licenses | Dependency-Track tracks license use by component using SPDX license IDs. Confirm the license policy with legal, since obligations depend on how the product is distributed. |
| Policies per project | Different rules for different products, such as stricter gates for externally shipped software | Dependency-Track applies global and per-project policies for security, license and operational compliance. Confirm which policy violations block a release. |
| Notifications to owners | Named product owners learn about new findings and policy violations quickly | Dependency-Track sends notifications to Slack, Microsoft Teams, Mattermost, webhooks, email and Jira. Confirm each project has a named owner who receives alerts. |
| Retention of SBOM and VEX per release | Prior SBOM and VEX versions kept for each shipped release so past exposure can be explained | Confirm retention periods with your legal and compliance owners. Where a regulation applies, such as the EU Cyber Resilience Act for certain manufacturers, confirm the obligation with counsel before setting periods. |
Which open-source platforms fit this function and why
No single tool produces SBOMs, correlates components with advisories, records exploitability and tracks fixes across teams. The platforms below split that work: one generates and scans, one manages portfolio risk, and one holds findings and deadlines so software findings sit alongside other scanner output.
Dependency-Track for portfolio component analysis
Dependency-Track ingests CycloneDX SBOMs, correlates components against several vulnerability sources and flags known vulnerabilities, outdated or modified components and license risk using SPDX license IDs. It also consumes and produces CycloneDX VEX, so a team can record that a flagged vulnerability is not exploitable in a given product. It applies global and per-project policies and sends notifications to Jira, Slack, Microsoft Teams, email and webhooks. It does not generate SBOMs from source code or container images, and it does not decide what a vendor's VEX statement means for your customers. Confirm how your team will approve and sign VEX statements before relying on them. Apache-2.0 licensed.
Trivy for SBOM generation and scanning
Trivy generates an SBOM for container images, filesystems, remote Git repositories and virtual machine images, and it can also scan an existing SBOM. Its report formats include table, JSON, SARIF, template, SBOM and GitHub dependency snapshot, so output can feed CI gates, code scanning and Dependency-Track. It also finds secrets, misconfigurations and software licenses, which broadens the review beyond CVEs. It does not track findings over time or assign ownership, so pair it with a system of record. Confirm that your build pipeline can keep its vulnerability databases current. Apache-2.0 licensed.
Trivy Operator for Kubernetes inventory
Trivy Operator scans a Kubernetes cluster continuously, for example when a new Pod is created, and stores vulnerability reports as Kubernetes custom resources. This gives platform teams a current view of which workloads run which images, which is the input an SBOM programme needs for deployed software rather than only for build artifacts. It also produces config audit, exposed secret, RBAC and compliance reports. It does not replace build-time SBOMs, and it does not show which vendor product a cluster image belongs to unless image provenance is recorded. Confirm which namespaces and registries the operator is allowed to read. Apache-2.0 licensed.
DefectDojo for findings and SLAs
When Dependency-Track findings must be tracked alongside Greenbone, Trivy, ZAP or commercial scanner results, DefectDojo acts as the findings layer. Dependency-Track has native support for DefectDojo, so component findings can be deduplicated, assigned, given severity-based deadlines and reported to management in one place. DefectDojo does not decide whether a component is reachable in your code, and it does not correct duplicate or weak data sent from upstream tools. Check the import and deduplication rules with the team that owns each scanner before you set deadlines. Its license and deployment options are covered in its own use case page.
Alternative SCA tools need their own assessment
Other software composition analysis and SBOM tools exist, including commercial platforms and open-source alternatives, and some suit languages, ecosystems or CI systems that Dependency-Track and Trivy handle poorly. Assess each on its own terms: which SBOM formats it reads and writes, which vulnerability sources it uses, whether it supports CycloneDX VEX, how its license is written and what its scanning costs in build time. Ask for a sample run against one of your real repositories before committing. DeployOpen does not rank these tools here, and the choice should follow your own build and ecosystem constraints.
How an SBOM moves from the build pipeline to a VEX decision
Every release should leave the build pipeline with a CycloneDX SBOM attached, and the flow below is what turns that file into a decision someone can defend. The build step generates the SBOM, either with Trivy (which can produce an SBOM for a target and can also scan an existing SBOM) or with a dedicated generator in the pipeline. The file is named with the build identifier and version, then uploaded to Dependency-Track through its API so that each release maps to a project and a specific component set. Confirm that your generator emits the CycloneDX version your Dependency-Track release accepts, and that the build records the same component versions the deployed artifact contains, because a mismatch here produces findings against the wrong code.
Dependency-Track then correlates each component against its vulnerability sources, which the documentation lists as the NVD, GitHub Advisories, Sonatype OSS Index, Snyk, Trivy, OSV and VulnDB. Policies you define globally or per project decide which findings fail the build, which raise a notification and which only appear on the dashboard, and they also cover license risk through SPDX license IDs. Confirm which sources are enabled in your deployment and which need a commercial key or account, and ask your partner how often each source refreshes in your environment, since correlation is only as current as the data behind it. Findings reach owners through the notification channels, including Jira, Microsoft Teams, Slack, email and webhooks, so the ticket lands with the team that owns the component.
The step most teams skip is the exploitability decision. When an owner determines that a vulnerable component is not reachable, not used in the affected code path or mitigated, the decision should be recorded as a CycloneDX VEX document, which Dependency-Track can consume and produce, and the VEX file should be versioned with the release it describes. That way a buyer, auditor or incident responder can see why a finding was marked not affected long after the ticket is closed. Set a rule for who may write a not-affected statement, require a written justification, and decide whether VEX documents are published to customers or kept internal.
How deployment constraints change the SBOM design
In a connected deployment, build pipelines can reach vulnerability data sources directly, so the main design questions are scale and governance rather than data access. Trivy can generate an SBOM for each image or filesystem and scan it in the same job, and Dependency-Track can ingest those SBOMs as CycloneDX documents and track them across projects over time. The SBOM is produced by the build, not by a later audit, so each release has a record of its components.
- Per-build SBOM generation: Run Trivy in CI to produce a software bill of materials for every image and artifact, stored with the build ID and commit.
- Upload to Dependency-Track: Send CycloneDX SBOMs through the API so new CVEs are correlated against existing projects without a rebuild.
- Policy gates: Apply global and per-project policies for security and license risk so that failing components stop promotion.
- Notifications: Route new findings to Slack, Microsoft Teams, Mattermost, email, Jira or webhooks, based on the owning team.
- Hosting scope: Confirm which network segment hosts Dependency-Track and who can read project data, since SBOMs reveal internal architecture.
Before relying on this design, check that your CI runners can reach the vulnerability sources you have chosen and that retention settings for SBOMs match your release records.
On an air-gapped build network, Trivy cannot fetch its databases from the internet, so the vulnerability data must be brought in from outside. Trivy's self-hosting guidance covers two routes: mirror the trivy-db, trivy-java-db and trivy-checks databases as OCI images into an internal registry and select them with flags such as --db-repository, --java-db-repository and --checks-bundle-repository, or download the trivy-db or trivy-java-db archive on a connected machine and copy it into the cache db directory on the offline system.
- Internal registry mirror: Publish the database OCI images to a registry the build network can reach, and point scans at it with
--db-repositoryand related flags. - Manual archive transfer: Where no registry is available, download the trivy-db or trivy-java-db archive on a connected machine and copy it into the cache db directory through approved media.
- Update cadence: Treat the mirror as perishable. Trivy's documentation warns that mirrors must be kept updated, so schedule refreshes and record the date of each import.
- Offline SBOM scanning: Trivy can scan existing SBOMs, so SBOMs generated on a connected side can be checked offline against the imported data.
- Dependency-Track placement: Decide whether Dependency-Track runs inside the enclave, which keeps SBOMs local, or receives SBOMs through a controlled transfer.
Confirm with your security team how often the transfer process runs and whether an out-of-date database is treated as a failed scan.
When a product is delivered to customers, regulators or public agencies, the SBOM becomes a document that leaves the organization. The design question shifts from how to generate SBOMs to which content is shared and which stays internal. Dependency-Track can consume and produce CycloneDX SBOMs and CycloneDX VEX documents, which gives a structured way to share component data and the exploitability status of known vulnerabilities without exposing the full internal finding history.
- Share with buyers: Typically the component list for the released version, its version identifiers, supplier information and licenses expressed as SPDX license IDs, as your delivery terms require.
- Share through VEX where agreed: Provide CycloneDX VEX statements for known vulnerabilities that do not affect the product, so buyers do not repeat the analysis.
- Keep internal: Pipeline logs, unresolved finding backlogs, scanner configuration, internal hostnames, and project-level policy results.
- Versioned output: Generate the delivery SBOM from the released artifact so buyers receive a document that matches what they installed.
- Access review: Confirm the legal and contractual terms for SBOM sharing with counsel, and record which version went to which customer.
Before committing to a format or delivery channel, ask each buyer or regulator which SBOM standard and fields they expect.
How the rollout runs from pilot builds to portfolio coverage
The sequence moves from a complete inventory of products and pipelines, through one proven pilot, to portfolio-wide SBOM tracking, VEX decisions, alerting and buyer delivery, with each phase closing on a named artifact.
Inventory products, build pipelines and owners
The team lists every product, service and build pipeline that ships software, along with the repositories, languages, package managers, container images and the engineering owner for each. DeployOpen typically runs this with your platform and product leads, and your release managers confirm which artifacts actually reach customers or production. The step closes with a product inventory register that records owner, build tooling, deployment model and customer-facing status for each item. It is done when every shipping artifact has a named owner and a known build path, and gaps are logged as open questions.
Pilot SBOM generation in CI on one product
Select one product with a stable pipeline and add SBOM generation to its build, using Trivy to produce CycloneDX output for the build target and to scan it. The pilot team reviews whether the SBOM includes the OS packages and language dependencies that the product really ships, and records any component the tool cannot resolve. The pilot closes when the SBOM is generated on every build, stored with the build artifact, and a Dependency-Track project exists for that product and receives each upload. Ask your engineers to confirm the pipeline keeps the SBOM tied to the exact version it describes.
Agree policy and license baseline with legal
Engineering and legal agree which license families the company accepts, which need review, and which are blocked for distribution, and map these to SPDX license identifiers. Dependency-Track can apply global and per-project policies for security, license and operational compliance, so the agreed rules are written as policy definitions rather than as a document alone. Legal signs off on the baseline and on who approves exceptions. The output is a written license and security policy with approvers named, loaded into Dependency-Track and tested against the pilot project. The step is complete when a deliberately non-compliant test component triggers the expected violation.
Define the VEX workflow and ownership
The team decides who reviews a flagged vulnerability, who can mark it as not affected, and what justification must accompany that decision. Dependency-Track consumes and produces CycloneDX VEX documents, so the agreed statuses and justifications are recorded against the component and version in a format that can be shared with customers. Product security owns the decisions, and engineering owners provide the technical evidence. The output is a VEX procedure with roles, required justification text and a sample VEX document from the pilot product. Confirm with your security lead how the VEX file is versioned when a product is rebuilt.
Connect notifications and ticketing
Dependency-Track sends configurable notifications to Slack, Microsoft Teams, Mattermost, webhooks, email and Jira, and supports native integration with DefectDojo. The team routes new critical and high findings for the pilot product into the channel and ticket queue that the owning engineers already use, and checks that duplicate alerts do not flood the queue. The step closes with a documented routing matrix that maps severity and product to a destination and an assignee. It is done when a test finding creates a ticket with the component, version and link to the Dependency-Track project attached.
Onboard the portfolio in waves
The remaining products are added in groups, each following the pilot pattern: CI generation, a Dependency-Track project per product or version, policy inheritance, and routing to the right owners. Groups are sized to the capacity of the platform and engineering teams that support them, and each wave is reviewed before the next begins. The output is a portfolio register showing, for every product, whether SBOMs are generated per build, whether the project is active, and whether VEX decisions are current. Ask your DeployOpen contact to confirm the Dependency-Track deployment model and capacity before large waves start.
Set buyer SBOM delivery and retention rules
Customers and procurement teams often request an SBOM and a VEX statement for a purchased version. The team defines how these are packaged, who approves a release for delivery, which format is used, and how long each SBOM, VEX file and policy decision is retained, aligned with contract terms and the company's records policy. Legal reviews the retention schedule and the disclosure terms. The output is a buyer delivery procedure, a retention schedule and a repeatable export from Dependency-Track. The step is complete when a sample SBOM and VEX pair can be produced for a released version within the agreed process.
What evidence a buyer or assessor will ask for and which component produces it
What SBOM do I need for each software release?
Each release should carry its own SBOM, generated from the build that produced the shipped artifact. Trivy can produce a software bill of materials for a target and can also scan an existing SBOM, and its report formats include SBOM output. The usual approach is to generate the SBOM in CI, store it with the release artifact and tag it with the version number, so a buyer or assessor can match a file to a specific build. The SBOM format is typically CycloneDX, which Dependency-Track consumes directly. Confirm with your engineering team that the SBOM lists components from the container image, the application dependencies and the operating system packages, because missing layers are the most common gap during review. DeployOpen can plan and implement this pipeline step in your environment, but the SBOM itself is a record your build produces.
How do I show component history across my product portfolio?
A Dependency-Track project holds the component inventory for each product and keeps its history as new SBOMs are uploaded, so you can see which versions of a library each release contained and when a vulnerable component first appeared. Dependency-Track correlates components against sources including the NVD, GitHub Advisories, OSV and Trivy, which lets the inventory update as new CVEs are published, without rescanning the artifact. Ask the people reviewing your evidence which history they need: a per-release view, a per-component search across all products, or both. Confirm that your retention settings keep older project versions long enough to answer those questions.
Where are CVE triage decisions and VEX statements recorded?
Triage decisions are recorded against the component and vulnerability inside the Dependency-Track project, and Dependency-Track consumes and produces CycloneDX VEX documents. A VEX statement records whether a known vulnerability is exploitable in your product, for example because the vulnerable code path is not reachable. The record should state the analyst, the date, the justification and the release it applies to. Confirm with your security team how analysis states are reviewed before a finding is marked not affected, because an unreviewed suppression is a common finding in assessments. Publish the VEX document with each release so customers receive the same decisions you hold internally.
How are license risks and policy decisions documented?
Dependency-Track identifies license risk, tracks license use by component using SPDX license IDs, and applies global and per-project policies for security, license and operational compliance. A policy violation is a recorded event, and the decision to accept, replace or remove the component should be written next to it. Confirm which licenses your organization prohibits or requires legal review for, such as copyleft terms in distributed products, and who signs off the exceptions. Keep the policy definitions under version control so an assessor can see what rules applied on the date a release shipped.
How do I link remediation tickets to vulnerable components?
Dependency-Track sends configurable notifications to Jira, and it has native support for DefectDojo, so a finding can become a tracked remediation item with an owner and a due date. The evidence an assessor usually samples is the chain from finding to ticket to fix to the next SBOM showing the component removed or upgraded. Confirm that ticket identifiers are stored with the finding and that closed tickets link back to the release where the fix shipped. DeployOpen can configure these integrations within the agreed scope, and the ticketing tool remains your system of record.
How should exception approvals be recorded with owners and expiry dates?
An exception approval should name the component or vulnerability, the affected product and release, the risk owner, the compensating control, the approval date and an expiry date after which the exception is reviewed again. Dependency-Track policies and VEX justifications can hold part of this record, while the approval itself usually lives in your governance tool or ticketing system and is referenced from the finding. Ask your auditors whether they expect a named individual with authority to accept risk and whether expired exceptions must trigger a new decision. Without an expiry, an exception tends to become a permanent gap.
How long should SBOM and VEX records be retained?
Retention should cover every release that remains in support, plus the period your contracts, customers or regulators require after end of support. Confirm the retention period with your legal and compliance teams, because no single standard supplied here sets it for every sector. Store the SBOM and VEX files in an immutable or access-controlled location, record the checksum of each file, and keep the Dependency-Track project versions that match them. Retention cost is usually modest storage, while the larger cost is the time spent reconstructing records that were not kept at the time of release.
What to confirm with vendors and legal before committing
Start by confirming which vulnerability correlation sources are enabled in your Dependency-Track instance and how often each one refreshes in your environment. Dependency-Track correlates components against the NVD, GitHub Advisories, Sonatype OSS Index, Snyk, Trivy, OSV and VulnDB, but the feeds you can use depend on your licensing, network path and mirroring setup. If you run air-gapped or behind a proxy, ask your team to document where each feed is pulled from, who approves updates, and how stale data is detected. A finding list built on an outdated source can look clean while real exposure is missing, so treat feed freshness as a control you test, not an assumption.
Next, confirm with customers, regulators and your own sector rules which SBOM format and specification version you must deliver. Dependency-Track consumes and produces CycloneDX SBOMs and CycloneDX VEX documents, and Trivy can emit SBOM output, but a buyer or contract may name a different format or version that you need to generate and validate. Ask procurement whether they expect VEX statements alongside SBOMs. On the legal side, have counsel map your license policies to SPDX license IDs and to your actual distribution model, since internal use, hosted services and shipped binaries carry different obligations. Decide who approves exceptions and record that decision before the first policy violation arrives.
Finally, decide whether DefectDojo is needed as the findings layer. Dependency-Track has native support for DefectDojo, which helps if SBOM findings must sit beside Greenbone, Trivy and application scanner results in one remediation queue. If you do not need that consolidation, confirm how Dependency-Track notifications to Slack, Microsoft Teams, email, Jira or webhooks will route tickets and who owns triage. Before you commit, check the current release notes for Dependency-Track and Trivy on their official sites, because features, formats and database options change between releases. Ask your implementation partner to show the version you will deploy and to confirm each item above in writing.
What do SBOM and supply chain programs cost and how long do they take?
What drives the cost of an SBOM and supply chain program?
The main cost drivers are the number of products and build pipelines that produce SBOMs, the number of correlation sources you need, how much of the environment is air-gapped, the volume of VEX statements your teams must write and review, and how many systems the findings must reach. Each product line adds pipeline changes, component mapping and triage. Air-gapped operation adds manual transfer of Dependency-Track and Trivy database updates. Ask any quote to break effort down by these drivers so you can see which ones your portfolio triggers and which ones you can reduce by starting with a smaller scope.
Which SBOM costs are one-time and which recur?
One-time costs cover designing the SBOM generation step for each build pipeline, deploying Dependency-Track, setting up notifications and policies, and the initial inventory of components across existing products. Recurring costs cover keeping pipelines current as build tooling changes, mirroring vulnerability databases on a schedule, triaging new CVEs and writing VEX statements, reviewing license policy exceptions, and upgrading the platform. Trivy's documentation warns that database mirrors must be kept updated, so that recurring step should be named explicitly in any quote, along with whether upgrades and support are covered by a retainer.
What does the client team need to provide for this work?
Expect to provide named engineering owners for each product and pipeline, access to build systems and artifact repositories, and a decision-maker for policy such as which severities block a release. A named legal reviewer should own license policy, because license risk tracked by SPDX license IDs requires an interpretation of obligations that technical staff should not decide alone. Security or compliance staff should confirm how VEX statements will be reviewed and retained. Ask the implementation partner to list these inputs in writing so that delays from missing access or unclear ownership are visible before work starts.
Can our own engineers run an SBOM program without a partner?
A single product with one pipeline is a reasonable first project for an internal team, particularly if engineers already operate CI systems and Dependency-Track is deployed in their environment. The difficulty increases across a portfolio. Each product has different languages, build systems and ownership, the correlation sources must be configured consistently, and VEX decisions need a review process that stays consistent across teams. Many organizations keep ownership of the program and bring in a partner for the initial pipeline design, the policy model and the integration with ticketing and reporting, then run the recurring work internally.
How long does an SBOM program take to set up?
No duration applies to every organization, because the timeline depends on the number of products, how many pipelines already generate SBOMs, the state of build systems, and whether the environment is air-gapped. A narrow pilot covering one product with an existing build pipeline is usually shorter than a rollout across a portfolio with mixed languages and separate owners. Ask for a timeline in the written scope that is tied to named phases such as pilot pipeline, policy agreement, portfolio onboarding and handover, and confirm which dependencies on your teams and change windows it assumes.
What should a fixed-scope quote for SBOM work include?
A fixed-scope quote should list the products and pipelines in scope, the SBOM formats and generation tools used, the correlation sources enabled in Dependency-Track, the notification and ticketing integrations, the policies for security, license and operational compliance, and how air-gapped database updates will be handled. It should also state the deliverables, such as pipeline configuration, runbooks and handover sessions, the client inputs and owners, the acceptance criteria, and whether a recurring retainer for upgrades and continuous support is separate. DeployOpen agrees scope, deliverables and timelines in writing before work starts, and prices follow from that written scope.
How DeployOpen scopes and supports SBOM programs
DeployOpen plans, implements, customizes, integrates, documents and supports self-hosted open-source platforms inside the client's own infrastructure, so SBOM generation and component tracking run where the build and release data already lives. Engagements are fixed-scope, with scope, deliverables and timelines agreed in writing before work starts.
How we scope
- Inventory the products, repositories and build pipelines that must produce an SBOM for each release.
- Agree in writing which component formats, portfolio views and CVE sources Dependency-Track will cover.
- Define which VEX statements, license policies and notification routes the written scope includes and excludes.
How we build
- Add SBOM generation with Trivy to build pipelines so each artifact carries a CycloneDX inventory.
- Deploy and integrate Dependency-Track with project policies for security, license and operational compliance.
- Test ingestion, correlation and notifications against sample builds before connecting production projects.
How we hand over
- Document the pipeline configuration, Dependency-Track project structure, policy settings and VEX review steps.
- Deliver runbooks for triaging new CVEs, recording not-exploitable decisions and handling license exceptions.
- Train engineering and product security staff on operating the platform and answering buyer SBOM requests.
How we support
- Offer ongoing support, upgrades and continuous testing as a retainer after handover.
- Maintain mirrored vulnerability databases and update the platform on a schedule agreed in the retainer.
- Review policy and pipeline changes as products and regulatory expectations for SBOMs evolve.

