Details und Diff laufen durch schwaerzen(), damit kein Private Key und kein Passwort ins unveraenderliche Protokoll geraet - was dort einmal steht, laesst sich per Trigger nicht mehr entfernen. Der Wortstamm privat ist dafuer zu breit: er schwaerzte auch Pfade und Verwendungszaehler, die das Protokoll gerade zeigen soll. Jetzt greifen nur Felder, die den Schluessel selbst tragen, und jeder PEM-Block. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1.3 KiB
1.3 KiB
#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
- Modell
Protokollmit Akteur, Aktion, Host, Zielbenutzer, Fingerprint, Diff, Ergebnis - DB-Trigger verbietet UPDATE/DELETE
- Hash-Kette (SHA-256 über Vorgänger + Inhalt), Prüffunktion
- Redaction: Private Keys/Passwörter können nicht hineingeraten
Akzeptanzkriterien
- Test: UPDATE/DELETE schlägt fehl
- 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,privatePfadusw. 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.