2.2 KiB
2.2 KiB
S3 Object Lock (WORM Retention) for Evidence Locker
Module
EvidenceLocker
Status
IMPLEMENTED
Description
Object Lock configuration in EvidenceLockerOptions with mode, default retention days, legal hold; enforcement headers in S3 storage for WORM retention and legal hold behavior with startup validation.
Implementation Details
- Modules:
src/EvidenceLocker/StellaOps.EvidenceLocker/StellaOps.EvidenceLocker.Infrastructure/Storage/,src/EvidenceLocker/StellaOps.EvidenceLocker/StellaOps.EvidenceLocker.Core/Configuration/ - Key Classes:
S3EvidenceObjectStore(src/EvidenceLocker/StellaOps.EvidenceLocker/StellaOps.EvidenceLocker.Infrastructure/Storage/S3EvidenceObjectStore.cs) - S3 storage with Object Lock headers for WORM retentionEvidenceLockerOptions(src/EvidenceLocker/StellaOps.EvidenceLocker/StellaOps.EvidenceLocker.Core/Configuration/EvidenceLockerOptions.cs) - configuration including Object Lock mode, retention days, and legal hold settingsEvidenceObjectStore(src/EvidenceLocker/StellaOps.EvidenceLocker/StellaOps.EvidenceLocker.Core/Storage/EvidenceObjectStore.cs) - base object store abstractionStorageKeyGenerator(src/EvidenceLocker/StellaOps.EvidenceLocker/StellaOps.EvidenceLocker.Infrastructure/Storage/StorageKeyGenerator.cs) - generates storage keys for evidence objects
- Interfaces:
IEvidenceLockerStorage - Source: SPRINT_20260112_002_EVIDENCE_evidence_locker_audit_pack_hardening.md
E2E Test Plan
- Configure
EvidenceLockerOptionswith Object Lock mode=COMPLIANCE and retention=365 days and verifyS3EvidenceObjectStoreapplies WORM headers on write - Verify stored objects cannot be deleted before retention period expires
- Enable legal hold via
EvidenceLockerOptionsand verify objects are locked regardless of retention period - Verify startup validation rejects invalid Object Lock configurations (e.g., retention days < 1)
- Verify
S3EvidenceObjectStoresends correct S3 headers (x-amz-object-lock-mode, x-amz-object-lock-retain-until-date, x-amz-object-lock-legal-hold) - Verify Object Lock mode=GOVERNANCE allows deletion with proper override permissions