Zamenjava glavnega ključa
Glavni ključ šifrira nize povezave in podatke za izračun kod 2FA (dvostopenjsko preverjanje identitete) v skrbniški shrambi. Zamenjajte ga, ko odide oseba, ki ga je poznala, ali če obstaja možnost, da je prišel v napačne roke.
Omejitev: zamenjava ščiti le prihodnje kopije. S kopijo datoteke ali varnostne kopije, ki je skupaj s starim ključem že prišla v napačne roke, je še vedno mogoče odpreti nize povezave in podatke za izračun kod 2FA. V tem primeru dodatno spremenite gesla prijav v nizih povezave in osebam znova nastavite 2FA (
reset-totp).
Pregled rešitve
Zamenjava poteka brez izgube podatkov, z dvema kratkima ponovnima zagonoma prehoda: stari ključ
ostane nekaj časa vpisan kot „nadomeščen“, tako da je vse vrednosti še naprej mogoče odpreti, ukaz
reseal-store pa jih na novo šifrira z novim ključem. Vsak ponovni zagon prekine tekoče zahteve in
odprte transakcije, zato zamenjavo opravite takrat, ko je obremenitev majhna.
Izvedba
Koraki veljajo za namestitev z namestitvenim paketom: program pod
%ProgramFiles%\Wkl\Data Gateway, podatkovna mapa %ProgramData%\Wkl.Data.Gateway, dosedanji ključ
v geheim\hauptschluessel.key z identifikatorjem 1 (privzeta vrednost MasterKeyId). Izvedite jih v
PowerShellu kot skrbnik.
Novi ključ (32 naključnih bajtov) zapišite neposredno v datoteko v mapi
geheim. Tako se ne pojavi niti na zaslonu niti v zgodovini konzole; datoteka podeduje omejena dovoljenja mape (skrbniki, sistem, račun storitve samo za branje):$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)))
Zamenjavo vpišite v
appsettings.Local.jsonv programski mapi (datoteko ustvarite, če ne obstaja). Ne vappsettings.Production.json: ta datoteka pripada namestitvenemu programu in se pri „Ändern“ (spremeni) zapiše na novo; nadomeščeni ključ bi se tam izgubil. Ključi so navedeni kot sklic (file:alienv:), nikoli kot nešifrirano besedilo:{ "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" } ] } } }- Prehod znova zaženite (
Restart-Service Wkl.Data.Gateway). Vse vrednosti je še naprej mogoče odpreti; nove in spremenjene prehod šifrira z novim ključem. Če se ne zažene, je razlog naveden v dnevniku dogodkov (navadno tipkarska napaka v poti). V programski mapi izvedite:
Set-Location (Join-Path $env:ProgramFiles 'Wkl\Data Gateway') .\dbgwsvc.exe reseal-store
Izhodna koda
0pomeni, da so vse vrednosti na novo šifrirane. Ukaz lahko izvedete, medtem ko prehod teče; isto konfiguracijo kot prehod prebere iz delovne mape.- Odstranite vnos
RetiredKeysin prehod še enkrat znova zaženite. Datotekehauptschluessel.keyne brišite, dokler obstajajo varnostne kopije, ki so bile z njo zapisane (glejte napotke), temveč jo hranite skupaj s temi varnostnimi kopijami zunaj strežnika. - Ustvarite novo varnostno kopijo in novi ključ varnostno kopirajte zunaj strežnika, glejte Varnostno kopiranje, obnovitev in selitev skrbniške shrambe.
Rezultat: shramba je odvisna samo še od novega ključa. Opozorilo ob zagonu, ki šteje vrednosti, šifrirane z drugimi ključi, ne pojavi se več. Odjemalci pred ponovnim šifriranjem, med njim in po njem berejo iste podatke.
Napotki
- Starejše varnostne kopije je mogoče odpreti le s starim ključem. Hranite ga tako dolgo kot te varnostne kopije.
- Ključ ste odstranili prezgodaj? Če manjka ključ, ki ga še potrebuje kakšna vrednost, se prehod ne zažene in navede vsak prizadeti vir podatkov. Stari ključ znova vpišite pod
RetiredKeys. - Izgubljenega ključa ni mogoče nadomestiti. Vrednosti, ki jih je šifriral, je treba vnesti znova: nize povezave v Datenquellen (viri podatkov), 2FA pa s ponovno nastavitvijo.
- Vrstni red pri posodobitvi: najprej posodobite prehod, nato zamenjajte ključ – ne obojega v enem koraku.