feat(secrets): Implement secret leak policies and signal binding
- Added `spl-secret-block@1.json` to block deployments with critical or high severity secret findings. - Introduced `spl-secret-warn@1.json` to warn on secret findings without blocking deployments. - Created `SecretSignalBinder.cs` to bind secret evidence to policy evaluation signals. - Developed unit tests for `SecretEvidenceContext` and `SecretSignalBinder` to ensure correct functionality. - Enhanced `SecretSignalContextExtensions` to integrate secret evidence into signal contexts.
This commit is contained in:
@@ -65,7 +65,7 @@
|
||||
| 9 | DET-009 | DONE | DET-002, DET-003 | Guild | Refactor Replay module (6 files: ReplayEngine, ReplayModels, ReplayExportModels, ReplayManifestExporter, FeedSnapshotCoordinatorService, PolicySimulationInputLock) |
|
||||
| 10 | DET-010 | DONE | DET-002, DET-003 | Guild | Refactor RiskEngine module (skipped - no determinism issues found) |
|
||||
| 11 | DET-011 | TODO | DET-002, DET-003 | Guild | Refactor Scanner module (~45+ matches remaining) |
|
||||
| 12 | DET-012 | TODO | DET-002, DET-003 | Guild | Refactor Scheduler module (~20+ matches remaining) |
|
||||
| 12 | DET-012 | DONE | DET-002, DET-003 | Guild | Refactor Scheduler module (WebService, Persistence, Worker projects - 30+ files updated, tests migrated to FakeTimeProvider) |
|
||||
| 13 | DET-013 | TODO | DET-002, DET-003 | Guild | Refactor Signer module (~89 matches remaining) |
|
||||
| 14 | DET-014 | DONE | DET-002, DET-003 | Guild | Refactor Unknowns module (skipped - no determinism issues found) |
|
||||
| 15 | DET-015 | TODO | DET-002, DET-003 | Guild | Refactor VexLens module (~76 matches remaining) |
|
||||
|
||||
@@ -29,18 +29,18 @@ Extend the Policy Engine and stella-dsl with `secret.*` predicates to enable pol
|
||||
|
||||
| # | Task ID | Status | Key dependency / next step | Owners | Task Definition |
|
||||
| --- | --- | --- | --- | --- | --- |
|
||||
| 1 | PSD-001 | TODO | None | Policy Guild | Define ISecretEvidenceProvider interface |
|
||||
| 2 | PSD-002 | TODO | PSD-001 | Policy Guild | Implement SecretEvidenceContext binding |
|
||||
| 3 | PSD-003 | TODO | None | Policy Guild | Add secret.hasFinding() predicate |
|
||||
| 4 | PSD-004 | TODO | None | Policy Guild | Add secret.bundle.version() predicate |
|
||||
| 5 | PSD-005 | TODO | None | Policy Guild | Add secret.match.count() predicate |
|
||||
| 6 | PSD-006 | TODO | None | Policy Guild | Add secret.mask.applied predicate |
|
||||
| 7 | PSD-007 | TODO | None | Policy Guild | Add secret.path.allowlist() predicate |
|
||||
| 8 | PSD-008 | TODO | PSD-003-007 | Policy Guild | Register predicates in PolicyDslRegistry |
|
||||
| 9 | PSD-009 | TODO | PSD-008 | Policy Guild | Update DSL schema validation |
|
||||
| 10 | PSD-010 | TODO | PSD-008 | Policy Guild | Create example policy templates |
|
||||
| 11 | PSD-011 | TODO | All | Policy Guild | Add unit and integration tests |
|
||||
| 12 | PSD-012 | TODO | All | Docs Guild | Update policy/dsl.md documentation |
|
||||
| 1 | PSD-001 | DONE | None | Policy Guild | Define ISecretEvidenceProvider interface |
|
||||
| 2 | PSD-002 | DONE | PSD-001 | Policy Guild | Implement SecretEvidenceContext binding |
|
||||
| 3 | PSD-003 | DONE | None | Policy Guild | Add secret.hasFinding() predicate |
|
||||
| 4 | PSD-004 | DONE | None | Policy Guild | Add secret.bundle.version() predicate |
|
||||
| 5 | PSD-005 | DONE | None | Policy Guild | Add secret.match.count() predicate |
|
||||
| 6 | PSD-006 | DONE | None | Policy Guild | Add secret.mask.applied predicate |
|
||||
| 7 | PSD-007 | DONE | None | Policy Guild | Add secret.path.allowlist() predicate |
|
||||
| 8 | PSD-008 | DONE | PSD-003-007 | Policy Guild | Register predicates in PolicyDslRegistry |
|
||||
| 9 | PSD-009 | DONE | PSD-008 | Policy Guild | Update DSL schema validation |
|
||||
| 10 | PSD-010 | DONE | PSD-008 | Policy Guild | Create example policy templates |
|
||||
| 11 | PSD-011 | DONE | All | Policy Guild | Add unit and integration tests |
|
||||
| 12 | PSD-012 | DONE | All | Docs Guild | Update policy/dsl.md documentation |
|
||||
|
||||
## Task Details
|
||||
|
||||
@@ -540,4 +540,10 @@ when secret.path.allowlist(["**/test/**", "**/fixtures/**"])
|
||||
| Date | Action | Notes |
|
||||
|------|--------|-------|
|
||||
| 2026-01-04 | Sprint created | Part of secret leak detection implementation |
|
||||
| 2026-01-04 | PSD-001 to PSD-008 completed | Created ISecretEvidenceProvider, SecretFinding, SecretBundleMetadata, SecretEvidenceContext, SecretSignalBinder in `src/Policy/__Libraries/StellaOps.Policy/Secrets/`. Created SecretSignalContextExtensions in PolicyDsl (moved to avoid circular dependency). |
|
||||
| 2026-01-04 | PSD-009 completed | Created signals-schema@1.json, updated spl-schema@1.json with secret signal examples and new operators (matches, exists). |
|
||||
| 2026-01-04 | PSD-010 completed | Created spl-secret-block@1.json and spl-secret-warn@1.json example policies. |
|
||||
| 2026-01-04 | PSD-011 completed | Created unit tests in SecretEvidenceContextTests.cs, SecretSignalBinderTests.cs, SecretSignalContextExtensionsTests.cs. All 8 PolicyDsl tests pass. |
|
||||
| 2026-01-04 | PSD-012 completed | Updated docs/modules/policy/secret-leak-detection-readiness.md with implemented predicates table and code examples. |
|
||||
| 2026-01-04 | Sprint completed | All 12 tasks DONE. |
|
||||
|
||||
|
||||
Reference in New Issue
Block a user