feat(zastava): add evidence locker plan and schema examples
- Introduced README.md for Zastava Evidence Locker Plan detailing artifacts to sign and post-signing steps. - Added example JSON schemas for observer events and webhook admissions. - Updated implementor guidelines with checklist for CI linting, determinism, secrets management, and schema control. - Created alert rules for Vuln Explorer to monitor API latency and projection errors. - Developed analytics ingestion plan for Vuln Explorer, focusing on telemetry and PII guardrails. - Implemented Grafana dashboard configuration for Vuln Explorer metrics visualization. - Added expected projection SHA256 for vulnerability events. - Created k6 load testing script for Vuln Explorer API. - Added sample projection and replay event data for testing. - Implemented ReplayInputsLock for deterministic replay inputs management. - Developed tests for ReplayInputsLock to ensure stable hash computation. - Created SurfaceManifestDeterminismVerifier to validate manifest determinism and integrity. - Added unit tests for SurfaceManifestDeterminismVerifier to ensure correct functionality. - Implemented Angular tests for VulnerabilityHttpClient and VulnerabilityDetailComponent to verify API interactions and UI rendering.
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
|
||||
The Export Center is the dedicated service layer that packages StellaOps evidence and policy overlays into reproducible bundles. It runs as a multi-surface API backed by asynchronous workers and format adapters, enforcing Aggregation-Only Contract (AOC) guardrails while providing deterministic manifests, signing, and distribution paths.
|
||||
|
||||
## Runtime topology
|
||||
## Runtime topology
|
||||
- **Export Center API (`StellaOps.ExportCenter.WebService`).** Receives profile CRUD, export run requests, status queries, and download streams through the unified Web API gateway. Enforces tenant scopes, RBAC, quotas, and concurrency guards.
|
||||
- **Export Center Worker (`StellaOps.ExportCenter.Worker`).** Dequeues export jobs from the Orchestrator, resolves selectors, invokes adapters, and writes manifests and bundle artefacts. Stateless; scales horizontally.
|
||||
- **Backing stores.**
|
||||
@@ -16,7 +16,16 @@ The Export Center is the dedicated service layer that packages StellaOps evidenc
|
||||
- **Policy Engine** for deterministic policy snapshots and evaluated findings.
|
||||
- **Orchestrator** for job scheduling, quotas, and telemetry fan-out.
|
||||
- **Authority** for tenant-aware access tokens and KMS key references.
|
||||
- **Console & CLI** as presentation surfaces consuming the API.
|
||||
- **Console & CLI** as presentation surfaces consuming the API.
|
||||
|
||||
## Gap remediation (EC1–EC10)
|
||||
- Schemas: publish signed `ExportProfile` + manifest schemas with selector validation; keep in repo alongside OpenAPI docs.
|
||||
- Determinism: per-adapter ordering/compression rules with rerun-hash CI; pin Trivy DB schema versions.
|
||||
- Provenance: DSSE/SLSA attestations with log metadata for every export run; include tenant IDs in predicates.
|
||||
- Integrity: require checksum/signature headers and OCI annotations; mirror delta/tombstone rules documented for adapters.
|
||||
- Security: cross-tenant exports denied by default; enforce approval tokens and encryption recipient validation.
|
||||
- Offline parity: provide export-kit packaging + verify script for air-gap consumers; include fixtures under `src/ExportCenter/__fixtures`.
|
||||
- Advisory link: see `docs/product-advisories/28-Nov-2025 - Export Center and Reporting Strategy.md` (EC1–EC10) for original requirements and keep it alongside sprint tasks for implementers.
|
||||
|
||||
## Job lifecycle
|
||||
1. **Profile selection.** Operator or automation picks a profile (`json:raw`, `json:policy`, `trivy:db`, `trivy:java-db`, `mirror:full`, `mirror:delta`) and submits scope selectors (tenant, time window, products, SBOM subjects, ecosystems). See `docs/modules/export-center/profiles.md` for profile definitions and configuration fields.
|
||||
|
||||
34
docs/modules/export-center/determinism.md
Normal file
34
docs/modules/export-center/determinism.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Export Center Determinism & Rerun Hash Guide
|
||||
|
||||
Advisory: `docs/product-advisories/28-Nov-2025 - Export Center and Reporting Strategy.md` (EC1–EC10).
|
||||
|
||||
## Adapter settings (runnable example)
|
||||
- JSON adapters: `--compression zstd --compression-level 19 --deterministic-order`
|
||||
- Mirror adapter: sort descriptors by digest, emit annotations in lexicographic order, disable mtime in tar (`--mtime 0`).
|
||||
- Delta adapter: include `baseManifestHash` and sorted `added`/`removed` lists; tombstones must be explicit.
|
||||
|
||||
## Rerun-hash check
|
||||
```bash
|
||||
set -euo pipefail
|
||||
run_id=$(uuidgen)
|
||||
stella export run --profile demo --run-id "$run_id" --out /tmp/export1
|
||||
sha256sum /tmp/export1/manifest.json > /tmp/export1/manifest.sha256
|
||||
# second run
|
||||
run_id2=$(uuidgen)
|
||||
stella export run --profile demo --run-id "$run_id2" --out /tmp/export2
|
||||
sha256sum /tmp/export2/manifest.json > /tmp/export2/manifest.sha256
|
||||
diff -u /tmp/export1/manifest.sha256 /tmp/export2/manifest.sha256
|
||||
```
|
||||
|
||||
## Integrity headers (HTTP example)
|
||||
- `Digest: sha-256=<base64>`
|
||||
- `X-Stella-Signature: dsse-b64=<payload>`
|
||||
- `X-Stella-Immutability: true`
|
||||
|
||||
## Offline kit packaging
|
||||
- Tar flags: `tar --sort=name --mtime=@0 --owner=0 --group=0 --numeric-owner`
|
||||
- Include `export-kit/manifest.json` + `manifest.dsse`; add `verify-export-kit.sh` to check hashes and signatures.
|
||||
|
||||
## Where to place fixtures
|
||||
- `src/ExportCenter/__fixtures/` for deterministic manifests/outputs used by tests.
|
||||
- Add rerun-hash CI to compare fixture hash against regenerated outputs.
|
||||
Reference in New Issue
Block a user