docs: specify automated vulnerability visibility for production (R-VULN-*, ADR-0027)

Adds R-VULN-01..09, docs/17 and ADR-0027: a scheduled digest scanner in the
cluster, a versioned report, an SSO page listing each CVE against its images,
containers and workloads, grouped email alerts, and a Renovate-shaped CI triage
bot. Renovate stays the only author of version changes, and "not scanned" is
always visible rather than reading as clean.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
jakman85andClaude Opus 5.5 committed 2026-11-09 09:21:52 -06:00
1 parent c626349c7d
commit 0fb44bb0a8
12 files changed
+413 -1

No files matched your search

+22
View File
@@ -150,6 +150,28 @@ mandatory; `SHOULD` is strongly preferred and requires an ADR to deviate.
- **R-SEC-04** — The Kubernetes API MUST NOT be reachable from the public internet by any path (no
tunnel route, no edge forward, no public DNS record); it is LAN/VPN-only (ADR-0016).
### Vulnerability visibility — `R-VULN-*`
- **R-VULN-01** — The platform MUST maintain an inventory of every container image running in
production, by digest, mapped to the namespaces, workloads and containers using it, taken from the
running cluster and not from git.
- **R-VULN-02** — Every running image MUST be evaluated against a current vulnerability database at
least every 24 hours, and a newly running image within 2 hours.
- **R-VULN-03** — Any target not successfully evaluated MUST be visibly reported as such with its
reason. Absence of data MUST NOT be presented as absence of vulnerabilities.
- **R-VULN-04** — An authenticated page MUST list every known CVE and, for each, the images,
containers and workloads it affects, and MUST be searchable and filterable.
- **R-VULN-05** — Inventory, scanning, reporting and triage MUST run on a schedule with **no human
and no AI action**, and MUST fail loudly when they cannot run.
- **R-VULN-06** — Scan failure, staleness, and unaccepted CRITICAL vulnerabilities with an available
fix MUST be reported by **email**, as grouped alerts.
- **R-VULN-07** — A scheduled bot MUST maintain a single dashboard issue and request remediation
through Renovate. Renovate MUST remain the only author of version changes, and CVE detail MUST NOT
be published to any surface readable without authentication.
- **R-VULN-08** — Accepted risk MUST be declared in git, through the merge gate, with a reason and a
mandatory expiry, and MUST revert to open automatically when it expires.
- **R-VULN-09** — The scanner MUST be digest-pinned, MUST NOT auto-merge its own updates, MUST NOT
read Secrets or hold Kubernetes write access, and MUST hold no git credential.
### Identity & access (SSO) — `R-IDP-*`
- **R-IDP-01** — The platform MUST provide a central Identity Provider (SSO) as the single user
directory and login for platform services.