Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions docs/specs/2026-09-08-sbom-per-package-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ dependency to add** — it only needs to *invoke* `syft`, which is already avail

The Phase 1 base scan lists every installed `.deb` as a flat `pkg:deb` component. That is
correct and sufficient for 3rd-party Debian packages, but wrong for Delphix's own
first-party packages: `masking`, `virtualization`, `delphix-sso-app`, `containerized-masking`,
first-party packages: `masking`, `virtualization`, `delphix-sso-app`,
`windows-connector`, `zfs`, `ptools`, `delphix-rust`, and `performance-diagnostics` all
bundle third-party components
across ecosystems (jars, npm, wheels, Rust crates) that `dpkg` cannot see — dpkg only knows
Expand Down Expand Up @@ -231,21 +231,29 @@ strictly "is it 1st-party" — see the `zfs` case), `SBOM_DEEP_SCAN="true"` is s
| `masking` | Java/Gradle app bundling jars + npm frontend |
| `virtualization` | Java/Gradle app bundling jars + npm frontend |
| `delphix-sso-app` | Java/Gradle app |
| `containerized-masking` | Java/Gradle app |
| `windows-connector` | Java/Gradle app |
| `zfs` | OpenZFS fork bundling Delphix's Rust object agent (crates invisible to dpkg) |
| `ptools` | Rust |
| `delphix-rust` | Rust |
| `performance-diagnostics` | 1st-party Delphix package built from its own source |

The remaining 31 packages (kernel packages, `misc-debs`, `syft`/`cyclonedx-cli` themselves,
The remaining 32 packages (kernel packages, `misc-debs`, `syft`/`cyclonedx-cli` themselves,
etc.) get `SBOM_DEEP_SCAN="false"` — plain 3rd-party forks or single-ecosystem tools already
fully represented by the Phase 1 flat `pkg:deb` component. `delphix-go` is a judgment call:
the top-level design's Tooling section separately calls out a possible Go override
(`cyclonedx-gomod`); defaulted to `"false"` here (baseline Syft-on-deb has a Go
binary-build-info cataloger that may already cover it) — revisit under Phase 4's evaluation
if gaps are found.

`containerized-masking` was originally in the table above, on the strength of its content (it
is the masking Java/Gradle app). It was reclassified to `SBOM_DEEP_SCAN="false"` under
DLPX-99530: it builds no `.deb` — its only artifact is a `masking-kubernetes-<version>.zip` —
so `generate_sbom()`, which scans `.deb`s and fails when an opted-in package produced none,
failed every post-push build. It is also in no appliance image, so a per-`.deb` SBOM for it
would have no image SBOM to be merged into; its third-party content is covered by the Mend
scans of its container images (`MEND_SCAN_IMAGES`). Every other package left in the `"true"`
table builds `.deb`s that ship in appliance images.

### 6. Provisioning syft/cyclonedx-cli — generic build tooling, not a package dependency

`generate_sbom()` is a **default hook**: defined once in `lib/common.sh` and inherited
Expand Down
9 changes: 8 additions & 1 deletion packages/containerized-masking/config.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,14 @@ DEFAULT_PACKAGE_GIT_URL="https://github.com/delphix/dms-core-gate.git"
#
PACKAGE_NEEDS_DOCKER="true"
MEND_SCAN_APPLICABLE="true"
SBOM_DEEP_SCAN="true"
#
# Not deep-scanned: generate_sbom() scans this package's .debs, and it builds
# none -- its only artifact is the masking-kubernetes zip, so opting in fails
# the build. It is in no appliance image either, so there would be no image
# SBOM to merge one into. Its third-party content is covered by the Mend scans
# of MEND_SCAN_IMAGES below.
#
SBOM_DEEP_SCAN="false"

MEND_SCAN_IMAGES="'delphix-masking-proxy', 'delphix-masking-database', 'delphix-masking-app'"

Expand Down
Loading