# #005 Revisionssicheres Protokoll **Status:** erledigt **Meilenstein:** v0.1.0 **Labels:** sicherheit **Geschätzt:** 2 h **Tatsächlich:** 0 h 10 min ## Ziel Jede Aktion landet im Protokoll; Einträge sind unveränderlich und über eine Hash-Kette verbunden. ## Aufgaben - [x] Modell `Protokoll` mit Akteur, Aktion, Host, Zielbenutzer, Fingerprint, Diff, Ergebnis - [x] DB-Trigger verbietet UPDATE/DELETE - [x] Hash-Kette (SHA-256 über Vorgänger + Inhalt), Prüffunktion - [x] Redaction: Private Keys/Passwörter können nicht hineingeraten ## Akzeptanzkriterien - [x] Test: UPDATE/DELETE schlägt fehl - [x] Test: manipulierte Zeile wird von der Prüfung gefunden ## Abhängigkeiten #003 ## Notizen / Entscheidungen - Modell, Trigger und Hash-Kette entstanden schon mit #003 (Datenbankregeln); hier kommen Service, Schwärzen und Prüffunktion dazu. - **Diff und Details werden geschwärzt**, bevor sie in die Datenbank gehen (`schwaerzen()` aus #006). - **„privat“ ist kein Schwärz-Stamm mehr:** `privateVerwendungen`, `privatePfad` usw. sind Angaben, die das Protokoll gerade braucht. Geschwärzt werden nur Felder, die den Schlüssel selbst tragen (`privateKey*`, `privatVerschluesselt`, `dekVerschluesselt` …) – und jeder PEM-Block im Inhalt. - Ansicht, CSV-Export und Syslog folgen mit #027.