Auditprotokoll
Das Auditprotokoll zeichnet sicherheits- und änderungsrelevante Aktionen in CrispyCMS lückenlos auf — von der Anmeldung eines Benutzers über das Bearbeiten einer Seite bis hin zum Wiederherstellen eines Backups. Es beantwortet die Frage „Wer hat wann was geändert?” ohne zusätzliche Konfiguration.
Der Menüpunkt Verwaltung → Auditprotokoll ist ausschließlich Benutzern mit der Superuser-Rolle zugänglich. Es gibt aktuell keine feingranulare Berechtigung, um Lesezugriff auf das Auditprotokoll gezielt an einzelne Rollen zu vergeben.
Was protokolliert wird
Jede protokollierte Aktion erhält einen eindeutigen Ereignis-Code. Die wichtigsten Kategorien:
| Bereich | Beispiele |
|---|---|
| Benutzer | Anmeldung, fehlgeschlagene Anmeldung, Abmeldung, Registrierung, Passwort-Reset, Profiländerung, Rollenänderung, Löschung |
| Dateien | Hochladen, Löschen, Verschieben, Umbenennen, Aktualisieren |
| Seiten & Struktur | Anlegen/Ändern/Löschen von Seiten, Kategorien, Rollen, Benutzern, Vorlagen, Layouts |
| Weiterleitungen | Anlegen, Ändern, Löschen einer Weiterleitung (siehe Weiterleitungen) |
| Plugins | Installation, Deinstallation, Löschung |
| Einstellungen | Änderungen an den Systemeinstellungen |
| Backups | Erstellen, Löschen, Wiederherstellen, Hochladen eines Backups |
| System | Bereinigung des Auditprotokolls selbst (siehe Aufbewahrung) |
Für Erstellungen, Änderungen und Löschungen speichert CrispyCMS zusätzlich einen Feld-Diff: Bei Änderungen wird für jedes betroffene Feld der alte und der neue Wert festgehalten, bei Textfeldern zusätzlich als lesbarer Unified-Diff.
Wird eine Seite gespeichert, ohne dass sich an den auditierten Feldern etwas geändert hat, entsteht kein neuer Auditprotokoll-Eintrag. So bleibt das Protokoll aussagekräftig und wächst nicht durch reine Leerlauf-Speicherungen.
Übersicht: Verwaltung → Auditprotokoll
Die Übersicht listet alle Einträge chronologisch (neueste zuerst) mit 50 Einträgen pro Seite.
| Spalte | Beschreibung |
|---|---|
| # | Interne, fortlaufende ID des Eintrags. |
| Ereignis | Name des Ereignis-Codes (z. B. PAGE_UPDATE), farblich markiert nach Art: rot für Löschungen, grün für Erstellungen, gelb für Aktualisierungen, blau für Benutzeraktionen. |
| Objekt | Der betroffene Objekttyp (Seite, Benutzer, Kategorie, Rolle, Vorlage, Layout, Plugin, …) samt ID, sofern zutreffend. |
| Akteur | Avatar und Name des Benutzers, der die Aktion ausgelöst hat. Bei systemseitig ausgelösten Aktionen (z. B. automatische Bereinigung) bleibt das Feld leer. |
| Zeitstempel | Datum und Uhrzeit der Aktion. |
Filtern
Über die Filterleiste oberhalb der Tabelle können Sie die Liste eingrenzen:
- Objekttyp — z. B. nur Einträge zu Seiten oder nur zu Benutzern.
- Ereignis — ein konkreter Ereignis-Code aus der vollständigen Liste.
Mit Filter zurücksetzen oben rechts entfernen Sie alle aktiven Filter wieder.
Details zu einem Eintrag
Zwei Symbole am Zeilenende öffnen weitere Details, sofern vorhanden:
| Symbol | Öffnet |
|---|---|
| Änderungsvergleich (Diff-Symbol) | Ein Dialog mit einer Tabelle aller geänderten Felder — jeweils mit Bezeichnung, altem und neuem Wert sowie, bei Textfeldern, einem farbig hervorgehobenen Diff. |
| Metadaten (Info-Symbol) | Zusätzliche, ereignisspezifische Rohdaten im JSON-Format — z. B. Anzahl gelöschter Einträge bei einer automatischen Bereinigung. |
Aufbewahrung & automatische Bereinigung
Damit das Auditprotokoll nicht unbegrenzt wächst, lässt sich unter Einstellungen → Sicherheit → Auditprotokoll-Aufbewahrung eine automatische Bereinigung konfigurieren.
| Einstellung | Beschreibung |
|---|---|
| Automatische Auditprotokoll-Bereinigung | Schaltet die automatische Löschung alter Einträge ein oder aus. Ist sie deaktiviert, bleiben alle Einträge unbegrenzt erhalten. |
| Aufbewahrungszeitraum (Tage) | Anzahl der Tage, für die Einträge aufbewahrt werden, bevor sie automatisch gelöscht werden. Standard: 90 Tage. |
Ist die automatische Bereinigung aktiviert, läuft nächtlich um 03:00 Uhr ein Hintergrundjob, der alle Einträge löscht, die älter als der konfigurierte Zeitraum sind. Jede durchgeführte Bereinigung wird selbst als Eintrag (AUDIT_LOG_CLEANUP) im Protokoll festgehalten — inklusive Anzahl der gelöschten Einträge als Metadaten.
Weder die automatische Bereinigung noch das manuelle Löschen über die Kommandozeile lassen sich rückgängig machen. Wägen Sie den Aufbewahrungszeitraum insbesondere dann sorgfältig ab, wenn Sie das Auditprotokoll auch zu Compliance- oder Nachweiszwecken nutzen.
Manuelles Bereinigen über die Kommandozeile
Für Administratoren mit Zugriff auf die Kommandozeile steht zusätzlich der Befehl crispy:audit-log:purge zur Verfügung:
# Einträge löschen, die älter sind als der konfigurierte Aufbewahrungszeitraum (Standard: 90 Tage)
crisp crispy:audit-log:purge
# Einträge löschen, die älter als 30 Tage sind
crisp crispy:audit-log:purge --days=30
# Wirklich ALLE Einträge löschen, unabhängig vom Alter
crisp crispy:audit-log:purge --all
# Bestätigungsabfrage überspringen (z. B. für automatisierte Skripte)
crisp crispy:audit-log:purge --force
Der Befehl zeigt vor dem Löschen zunächst an, wie viele Einträge betroffen wären, und fragt — sofern --force nicht gesetzt ist — eine Bestätigung ab.
Berechtigungen
| Berechtigung | Beschreibung |
|---|---|
| Superuser | Einzige Rolle mit Zugriff auf Verwaltung → Auditprotokoll. |
Die Aufbewahrungseinstellungen unter Einstellungen → Sicherheit sind ebenfalls ausschließlich Superusern vorbehalten.