Files
aza/AzA march 2026 - Kopie/security/handovers/STEP_11_AUDIT_LOGGING.md
2026-03-30 07:59:11 +02:00

152 lines
4.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# STEP 11 Audit-Logging (Minimal & DSG-konform)
## Ziel
Sicherheitsrelevante Ereignisse nachvollziehbar protokollieren,
ohne sensible Daten (Patientendaten, Prompts, Passwoerter) zu speichern.
---
## 1. Architektur
Neues Modul: aza_audit_log.py
Log-Format: Pipe-separierte Textdatei (eine Zeile pro Ereignis)
TIMESTAMP | EVENT | USER | STATUS | SOURCE | DETAIL
Beispiel:
2026-02-22T21:13:25.419+00:00 | LOGIN_OK | Dr. Mueller | OK | desktop |
Alle Timestamps sind UTC (ISO-8601).
---
## 2. Protokollierte Ereignisse
Event-Typ Beschreibung Wann
------------------------------------------------------------------
APP_START Anwendung gestartet main()
APP_STOP Anwendung beendet nach mainloop()
LOGIN_OK Erfolgreicher Login do_login()
LOGIN_FAIL Fehlgeschlagener Login do_login()
2FA_OK 2FA-Verifizierung erfolgreich do_verify()
2FA_FAIL 2FA-Verifizierung fehlgeschlagen do_verify()
CONSENT_GRANT KI-Einwilligung erteilt on_accept()
CONSENT_REVOKE KI-Einwilligung widerrufen toggle_consent()
AI_TRANSCRIBE KI-Transkription gestartet transcribe_wav()
AI_CHAT KI-Chat-Completion aufgerufen call_chat_completion()
AI_BLOCKED KI-Aufruf ohne Consent blockiert transcribe/chat
PASSWORD_REHASH Legacy-Hash auf bcrypt migriert do_login()
EXPORT Log-Export durchgefuehrt do_export()
---
## 3. Data Minimization (DSG Art. 6)
Was NICHT im Audit-Log gespeichert wird:
- Patientennamen / Patientendaten
- Transkripte / KG-Inhalte
- KI-Prompts / KI-Antworten
- Passwoerter / Passwort-Hashes
- API-Keys / Secrets
- E-Mail-Inhalte
Detail-Feld: Maximal 200 Zeichen, nur Metadaten
(z.B. "model=gpt-5.2", "2FA backup-code").
---
## 4. Log-Rotation
Parameter Standard ENV-Variable
--------------------------------------------------
Max. Dateigroesse 10 MB AZA_AUDIT_ROTATE_MB
Rotierte Dateien 12 AZA_AUDIT_KEEP
Logdatei-Pfad aza_audit.log AZA_AUDIT_LOG
Bei Ueberschreitung der Maximalgroesse:
aza_audit.log -> aza_audit.1.log -> ... -> aza_audit.12.log
Aelteste Datei wird ueberschrieben.
---
## 5. Export
Ueber Einstellungen -> "Logs exportieren (Audit)":
Exportiert sowohl Consent-Log als auch Audit-Log als JSON.
Programmatisch:
python -c "from aza_audit_log import export_audit_log; print(export_audit_log())"
Export-Format:
{
"export_timestamp": "2026-02-22T...",
"total_entries": 12,
"source_file": ".../aza_audit.log",
"entries": [
{
"timestamp": "2026-02-22T...",
"event": "LOGIN_OK",
"user_id": "...",
"status": "OK",
"source": "desktop",
"detail": ""
}
]
}
---
## 6. Integration bestehender Audit-Systeme
Komponente Audit-System Speicherort
-----------------------------------------------------------
Desktop-App (basis14) aza_audit_log.py aza_audit.log
Backend (backend_main) _audit_write() medwork_audit.log
Workforce Planner log_action() + DB workforce_planner.db
Alle drei Systeme sind unabhaengig und koennen
separat exportiert werden.
---
## 7. Geaenderte / Neue Dateien
Datei Aktion
--------------------------------------------------
aza_audit_log.py NEU Audit-Log-Modul
basis14.py GEAENDERT Import + 10 log_event()-Aufrufe
aza_settings_mixin.py GEAENDERT Import + Widerruf-Log + Export
_test_audit_log.py NEU Testskript (23 Tests)
---
## 8. Test-Ergebnisse (22.02.2026)
Test Ergebnis
-------------------------------------------
Events schreiben PASS
12 Zeilen korrekt PASS
6 Felder pro Zeile PASS
Timestamp UTC PASS
Event-Typ korrekt PASS
User korrekt PASS
Status OK/FAIL korrekt PASS
Source = desktop PASS
Statistiken korrekt PASS
Export JSON korrekt PASS
Data Minimization PASS
Pipe-Sanitierung PASS
Gesamt: 23/23 ALLE BESTANDEN
---
## 9. Risiken
Risiko Bewertung Massnahme
--------------------------------------------------------
Log-Datei loeschbar NIEDRIG Backup sichert mit
Kein zentrales SIEM MITTEL Export fuer manuelle Pruefung
Keine Echtzeit-Alarmierung MITTEL Manueller Review empfohlen
Log-Rotation verliert alte Daten NIEDRIG 12 Dateien a 10 MB = 120 MB