Files
nexarch/migrations
patrickandClaude Sonnet 5 bf062996d6
Supply-Chain-Scan (Go) / govulncheck (push) Failing after 1m53s
IAM-20: anomalie-erkennung-bei-api-token-service-account-nutzung
internal/serviceaccount/anomaly.go: rein additive Ergaenzung zu IAM-09
(serviceaccount.go bleibt unveraendert) — VerifyWithContext ruft Verify
unveraendert auf und beobachtet danach Herkunfts-IP und Zugriffsrate eines
gueltigen Tokens. Eine bisher nicht beobachtete IP-Range (grob gebuckelt auf
/24 bzw. /64) oder ein gegenueber der EWMA-Basislinie stark abweichender
Zugriffsratenanstieg (>5x schneller als gewohnt, erst ab 3 Beobachtungen
bewertet) erzeugt ein Audit-Event mit metadata.severity=elevated ueber die
zentrale AUD-01-Schreibschnittstelle (Akzeptanzkriterium 1 + 2). Optional ist
ein CFG-02-Dispatcher anschliessbar (WithNotify) fuer eine Benachrichtigung
des Token-Besitzers/Tenant-Admins.

Keine automatische Sperre: eine erkannte Anomalie ruft niemals Revoke auf,
das Token bleibt gueltig (Akzeptanzkriterium 3) — reines Hinweissignal, wie
im Auftrag gefordert (bewusst vermeiden: Keycloak, wo Anomalie-Erkennung nur
optionale Zusatzkonfiguration ist).

migrations/tenant/0007_api_token_anomaly.{up,down}.sql: zwei neue Tabellen
(api_token_ip_ranges, api_token_rate_state), keine Aenderung an api_tokens/
audit_events selbst.

Pruefungen (ausgefuehrt auf root@192.168.1.131, go test -p 1 PASS):
1. Zugriff aus neuer IP-Range erzeugt erwarteten Audit-Event —
   TestVerifyWithContext_NewIPRangeTriggersAuditEvent: erster Zugriff legt
   Basislinie an (kein Alarm), zweiter Zugriff aus anderer Range erzeugt
   genau 1 Event mit severity=elevated. PASS.
2. Kuenstlich stark erhoehte Zugriffsrate erzeugt erwarteten Audit-Event —
   TestVerifyWithContext_RateSpikeTriggersAuditEvent: Basislinie mit
   ~120ms-Abstand etabliert, Burst-Zugriff ohne Abstand erzeugt genau
   1 Raten-Anomalie-Event. PASS.
3. Regressionstest: normale, unauffaellige Nutzung erzeugt keine
   Falsch-Alarme — TestVerifyWithContext_NormalUsageNoFalseAlarms: 8 Zugriffe
   gleiche IP-Range, gleichmaessiger Abstand, 0 Events. PASS.
Zusaetzlich: TestVerifyWithContext_AnomalyDoesNotRevokeToken belegt
Akzeptanzkriterium 3 direkt (Token nach erkannter Anomalie weiterhin
gueltig). PASS.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QPsyieCYwvbUBsnN598SbP
2026-09-17 12:13:09 +02:00
..