2.8 KiB
2.8 KiB
Proof Chain Database Schema (PostgreSQL Persistence)
Module
Attestor
Status
IMPLEMENTED
Description
PostgreSQL-backed persistence layer for proof chain data with 5 core tables (sbom_entries, dsse_envelopes, spines, trust_anchors, rekor_entries), EF Core entity mappings, and IProofChainRepository abstraction.
Implementation Details
- DbContext:
src/Attestor/__Libraries/StellaOps.Attestor.Persistence/ProofChainDbContext.cs-- EF Core DbContext with tenant-scoped queries, RLS policy application, and schema isolation. - Entities:
Entities/DsseEnvelopeEntity.cs-- persisted DSSE envelope with tenant_id, payload hash, created/updated timestamps.Entities/RekorEntryEntity.cs-- persisted Rekor log entry with log index, integrated time, inclusion proof.Entities/SbomEntryEntity.cs-- persisted SBOM entry with format, version, component count.Entities/SpineEntity.cs-- persisted proof spine with Merkle root, segment count, linked evidence IDs.Entities/TrustAnchorEntity.cs-- persisted trust anchor with key material, expiry, and trust level.Entities/VerdictLedgerEntry.cs-- persisted verdict ledger entry with decision, timestamp, and proof references.Entities/AuditLogEntity.cs-- audit log with operation type and content hash.
- Repositories:
Repositories/IProofChainRepository.cs-- repository abstraction for CRUD operations on all proof chain entities.Repositories/IVerdictLedgerRepository.cs-- repository for verdict ledger queries (by subject, by time range).Repositories/PostgresVerdictLedgerRepository.cs-- PostgreSQL implementation with optimized queries and tenant scoping.
- Migrations:
Migrations/-- EF Core migrations defining schema, indexes, RLS policies, and constraints. - Services:
Services/-- data access services for higher-level operations. - Performance:
Perf/-- performance configurations (connection pooling, query optimization). - Tests:
__Tests/StellaOps.Attestor.Persistence.Tests/
E2E Test Plan
- Create and persist a
DsseEnvelopeEntityviaIProofChainRepositoryand verify retrieval by ID - Persist a
RekorEntryEntitywith log index and inclusion proof; retrieve and verify all fields - Persist a
SpineEntitywith Merkle root and verify the root hash is stored correctly - Create a
TrustAnchorEntityand verify it is retrievable by key fingerprint - Create
VerdictLedgerEntryrecords viaPostgresVerdictLedgerRepositoryand query by subject digest; verify correct results - Verify tenant isolation: create entities for tenant A and verify they are not visible to tenant B
- Run migrations on an empty database and verify all 5 tables are created with correct columns, indexes, and constraints
- Verify JSONB columns store and retrieve complex predicate payloads correctly