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:
@@ -341,12 +341,37 @@ Den Wert in die `.env` der jeweiligen Umgebung eintragen. Wichtig: **pro
|
||||
Umgebung ein eigener Schlüssel** (Entwicklung, Test, Produktion) – und
|
||||
niemals ins Git-Repository.
|
||||
|
||||
**Bestehende Installation: bisher kein Schlüssel gesetzt?**
|
||||
|
||||
Genau so ist es gedacht – der Schlüssel kam mit einem Update dazu. Du kannst
|
||||
ihn jederzeit nachträglich setzen:
|
||||
|
||||
1. Schlüssel erzeugen (`openssl rand -hex 32`), in die `.env` eintragen
|
||||
2. Backend neu starten
|
||||
3. Fertig – mehr ist nicht nötig
|
||||
|
||||
Was dabei mit deinen **bereits vorhandenen** Einträgen passiert:
|
||||
|
||||
- Sie bleiben **unverändert** und weiterhin gültig. Es wird nichts neu
|
||||
berechnet und nichts nachträglich gesiegelt.
|
||||
- Ab dem Neustart werden **neue** Einträge gesiegelt. Alt und neu liegen
|
||||
friedlich nebeneinander, die Prüfung erkennt für jeden Eintrag automatisch,
|
||||
nach welchem Verfahren er zu prüfen ist.
|
||||
- Es gibt **keine** Fehlalarme dadurch. (Nachgemessen auf einer Installation
|
||||
mit 4903 alten, 57 mittleren und 67 gesiegelten Einträgen: 0 Beanstandungen.)
|
||||
|
||||
Rückwirkend lässt sich der Schutz nicht herstellen – ältere Einträge bleiben
|
||||
ungesiegelt. Das ist kein Fehler, sondern liegt in der Natur der Sache: Ein
|
||||
Siegel kann man nur beim Anlegen vergeben, nicht nachträglich. Je früher du
|
||||
den Schlüssel setzt, desto größer der geschützte Zeitraum.
|
||||
|
||||
**Häufige Fragen**
|
||||
|
||||
| Frage | Antwort |
|
||||
|---|---|
|
||||
| Was, wenn ich den Schlüssel gar nicht setze? | Nichts fällt aus. Das Audit-Log läuft normal weiter, nur ohne dieses zusätzliche Siegel. |
|
||||
| Was, wenn ich ihn verliere? | Die damit gesiegelten Einträge lassen sich nicht mehr prüfen. Sie gelten dann als **„nicht prüfbar"** – ausdrücklich nicht als gefälscht. Kein Fehlalarm, aber der Nachweis für diesen Zeitraum ist weg. Deshalb: sichern wie ein Passwort. |
|
||||
| Was, wenn ich ihn verliere? | Lässt du das Feld dann **leer**, gelten die gesiegelten Einträge als **„nicht prüfbar"** – ausdrücklich nicht als gefälscht, also kein Fehlalarm. Der Nachweis für diesen Zeitraum ist aber weg. Deshalb: sichern wie ein Passwort. |
|
||||
| Und wenn ich stattdessen einen **neuen** Schlüssel eintrage? | Dann werden die alten Einträge als **„manipuliert" gemeldet** – das System kann einen falschen Schlüssel nicht von einer echten Fälschung unterscheiden. Trage den alten Schlüssel deshalb zusätzlich unter `AUDIT_HMAC_KEY_OLD` ein (siehe unten). |
|
||||
| Muss ich ihn irgendwo eintragen außer in der `.env`? | Nein. Einmal setzen, Backup anlegen, fertig. |
|
||||
| Verlangsamt das etwas? | Nein, spürbar nicht. |
|
||||
|
||||
@@ -361,9 +386,27 @@ AUDIT_HMAC_KEY_OLD=<bisheriger Schlüssel>
|
||||
```
|
||||
|
||||
Neue Einträge werden ab sofort mit dem neuen Schlüssel gesiegelt, die
|
||||
bisherigen bleiben über den alten Schlüssel weiterhin prüfbar. Nach einer
|
||||
Übergangszeit kann `AUDIT_HMAC_KEY_OLD` geleert werden – danach sind die alten
|
||||
Einträge allerdings nicht mehr prüfbar.
|
||||
bisherigen bleiben über den alten Schlüssel weiterhin prüfbar.
|
||||
|
||||
> ⚠️ **`AUDIT_HMAC_KEY_OLD` nicht voreilig leeren.** Solange Einträge
|
||||
> existieren, die mit einem alten Schlüssel gesiegelt wurden, muss dieser dort
|
||||
> stehen bleiben. Entfernst du ihn, werden diese Einträge als **„manipuliert"
|
||||
> gemeldet** – nicht als „nicht prüfbar". Das System kann einen falschen
|
||||
> Schlüssel nicht von einer echten Fälschung unterscheiden. Leeren kannst du
|
||||
> das Feld gefahrlos erst, wenn die betroffenen Einträge durch die
|
||||
> Aufbewahrungsfristen ohnehin gelöscht sind.
|
||||
|
||||
**Mehrfach gewechselt?** Das Feld nimmt mehrere Schlüssel kommagetrennt auf –
|
||||
vom jüngsten zum ältesten:
|
||||
|
||||
```env
|
||||
AUDIT_HMAC_KEY=<aktueller Schlüssel>
|
||||
AUDIT_HMAC_KEY_OLD=<vorheriger>,<davor>,<ganz alter>
|
||||
```
|
||||
|
||||
Ohne das würde beim zweiten Wechsel der zuerst genutzte Schlüssel verloren
|
||||
gehen – und alle damit gesiegelten Einträge fälschlich als manipuliert
|
||||
erscheinen.
|
||||
|
||||
**Prüfen, ob alles in Ordnung ist**
|
||||
|
||||
|
||||
Reference in New Issue
Block a user