""" Audit Logger für Production Environment ======================================= Minimale Implementierung für Compliance und Audit-Anforderungen. """ import logging from datetime import datetime from typing import Optional, Dict, Any from utils.logging_config import get_logger # Logger für Audit-Events audit_logger = get_logger("audit") def init_audit_logging(app) -> None: """ Initialisiert das Audit-Logging-System für die Flask-Anwendung. Args: app: Flask-Anwendungsinstanz """ try: # Audit-Logger konfigurieren audit_logger.info("[AUDIT] Audit-Logging-System initialisiert") # Request-Handler für Audit-Logs registrieren @app.before_request def log_audit_event(): """Loggt relevante Anfragen für Audit-Zwecke""" from flask import request from flask_login import current_user # Nur sicherheitsrelevante Endpunkte loggen sensitive_paths = ['/auth/', '/admin/', '/api/admin/', '/users/'] if any(path in request.path for path in sensitive_paths): audit_logger.info( f"[AUDIT] {request.method} {request.path} | " f"User: {getattr(current_user, 'username', 'Anonymous')} | " f"IP: {request.remote_addr}" ) audit_logger.info("[AUDIT] ✅ Audit-Logging erfolgreich konfiguriert") except Exception as e: audit_logger.error(f"[AUDIT] ❌ Fehler bei Audit-Logging-Initialisierung: {str(e)}") raise def log_admin_action(action: str, user_id: Optional[int] = None, details: Optional[Dict[str, Any]] = None) -> None: """ Loggt Admin-Aktionen für Audit-Zwecke. Args: action: Beschreibung der durchgeführten Aktion user_id: ID des Benutzers, der die Aktion durchgeführt hat details: Zusätzliche Details zur Aktion """ audit_logger.info( f"[ADMIN_ACTION] {action} | " f"User ID: {user_id} | " f"Details: {details or 'None'} | " f"Timestamp: {datetime.now().isoformat()}" ) def log_security_event(event_type: str, description: str, ip_address: Optional[str] = None, user_id: Optional[int] = None) -> None: """ Loggt sicherheitsrelevante Events. Args: event_type: Art des Security-Events (LOGIN, LOGOUT, FAILED_LOGIN, etc.) description: Beschreibung des Events ip_address: IP-Adresse des Clients user_id: Benutzer-ID falls verfügbar """ audit_logger.warning( f"[SECURITY_EVENT] {event_type}: {description} | " f"User ID: {user_id} | " f"IP: {ip_address} | " f"Timestamp: {datetime.now().isoformat()}" )