MSSQL Backup Restore Service Master Key (SMK)

Aus Software Entwicklung Projekte
Wechseln zu: Navigation, Suche

Was ist der Service Master Key?

Der Service Master Key wird bei der Installation einer SQL Server Instanz mit angelegt. Daten wie z.B. die Passwörter von SQL Logins werden hiermit verschlüsselt.

Wo liegt das Problem?

Der Key wird nicht durch ein normales Backup aller Systemdatenbanken mitgesichert. Soll eine Kopie des ganzen Servers erzeugt werden, kann die neue SQL Server Instanz, auf die mit dem Key verschlüsselten Daten nicht mehr zugreifen. Eine entsprechende Meldung befindet sich im SQL Server Log kurz nach dem Starten der Instanz.

  • An error occurred during Service Master Key decryption

Backup / Restore

Am besten sollte von dem Service Master Key ein Backup nach der Installation erstellt werden, welches irgendwo gesichert werden sollte.

Backup

BACKUP SERVICE MASTER KEY TO FILE = 'path_to_file' 
    ENCRYPTION BY PASSWORD = 'password'

Das Passwort wird dazu genutzt, den abgelegten Schlüssel zu schützten. Nur mit diesem Passwort kann der Key irgendwann auch wieder für die Wiederherstellung gelesen werden.

Restore

RESTORE SERVICE MASTER KEY FROM FILE = 'path_to_file' 
    DECRYPTION BY PASSWORD = 'password' [FORCE]

Hier ist die Option FORCE interessant. Bei einer Installation einer SQL Server Instanz, die als komplette Kopie eines alten SQL Server dienen soll, wird automatisch ein neuer Key bei der Installation erzeugt. Damit aber nach einem Restore aller Datenbanken weiter auf die verschlüsselten Daten zugegriffen werden kann, sollte der alte Key wiederhergestellt werden. Da bereits ein Key existiert, bricht der Restore mit einer Fehlermeldung ab. Mit der Force Option wird der Austausch des Keys erzwungen.

Achtung, wurden bereits Konfigurationen gemacht, die den neuen Key verwendet haben, können diese nach dem Restore nicht mehr entschlüsselt werden. Es gibt immer nur genau einen Service Master Key.