So wechseln Sie den Hauptschlüssel
Der Hauptschlüssel verschlüsselt die Verbindungszeichenfolgen und zweiten Faktoren im Verwaltungsspeicher. Wechseln Sie ihn, wenn eine Person ausscheidet, die ihn kannte, oder wenn er in falsche Hände geraten sein könnte.
Grenze: Der Wechsel schützt nur künftige Kopien. Eine Kopie der Datei oder Sicherung, die zusammen mit dem alten Schlüssel schon in falsche Hände geraten ist, öffnet weiter die Verbindungszeichenfolgen und die Geheimnisse der zweiten Faktoren. Ändern Sie in diesem Fall zusätzlich die Kennwörter der Anmeldungen in den Verbindungszeichenfolgen und richten Sie die zweiten Faktoren neu ein (
reset-totp).
Lösungsübersicht
Der Wechsel kommt ohne Datenverlust und mit zwei kurzen Neustarts des Dienstes aus: Der alte
Schlüssel bleibt eine Weile als „abgelöst“ bekannt, sodass sich alle Werte weiter öffnen, und der
Befehl reseal-store verschlüsselt sie mit dem neuen Schlüssel neu. Jeder Neustart unterbricht
laufende Anfragen und offene Transaktionen; legen Sie den Wechsel deshalb in eine ruhige Zeit.
Umsetzung
Die Schritte gehen von einer Installation mit dem Installationspaket aus: Programm unter
%ProgramFiles%\Wkl\Data Gateway, Datenordner %ProgramData%\Wkl.Data.Gateway, bisheriger Schlüssel
in geheim\hauptschluessel.key mit der Kennung 1 (Vorgabe von MasterKeyId). Führen Sie sie in
PowerShell als Administrator aus.
Den neuen Schlüssel (32 Zufallsbytes) direkt in eine Datei im Ordner
geheimschreiben. Er erscheint so weder auf dem Bildschirm noch im Verlauf der Konsole; die Datei erbt die eingeschränkten Berechtigungen des Ordners (Administratoren, System, Dienstkonto nur lesend):$secretFolder = Join-Path $env:ProgramData 'Wkl.Data.Gateway\geheim' [IO.File]::WriteAllText((Join-Path $secretFolder 'hauptschluessel-2.key'), [Convert]::ToBase64String([Security.Cryptography.RandomNumberGenerator]::GetBytes(32)))
Den Wechsel in
appsettings.Local.jsonim Programmordner eintragen (Datei anlegen, falls es sie nicht gibt). Nicht inappsettings.Production.json: Diese Datei gehört dem Installationsprogramm und wird beim „Ändern“ neu geschrieben; ein abgelöster Schlüssel ginge dort verloren. Die Schlüssel stehen als Verweis (file:oderenv:), nie im Klartext:{ "Gateway": { "Store": { "MasterKey": "file:C:\\ProgramData\\Wkl.Data.Gateway\\geheim\\hauptschluessel-2.key", "MasterKeyId": "2", "RetiredKeys": [ { "Id": "1", "Key": "file:C:\\ProgramData\\Wkl.Data.Gateway\\geheim\\hauptschluessel.key" } ] } } }- Dienst neu starten (
Restart-Service Wkl.Data.Gateway). Alle Werte öffnen sich weiter; neue und geänderte verschlüsselt der Dienst mit dem neuen Schlüssel. Startet er nicht, nennt das Ereignisprotokoll den Grund (meist ein Tippfehler im Pfad). Im Programmordner ausführen:
Set-Location (Join-Path $env:ProgramFiles 'Wkl\Data Gateway') .\dbgwsvc.exe reseal-store
Rückgabe
0: Alle Werte sind neu verschlüsselt. Der Befehl darf laufen, während der Dienst läuft. Er liest dieselbe Konfiguration wie der Dienst aus dem Arbeitsverzeichnis.- Den Eintrag
RetiredKeysentfernen und den Dienst erneut neu starten. Die Dateihauptschluessel.keynicht löschen, solange Sicherungen existieren, die mit ihr geschrieben wurden (siehe Hinweise), sondern zusammen mit diesen Sicherungen außerhalb des Servers aufbewahren. - Eine neue Sicherung anlegen und den neuen Schlüssel außerhalb des Servers sichern, siehe Sicherung.
Ergebnis: Der Speicher hängt nur noch vom neuen Schlüssel ab. Die Warnung beim Start, die Werte unter anderen Schlüsseln zählt, verschwindet. Clients lesen vor, während und nach dem Neuverschlüsseln dieselben Daten.
Hinweise
- Ältere Sicherungen öffnen sich nur mit dem alten Schlüssel. Bewahren Sie ihn so lange auf wie diese Sicherungen.
- Zu früh entfernt? Fehlt ein Schlüssel, den noch ein Wert braucht, startet der Dienst nicht und nennt jede betroffene Datenquelle. Den alten Schlüssel wieder unter
RetiredKeyseintragen. - Ein verlorener Schlüssel lässt sich nicht ersetzen. Die Werte, die er verschlüsselt hat, müssen neu eingegeben werden: Verbindungszeichenfolgen in Datenquellen, zweite Faktoren durch Neueinrichten.
- Reihenfolge bei einem Update: Erst den Dienst aktualisieren, danach den Schlüssel wechseln – nicht beides in einem Schritt.