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

4.8 KiB
Raw Permalink Blame History

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