Audit-Log
Jede Aktion, die Nutzerdaten liest oder ändert, sowie die meisten Konfigurationsänderungen, wird in Restows Audit-Log geschrieben: über die Web-Oberfläche, die Integrations-API oder einen Admin-Consent-Flow. Das ist keine optionale Protokollierung: Die Datenbank selbst weist UPDATE/DELETE auf der Audit-Tabelle zurück (nur anhängbar).
Was erfasst wird
Abschnitt betitelt „Was erfasst wird“Jeder Eintrag trägt wer (ein Nutzer, ein API-Schlüssel oder „System“), wann, was (eine Aktion, z. B. „Wiederherstellung angefordert“ oder „Admin-Consent erteilt“), für wen, falls im Auftrag einer anderen Person gehandelt wurde (Impersonation), das Ziel (ein Postfach, eine Quelle, ein Webhook und so weiter), den Mandanten und die IP-Adresse, von der die Anfrage kam.
Die Kategorien umfassen Anmeldung, Quellen, Verzeichnis-Sync, Sicherung, Restore, Verifizierung, Speicher, Einstellungen, Mandanten und Mitglieder, API-Schlüssel, Webhooks, Lizenzierung, das Archiv, Endpoint-Backup, Proxmox-VE-Backup, Mail-Import und -Export, Updates, den Betreiberhinweis und die Wiederherstellung des Admin-Zugangs über die Kommandozeile des Servers (restow admin recover, siehe Einrichtungsassistent).
Seit 0.4.0 hält das Protokoll unter anderem auch fest:
| Bereich | Aktionen |
|---|---|
| Freigaben | file_share.created, file_share.updated, file_share.tested, file_share.password_changed, file_share.settings_changed, file_share.quota_changed, file_share.private_network_approved, file_share.private_network_withdrawn, file_share.backup_requested, file_share.restore_requested, file_share.restore_test_requested, file_share.run_cancel_requested, file_share.browsed, file_share.searched, file_share.download_created, file_share.downloaded, file_share.retired, file_share.reactivated, file_share.purge_requested, file_share.repository_password_shown, file_share.repository.denied |
| Der Mounter | mounter.enable_requested, dann mounter.enabled oder mounter.enable_failed (Netzlaufwerke einschalten) |
| Unveränderbare Backups | storage.target.immutability_changed, storage.target.immutability_verified |
| Ransomware-Erkennung | suspicion.false_alarm, suspicion.false_alarm_revoked, suspicion.hold_released, settings.ransomware.updated |
| Benachrichtigungen | report.matrix_updated |
| Richtlinien der Agenten | settings.agent_policy.updated, tenant.agent_policy.updated, endpoint.config.changed |
| Proxmox VE | pve.boot_test.requested, pve.snapshot.browsed, pve.snapshot.downloaded (auch für die Dateien von VMs) |
| Updates und die Datenbank | update.jobs_paused, update.jobs_resumed, update.dump.downloaded, update.dump.deleted, database.move.requested, database.move.started, database.move.succeeded, database.move.failed, database.old_copy.removal_requested, database.old_copy.removed |
Seit 0.4.2 hält es unter anderem auch fest:
| Bereich | Aktionen |
|---|---|
| Updates | update.planned (ein zu einer gewählten Zeit geplantes Update; verwirft man den Plan, steht update.cancelled mit planned: true im Log), update.plan_failed (ein geplantes Update konnte nicht beginnen), update.fleet_started (Knoten und Agenten zur Aktualisierung aufgefordert), pve.node.update_requested (eine Aktualisierung eines Proxmox-VE-Knotens angefordert), endpoint.update_requested (eine Aktualisierung eines Agenten angefordert) |
| Einstellungen | settings.time_zone.changed (die Zeitzone der Installation), settings.pve.updated (die Proxmox-VE-Einstellungen der Installation) |
| Sicherungen stoppen | pve.backup.cancelled (eine Sicherung eines Gasts), pve.queue.cancelled (wartende Sicherungen von Gästen zurückgezogen), pve.queue.paused und pve.queue.resumed (die Warteschlange eines Knotens), endpoint.backup.cancelled (die Sicherung eines Rechners). Läufe von Freigaben stehen als file_share.run_cancel_requested im Log. |
| Proxmox-VE-Repositories | pve.repository.reinitialized (das Repository eines Containers fehlte auf dem primären, eine neue Sicherungskette begann), pve.repository.reset (ein Administrator hat es zurückgesetzt) |
| Die VM des Restow-Servers selbst | pve.guest.restow_server (ein Gast als Restow-Server markiert oder die Markierung aufgehoben), pve.guest.self_backup_confirmed (die Sicherung mit Restow bestätigt) |
| Restore | snapshot.calendar.read (der Kalender einer Sicherung geöffnet) |
Seit 0.4.5 hält es unter anderem fest:
| Bereich | Aktionen |
|---|---|
| Lizenzschlüssel | license.installed, license.replaced und license.removed tragen jetzt die Update-Bedingungen des Schlüssels (series, updatesUntil, den Signaturschlüssel) und ob sie die laufende Version abdecken (Lizenz und Editionen). |
| Rechner entfernen | endpoint.removed (mit dem Modus, löschen oder bis zum Ablauf behalten), endpoint.removal.held, endpoint.removal.deferred, endpoint.removal.completed, endpoint.removal.failed (Deinstallation) |
| Jobs stoppen und starten | backup_job.run_cancelled (die Sicherungen eines Mail-, Rechner-, Freigaben- oder Kopierjobs gestoppt, am Job und, bei Rechnern, je Rechner als endpoint.backup.cancelled), pve.job.run_requested (eine Sicherung jedes Gasts eines Proxmox-VE-Jobs angefordert), pve.job.cancelled (die Sicherungen eines Proxmox-VE-Jobs gestoppt) |
Seit 0.4.7 hält es unter anderem fest:
| Bereich | Aktionen |
|---|---|
| Objekte, die nicht mehr gesichert werden | directory.inactive.confirmed (eine Administration hat mit Ja, beabsichtigt bestätigt, dass ein Objekt nicht mehr gesichert wird) und directory.inactive.bulk_confirmed (dasselbe für mehrere auf einmal). Eine über die API angegebene Notiz gehört zum Eintrag (Objekte, die nicht mehr gesichert werden). |
| Proxmox VE | pve.guest.excluded (ein Gast von der Sicherung ausgeschlossen oder wieder eingeschlossen; der Eintrag trägt die Zahl der wartenden Sicherungen, die zurückgezogen wurden, bevor sie den Knoten erreichten) (Einen Gast von der Sicherung ausschließen) |
| Eigene App einer Quelle | source.own_app.expiry_updated (das Ablaufdatum des Client-Secrets der eigenen App einer Quelle wurde geändert, ohne das Secret erneut einzugeben) (Erinnerungen, bevor Zugangsdaten einer App ablaufen) |
| Preise | settings.pricing.updated (die Preise des Providers wurden geändert, mit den Werten davor und danach) (Mandantenfähigkeit) |
| Jobs | backup_job.updated hält jetzt auch changes.archive fest, wenn der empfohlene Job das Archiv in einem Mail-Job einschaltet (Backup-Jobs) |
Manipulationserkennung
Abschnitt betitelt „Manipulationserkennung“Einträge sind je Mandant verkettet (jeder Eintrag verweist auf den Hash des vorherigen) und mit einem täglichen Anker versiegelt, sodass eine nachträgliche Änderung erkennbar ist: Sie bricht die Verkettung zum nächsten Eintrag, oder passt nicht mehr zum Anker des Tages. In der Ansicht prüft Jetzt prüfen die gesamte Kette erneut und meldet genau, wo ein Bruch liegt, falls einer existiert, und seit wann für Einträge nicht mehr eingestanden werden kann. Manipulationserkennbar heißt: Eine Änderung fällt auf, wenn die Kette geprüft wird; es heißt nicht, dass jemand mit voller Kontrolle über die Datenbank keine vornehmen könnte.
Einträge finden
Abschnitt betitelt „Einträge finden“Filtern Sie in der Ansicht (Business und Service Provider) nach Mandant (Provider-Administrationen können alle Ketten lesen und „Alle Mandanten“ oder die eigenen Einträge der Installation wählen; Mandanten-Administrationen sehen die Kette ihres Mandanten), Aktion oder Aktionskategorie, Akteur (E-Mail, Name oder Nutzer-ID), Ziel und einem Zeitraum, und öffnen Sie einen Eintrag für seine Details. Jeder Eintrag, der im Auftrag jemandes Nutzer- oder Sicherungsdaten liest (eine Administration, die das Postfach einer anderen Person in Wiederherstellen öffnet, ein mandantenweit erzeugter Bericht, eine Berechtigungsprüfung), erscheint ebenfalls hier, nicht nur die Aktionen, die etwas ändern.
Das Protokoll exportieren (seit 0.3.1)
Abschnitt betitelt „Das Protokoll exportieren (seit 0.3.1)“In der Ansicht lädt Exportieren neben den Filtern die Einträge herunter, die zu den aktuellen Filtern passen, in einem von zwei Formaten:
- Als CSV (Tabelle): eine Zeile je Eintrag mit Zeit, Mandant, Akteur, der Person, für die gehandelt wurde, Aktion, Ziel, IP-Adresse, Details, dem vorherigen Hash, dem Hash des Eintrags und der Angabe, ob der Hash gültig ist.
- Als JSON (mit Hashes zur Kettenprüfung): jedes gehashte Feld jedes Eintrags, älteste zuerst, sodass sich die Kette auch außerhalb von Restow prüfen lässt. Die Datei trägt außerdem die verwendeten Filter und die Formel des Hashes.
Ein Export enthält höchstens 50.000 Einträge. Passen mehr, werden die neuesten 50.000 exportiert und die JSON-Datei vermerkt truncated; grenzen Sie den Zeitraum ein, um den Rest zu erhalten. Der Export folgt dem Umfang der Ansicht: Provider-Administrationen exportieren jede Kette, die sie lesen dürfen, Mandanten-Administrationen die Kette ihres Mandanten. Dass das Protokoll mitgenommen wird, steht selbst im Protokoll (audit.exported, mit Format, Filtern und Anzahl der Einträge). Die Zustellprotokolle von Alarmen und Berichten lassen sich in jeder Edition als CSV exportieren, siehe Alarme und Berichte.