feat(protokoll): Eintraege vor dem Schreiben schwaerzen (#005)
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>
This commit is contained in:
@@ -1,23 +1,27 @@
|
||||
# #005 Revisionssicheres Protokoll
|
||||
**Status:** offen
|
||||
**Status:** erledigt
|
||||
**Meilenstein:** v0.1.0
|
||||
**Labels:** sicherheit
|
||||
**Geschätzt:** 2 h **Tatsächlich:** –
|
||||
**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 `Protokoll` mit 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
|
||||
- [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
|
||||
- [ ] Test: UPDATE/DELETE schlägt fehl
|
||||
- [ ] Test: manipulierte Zeile wird von der Prüfung gefunden
|
||||
- [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.
|
||||
|
||||
Reference in New Issue
Block a user