mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-07-29 12:00:32 +00:00
1.7 KiB
1.7 KiB
stage, group, info, title
stage | group | info | title |
---|---|---|---|
Security Risk Management | Security Insights | To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments | SBoM dependency graph ingestion overview |
Overview
The process starts after all SBoM::Occurence
models have been ingested because we ingest them in slices and it would be tricky to process that in slices as well.
All work happens in a background worker which will be added in a subsequent MR so that we do not increase the time it takes to ingest an SBoM report. This means that there will be a delay between when the SBoM report is ingested and before the dependency graph is updated.
All record pertaining to dependency graphs are stored in sbom_graph_paths
database table and has foreign keys to sbom_occurrences
as well as projects
for easier filtering.
Details
- The database table is designed as a closure table
- When a dependency is transitive then the corresponding
Sbom::Occurrence#ancestors
will contain entries. - When a dependency is a direct dependency then the corresponding
Sbom::Occurrence#ancestors
will contain an{}
. - Dependencies can be both direct and transitive.
- There can be more than one version of a given dependency in a project (for example Node allows that).
- There can be more than one
Sbom::Occurrence
for a given dependency version, for example in monorepos. TheseSbom::Occurrence
rows should have a differentinput_file_path
andsource_id
(however we will not usesource_id
when building the dependency tree to avoid SQL JOIN).