Skip to content

fix: Remove non-shipped dependencies from the SBOMs - #1630

Merged
dervoeti merged 10 commits into
mainfrom
fix/sbom-dev-dependencies
Sep 7, 2026
Merged

fix: Remove non-shipped dependencies from the SBOMs#1630
dervoeti merged 10 commits into
mainfrom
fix/sbom-dev-dependencies

Conversation

@dervoeti

@dervoeti dervoeti commented Sep 7, 2026

Copy link
Copy Markdown
Member

Description

Our SBOMs report dependencies that are never shipped, like test frameworks, build tooling and integrations that are not compiled in. They show up as false positives in the vulnerability scans.

Vector: builds with an explicit, reduced feature set, but cargo cyclonedx resolved the default features and reported every integration (AWS, Azure, etc.).

Rust base images: now pass --no-build-deps, which drops the build-time dependencies.

Kafka: extended the list of skipped projects

OpenSearch (3.1.0 and 3.4.0): additionally skips the test framework, the test fixtures, the QA projects and the benchmarks. OpenSearch 3.6.0 was already fine since there an allow-list instead of a deny-list is used.
The Prometheus exporter 3.6.0.0 gets includeConfigs = ["runtimeClasspath"] on its cyclonedxDirectBom task, the cyclonedxBom extension only configures the aggregation there. 3.1.0.0 and 3.4.0.0 use plugin version 2.4.1, where the extension still applies to the project itself, so they are already correct.

OpenSearch Dashboards and the HBase web UI pass --required-only to cdxgen, which leaves out devDependencies and optional dependencies.

Airflow and Superset got two fixes:

  • cyclonedx-bom was installed into the product environment, so it was part of its own SBOM, and uninstalling it afterwards left its dependencies behind in the image. It is now installed into a throw-away venv that is removed after the SBOM is written.
  • The Airflow and Superset packages are installed from a locally built wheel, so cyclonedx-py records the file URL of that wheel instead of a purl. Without a purl they appear twice in the image SBOM (no deduplication possible). The purl is added in post-processing with jq.

Definition of Done Checklist

Note

Not all of these items are applicable to all PRs, the author should update this template to only leave the boxes in that are relevant.

Please make sure all these things are done and tick the boxes

  • Changes are OpenShift compatible
  • All added packages (via microdnf or otherwise) have a comment on why they are added
  • Things not downloaded from Red Hat repositories should be mirrored in the Stackable repository and downloaded from there
  • All packages should have (if available) signatures/hashes verified
  • Add an entry to the CHANGELOG.md file
  • Integration tests ran successfully
TIP: Running integration tests with a new product image

The image can be built and uploaded to the kind cluster with the following commands:

boil build <IMAGE> --image-version <RELEASE_VERSION> --strip-architecture --load
kind load docker-image <MANIFEST_URI> --name=<name-of-your-test-cluster>

See the output of boil to retrieve the image manifest URI for <MANIFEST_URI>.

@dervoeti dervoeti self-assigned this Sep 7, 2026
@dervoeti dervoeti moved this to Development: Waiting for Review in Stackable Engineering Sep 7, 2026
@StefanFl
StefanFl self-requested a review September 7, 2026 11:09

@StefanFl StefanFl left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@dervoeti
dervoeti added this pull request to the merge queue Sep 7, 2026
@dervoeti dervoeti moved this from Development: Waiting for Review to Development: Done in Stackable Engineering Sep 7, 2026
Merged via the queue into main with commit 570d58b Sep 7, 2026
3 checks passed
@dervoeti
dervoeti deleted the fix/sbom-dev-dependencies branch September 7, 2026 12:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Development: Done

Development

Successfully merging this pull request may close these issues.

2 participants