Audit-Siegel: Umstiegsweg dokumentiert + Rotations-Fussangel entschaerft
Frage aus dem Betrieb: bestehende Installation hat noch keinen AUDIT_HMAC_KEY - was passiert beim nachtraeglichen Setzen? Antwort jetzt in README und .env.example: setzen, neu starten, fertig. Bestehende Eintraege bleiben unveraendert gueltig, neue werden gesiegelt, alt und neu koexistieren ohne Fehlalarm. Nachgemessen auf gemischtem Bestand (4903 x V1, 57 x V2, 67 x V3): 0 Beanstandungen. Rueckwirkend siegeln ist nicht moeglich. Dabei zwei Fehler in der eigenen Doku gefunden und korrigiert: 1. Behauptet war, nach dem Leeren von AUDIT_HMAC_KEY_OLD seien alte Eintraege "nicht mehr pruefbar". Tatsaechlich werden sie als MANIPULIERT gemeldet - ein falscher Schluessel ist von einer Faelschung nicht zu unterscheiden. Gemessen: 67 Eintraege als manipuliert. Nur wenn GAR KEIN Schluessel gesetzt ist, gilt "nicht pruefbar". Doku entsprechend korrigiert, inkl. Warnung, das Feld nicht voreilig zu leeren. 2. AUDIT_HMAC_KEY_OLD bot nur einen Platz. Beim ZWEITEN Wechsel waeren alle mit dem ersten Schluessel gesiegelten Eintraege faelschlich als manipuliert erschienen (reproduziert: 67). Das Feld nimmt jetzt eine kommagetrennte Liste entgegen; verifiziert: mit beiden Alt-Schluesseln 0 Beanstandungen, mit nur dem juengsten 67. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+28
-10
@@ -46,20 +46,37 @@ NODE_ENV=development
|
||||
# Nichts faellt aus. Das Audit-Log laeuft normal weiter, nur eben ohne
|
||||
# dieses zusaetzliche Siegel.
|
||||
#
|
||||
# Ich habe bisher keinen Schluessel - kann ich ihn nachtraeglich setzen?
|
||||
# Ja. Schluessel erzeugen, eintragen, Backend neu starten - fertig.
|
||||
# Bestehende Eintraege bleiben unveraendert gueltig, ab dem Neustart
|
||||
# werden neue gesiegelt. Alt und neu liegen nebeneinander, es gibt
|
||||
# dadurch KEINE Fehlalarme. Rueckwirkend siegeln geht nicht - je frueher
|
||||
# gesetzt, desto groesser der geschuetzte Zeitraum.
|
||||
#
|
||||
# Was passiert, wenn ich ihn verliere?
|
||||
# Die damit gesiegelten Eintraege lassen sich nicht mehr pruefen. Sie
|
||||
# gelten dann als "nicht pruefbar" - NICHT als gefaelscht. Es gibt also
|
||||
# keinen Fehlalarm, aber der Nachweis fuer diesen Zeitraum ist weg.
|
||||
# Laesst du das Feld LEER, gelten die gesiegelten Eintraege als
|
||||
# "nicht pruefbar" - NICHT als gefaelscht, also kein Fehlalarm. Der
|
||||
# Nachweis fuer diesen Zeitraum ist aber weg.
|
||||
# Traegst du stattdessen einen NEUEN Schluessel ein, ohne den alten unten
|
||||
# zu hinterlegen, werden die alten Eintraege als "manipuliert" gemeldet -
|
||||
# ein falscher Schluessel ist von einer Faelschung nicht zu unterscheiden.
|
||||
# Deshalb: Schluessel sichern, so wie ein Passwort.
|
||||
AUDIT_HMAC_KEY=
|
||||
|
||||
# Nur voruebergehend beim Schluesselwechsel setzen.
|
||||
# Frueher verwendete Schluessel - beim Wechsel hier eintragen.
|
||||
# Moechtest du den Schluessel oben austauschen (z. B. weil du vermutest,
|
||||
# dass er in falsche Haende geraten ist), trage den ALTEN Schluessel hier
|
||||
# ein und den NEUEN oben. Dann bleiben die bisherigen Eintraege pruefbar,
|
||||
# waehrend neue schon mit dem neuen Schluessel gesiegelt werden.
|
||||
# Nach ein paar Wochen kann dieses Feld wieder geleert werden - danach
|
||||
# sind die alten Eintraege allerdings nicht mehr pruefbar.
|
||||
#
|
||||
# ACHTUNG: Dieses Feld NICHT voreilig leeren. Solange Eintraege existieren,
|
||||
# die mit einem alten Schluessel gesiegelt wurden, muessen sie hier stehen.
|
||||
# Sonst werden diese Eintraege als "manipuliert" gemeldet (nicht als
|
||||
# "nicht pruefbar"). Gefahrlos leeren kannst du erst, wenn die betroffenen
|
||||
# Eintraege durch die Aufbewahrungsfristen ohnehin geloescht sind.
|
||||
#
|
||||
# Mehrfach gewechselt? Mehrere Schluessel kommagetrennt, juengster zuerst:
|
||||
# AUDIT_HMAC_KEY_OLD=<vorheriger>,<davor>,<ganz alter>
|
||||
AUDIT_HMAC_KEY_OLD=
|
||||
|
||||
# --- Technisch (fuer Entwickler/Admins) ---------------------------------
|
||||
@@ -74,10 +91,11 @@ AUDIT_HMAC_KEY_OLD=
|
||||
# Fail-safe : Ohne Schluessel schreibt der Dienst weiter Version 2. Bereits
|
||||
# signierte Zeilen landen dann in `unverifiableEntries`,
|
||||
# ausdruecklich NICHT in `tamperedEntries`.
|
||||
# Rotation : AUDIT_HMAC_KEY_OLD wird bei der Pruefung zusaetzlich
|
||||
# akzeptiert - Wechsel ohne Rehash. Ein Rehash waere ohnehin zu
|
||||
# vermeiden, er wuerde die Beweiskraft der Vergangenheit
|
||||
# ueberschreiben.
|
||||
# Rotation : AUDIT_HMAC_KEY_OLD (kommagetrennte Liste) wird bei der
|
||||
# Pruefung zusaetzlich akzeptiert - Wechsel ohne Rehash. Ein
|
||||
# falscher/fehlender Alt-Schluessel liefert einen HMAC-Mismatch
|
||||
# und damit einen Manipulations-Befund; das ist nicht von einer
|
||||
# echten Faelschung unterscheidbar und daher Absicht.
|
||||
# Grenze : Schuetzt gegen DB-Schreibzugriff ohne Schluessel. Wer Schluessel
|
||||
# UND Datenbank hat, kann die Kette konsistent neu rechnen.
|
||||
# Erzeugung : openssl rand -hex 32 (256 Bit)
|
||||
|
||||
Reference in New Issue
Block a user