Files
management/docs/issues/0078-gitops-45-cve-meldeweg-v2-metriken-grafana-dashboard-al.md
T
Thore CimbalandClaude Opus 5 a1def8666e feat(issues): adopt the component trackers — one backlog, one numbering (ADR-0019)
ADR-0012 made docs/issues/ canonical for the management scope only and left
gitops, ThreadNet-Web and threadnet-call on GitLab "until the component adopts".
That split produced exactly what it invited: two numbering worlds where
management#20 and gitops#20 are different issues, drift nobody had to answer for
(gitops#61 carried no milestone since 2026-08-11), and component backlogs that
host sessions without lab access cannot read at all.

The 46 open component issues are now files 0056-0101. The file id is the
group-wide identifier; provenance lives in the frontmatter (new field `projekt`
plus gitlab_iid) and in the filename, so "gitops#61" still finds 0091. Bodies are
copied verbatim; comments and history stay on GitLab, as with the 2026-08-11
management import.

Both scripts learned the second dimension: spiegel_issues.py routes each file to
its origin project, reopens issues that are open in the repo but closed on the
board, and writes the new iid back after creating one; gruppenpruefung.py checks
drift across all four trackers instead of management alone. What the mirror
cannot decide stays a finding, not a silent state.

Two things needed a hand, both recorded in the files: gitops#61 had no milestone
(M1 - it is a live account-takeover path) and carried two area labels where the
schema holds one. The Gitea migration footers in the imported bodies point at
decommissioned trackers; their links are removed, the provenance sentence stays.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 12:00:00 +00:00

2.9 KiB

type, id, status, created, milestone, priority, projekt, gitlab_iid, related
type id status created milestone priority projekt gitlab_iid related
issue 0078 open 2026-08-01 M1 medium gitops 45

CVE-Meldeweg v2: Metriken, Grafana-Dashboard, Alerts in eigenen Matrix-Raum

Adoptiert aus gitops#45 (2026-08-18, ADR-0019). Kommentare und Verlauf bleiben dort; kanonisch ist ab jetzt diese Datei.

Entscheidung sorb (2026-08-01): Die reine Artifact-Ablage der Trivy-Funde (#31) ist ungenügend. Zielbild:

  1. Eigener Matrix-Raum für CVE-/Release-Meldungen: !YRJvcEbVXtRlUIkNld:axion1337.chat (angelegt), Absender bleibt der bestehende @alerts-Bot — kein zweiter Bot (beantwortet CFGMON-13). Bot einladen (Raum ist restricted, Join wurde abgelehnt) — sorb.
  2. CVEs als MetrikenGrafana-Dashboard + Prometheus-Alertregeln → Alertmanager → Matrix. Damit laufen CVE-Warnungen über denselben Alarmweg wie alles andere (Historie, Silences, Dashboards inklusive).

Architektur-Vorschlag (zur Diskussion):

  • Scan-Ort wandert von der Lab-CI nach CFGMON: Trivy als Compose-Service/Cron im monitoring-Stack (--format json → kleiner Stdlib-Konverter → Prometheus-Textfile/Pushgateway-los via Remote-Write auf localhost:9090). Begründung: Metriken, Prometheus und Grafana wohnen dort; die Lab-CI bleibt fürs schnelle „Report als Artifact" beim Release-Build. Alternativ: Lab-CI pusht Metriken — scheitert aber an CFGMON-03 (9090 wird gerade zugezogen) und koppelt Prod-Monitoring an Lab-Verfügbarkeit.
  • Metrik-Schema: trivy_image_vulnerabilities{image,severity} (Gauge) + trivy_scan_timestamp{image}; Alertregel z. B. trivy_image_vulnerabilities{severity="CRITICAL"} > 0 → severity=critical, HIGH > 0 → warning mit for: 24h (Rauschdämpfung).
  • Raum-Routing: matrix-alerts-Receiver bekommt Label-basiertes Routing (room-Label im Alert → Ziel-Raum, Default = Alerts-Raum); Alertmanager-Route setzt room: cve für Trivy-Alerts. Kleiner, sauberer Eingriff im bestehenden Stdlib-Receiver.
  • release-watch (Advisory-Notizen, #22) zieht in denselben CVE-Raum um — Env dafür ist vorbereitet (MATRIX_RELEASE_ROOM_ID, Fallback Alerts-Raum).

Abgrenzung SBOM (Frage sorb, dokumentiert auch im Script): release-watch lebt von einer handgepflegten Repo-Liste — de facto ein Mini-SBOM auf Repo-Granularität, ohne Versions-/Dependency-Wissen. Trivy dagegen erzeugt sein SBOM selbst aus den Images (OS-Pakete + Sprach-Dependencies) — dort ist nichts zu pflegen. Beide ergänzen sich: Trivy = „was IST verwundbar in dem, was wir ausliefern", release-watch = „Upstream hat etwas veröffentlicht, das uns betreffen könnte".

Verweise: #31 (Scan existiert), #22 (release-watch), CFGMON-13 im Backlog (Absender-Design — durch Punkt 1 entschieden).


Migriert aus Gitea sorb/axion1337.chat-gitops#47 — dort erstellt am 2026-08-01 von sorb.