2.4 KiB
2.4 KiB
SBOM Ledger + Lineage (Moat Score 3)
Module
Attestor
Status
IMPLEMENTED
Description
Versioned SBOM storage with advisory and feed snapshot repositories, plus comprehensive SBOM parsing and writing for multiple formats.
Implementation Details
- SBOM Persistence:
src/Attestor/__Libraries/StellaOps.Attestor.Persistence/Entities/SbomEntryEntity.cs-- persisted SBOM entry with version, format, digest, and tenant_id for versioned storage. - SBOM Linkage Statement:
__Libraries/StellaOps.Attestor.ProofChain/Statements/SbomLinkageStatement.cs-- in-toto statement linking SBOM versions to evidence chains. - SBOM Linkage Payload:
Statements/SbomLinkagePayload.cs-- payload containing SBOM descriptor, generator info, and linkage data. - SBOM Descriptor:
Statements/SbomDescriptor.cs-- descriptor with format (CycloneDX/SPDX), spec version, and content digest. - Generator Descriptor:
Statements/GeneratorDescriptor.cs-- metadata about the tool that generated the SBOM. - CycloneDX Parser/Writer:
__Libraries/StellaOps.Attestor.StandardPredicates/Parsers/CycloneDxPredicateParser.cs,Writers/CycloneDxWriter.cs-- full CycloneDX support. - SPDX Parser/Writer:
Parsers/SpdxPredicateParser.cs,Writers/SpdxWriter.cs-- full SPDX support. - Verdict Ledger:
__Libraries/StellaOps.Attestor.VerdictLedger/VerdictLedgerService.cs-- append-only ledger tracking SBOM-based verdicts over time. - Repository:
__Libraries/StellaOps.Attestor.Persistence/Repositories/IProofChainRepository.cs-- repository for SBOM entries. - Tests:
__Tests/StellaOps.Attestor.Persistence.Tests/SbomEntryTests.cs
E2E Test Plan
- Persist an SBOM version via
SbomEntryEntityand verify retrieval by digest and version - Store multiple SBOM versions for the same image and verify version lineage (v1 -> v2 -> v3)
- Create an
SbomLinkageStatementlinking an SBOM version to its evidence chain and verify the linkage - Verify
SbomDescriptorcorrectly identifies format and spec version for both CycloneDX and SPDX - Verify
GeneratorDescriptorcaptures the tool name, version, and generation timestamp - Record SBOM-based verdict via
VerdictLedgerServiceand verify the ledger entry links to the SBOM version - Query SBOM entries by tenant_id and verify tenant isolation
- Verify SBOM lineage: given an image digest, retrieve all SBOM versions in chronological order