92 — Audit-Log

Aktualisiert am 1. Juni 2026

92 — Audit-Log

Jede sicherheitsrelevante oder geschäftskritische Aktion wird im Audit-Log dokumentiert. Wer hat wann was gemacht — vollständig nachvollziehbar.

Wer kann was sehen?

Rolle Sicht
Plattform-Admin Alle Tenants, alle Einträge
Tenant-Owner Nur eigener Tenant
Reguläre Tenant-Admins Kein Zugriff (Pflichten-Trennung)
Partner Kein Zugriff

Was wird protokolliert?

Auth-Aktionen

  • Login-Success mit Email + IP.
  • Login-Failure mit attempted-Email + IP + Grund.
  • Logout (implizit über JWT-Expiry).
  • 2FA-Setup/-Aktivierung/-Deaktivierung.
  • Password-Reset-Anforderung + Durchführung.

Geschäftliche Aktionen

  • payout.approved mit Payout-Nummer, Partner, Betrag.
  • payout.paid mit Bank-Referenz.
  • payout.stripe_transfer mit Stripe-Transfer-ID + Destination-Account.
  • payout.cancelled mit Grund.
  • transaction.approved / rejected.
  • customer.assigned / unassigned.
  • partner.created / status_changed / anonymized.

Plattform-weite Aktionen

  • tenant.created / suspended / reactivated.
  • api_key.created / revoked.
  • webhook_endpoint.created / deactivated (Auto-Deactivate nach 10 Fails).

Pro Eintrag wird gespeichert

Feld Inhalt
Zeitpunkt UTC-Timestamp
Actor-Type platform_user, tenant_user, partner, system
Actor-ID UUID
Actor-Label Display-Name (auch nach User-Löschung lesbar)
Action Kanonischer Action-Name (payout.approved, …)
Entity-Type Welche Entity wurde geändert
Entity-ID Welche konkrete Instance
Changes (JSON) Diff {field: [old, new]}
Metadata (JSON) Action-spezifische Zusatzdaten
IP-Adresse Request-IP
User-Agent Browser/Tool

Wo finde ich das Log?

Tenant-Admin

Admin → „Audit-Log" in der Sidebar (nur für ROLE_OWNER).

Filter:

  • Aktion (Dropdown aller registrierten Actions).
  • Actor-Type.
  • Entity-Type.
  • Zeitraum.

Detail: Klick auf Eintrag → Expand/Collapse mit JSON-Diff.

Plattform-Admin

Superadmin → „Audit-Log" mit zusätzlichem Tenant-Filter.

Actor-Type-Erkennung

PartnerDesk erkennt automatisch, wer eine Aktion ausgelöst hat:

  • PlatformUseractor_type: 'platform_user'.
  • TenantUseractor_type: 'tenant_user'.
  • Partneractor_type: 'partner'.
  • Cron / System-Triggeractor_type: 'system'.

Badges sind farbcodiert für schnelle Orientierung.

Export

Audit-Log als CSV exportierbar:

GET /api/admin/audit-log/export.csv

Mit gleichen Filter-Params wie die List-View. UTF-8 BOM für Excel-Kompatibilität. Iterable-Query für Memory-Effizienz bei großen Logs.

Retention

Audit-Einträge werden nach 18 Monaten automatisch gelöscht (täglicher Cron). Konfigurierbar über Env-Variable AUDIT_RETENTION_DAYS.

Compliance-Hinweis: 18 Monate sind eine pragmatische Wahl. Für längere Aufbewahrung (z. B. Compliance-spezifische Anforderungen) → Plattform-Owner kontaktieren.

Fehler-Tolerance

Audit-Logging ist try-umschlossen — eine fehlgeschlagene Logging-Operation (z. B. DB-Connection-Loss) bricht niemals den Main-Flow ab. Im Notfall fehlt eine Audit-Zeile, aber der Business-Workflow läuft weiter.

Verwandte Kapitel


Technische Tiefen-Doku: ../025-webhook-audit-log.md, ../041-security-headers-login-audit.md, ../164-v1-block-2-audit-csv.md