Audit: Portaldaten-Opt-out als eigenes CRITICAL-Event loggen

Auf Wunsch des Pentesters (R117-Nachtrag). Das Umschalten des
portalCredentialsNotRequired-Flags emittiert jetzt zusätzlich zum
generischen Contract-Update-Diff ein dediziertes UPDATE-Event
unter resourceType 'ContractPassword' – landet damit in derselben
CRITICAL-Sensitivity-Reihe wie Klartext-Password-Reads.

Motivation: das Setzen des Flags räumt server-seitig
portalUsername, portalPasswordEncrypted und stressfreiEmailId auf
NULL. Diese Löschung soll unabhängig vom generischen Diff sofort
sichtbar sein. Rücknahme wird ebenfalls geloggt.

Details enthält alte + neue Flag-Werte plus Bool-Marker, welche
Anmeldedaten vor dem Opt-out belegt waren – keine Klartext-
Leckage im Log.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-07-17 14:58:51 +02:00
co-authored by Claude Opus 4.7
parent dcdb3cb057
commit 66fb5092fe
2 changed files with 48 additions and 0 deletions
+13
View File
@@ -97,6 +97,19 @@ isolierte Instanz (keine Multi-Tenancy im Code), Provisioning + Abrechnung
## ✅ Erledigt
- [x] **📝 DSGVO-Audit: Portaldaten-Opt-out als eigenes CRITICAL-Event**
- Auf Wunsch des Pentesters (R117-Nachtrag): das Umschalten des
`portalCredentialsNotRequired`-Flags emittiert jetzt zusätzlich zum
generischen Contract-Update-Diff ein dediziertes `UPDATE`-Event
unter `resourceType: 'ContractPassword'` — landet damit in derselben
CRITICAL-Sensitivity-Reihe wie Klartext-Password-Reads.
- Motivation: das Setzen des Flags räumt server-seitig
`portalUsername`/`portalPasswordEncrypted`/`stressfreiEmailId` auf
`NULL`. Diese Löschung sensitiver Daten ist jetzt unabhängig vom
generischen Diff nachweisbar. Rücknahme wird ebenfalls geloggt.
- `details` enthält alte + neue Flag-Werte plus Bool-Marker, welche
Anmeldedaten vor dem Opt-out belegt waren (keine Klartext-Leckage).
- [x] **🔕 Vertrag: „Portaldaten nicht möglich / nicht benötigt"-Opt-out**
- Dritter Radio-Button in der `Zugangsdaten`-Card des Vertragsformulars:
„Nicht möglich zu bekommen / nicht benötigt". Wenn gesetzt, unterdrückt