Files
git.stella-ops.org/docs/product-advisories/archived/16-Nov-2025 - spdx canonical persistence cyclonedx interchange.md
2025-11-23 17:18:17 +02:00

3.0 KiB
Raw Blame History

Heres a quick, concrete proposal to lock in a stable SBOM model for StellaOps: use SPDX3.0.1 as your canonical persistence schema and CycloneDX1.6 as the interchange “view,” bridged by a deterministic transform.

Why this pairing

  • SPDX3.0.1 gives you a rigorous, profilebased data model (Core/Security/AI/Build, etc.) with explicit Relationship semantics—ideal for longlived storage and graph queries. (SPDX)
  • CycloneDX1.6 excels at exchange: widely adopted, supports services/SaaSBOM, attestations (CDXA), CBOM (crypto inventory), MLBOM, and more—perfect for producing portable BOMs for customers and regulators. (CycloneDX)

Target architecture (minimal)

  • Persistence: Store SBOMs as SPDX3.0.1 (JSONLD/RDF), normalized into your Mongo eventsourced graph; keep Relationship edges firstclass. (SPDX)
  • Interchange: On export, render CycloneDX1.6 (JSON/XML) including components, services, dependencies, vulnerabilities, and optional CBOM/CDXA blocks. (SBOM Observer)
  • Deterministic transform: Define a static mapping table (SPDX→CycloneDX) with sorted collections, stable UUID seeds, and normalized strings to guarantee byteforbyte reproducibility across offline sites.

Quick win mapping examples

  • SPDX Element + RelationshipType → CycloneDX dependencies graph. (SPDX)
  • SPDX Security profile findings → CycloneDX vulnerabilities entries. (SPDX)
  • SPDX AI/Build profiles → CycloneDX MLBOM + CDXA attestations (build/provenance). (SPDX)
  • Crypto materials (keys/algos/policies) held in SPDX extensions or attributes → CycloneDX CBOM on export for policy checks (CNSA/NIST). (CycloneDX)

Governance & standards signal

  • SPDX3.0.x is actively aligned with OMG/ISO submissions (good longterm bet for storage). (SPDX Lists)
  • CycloneDX1.6 is the current, actively enhanced interchange standard used across vendors and tooling. (GitHub)

If you want, Ill draft the exact fieldbyfield mapping table (SPDX profile → CycloneDX section), plus a small .NET 10 library skeleton for the deterministic exporter.