Kann ich ein TDE-Zertifikat wiederherstellen, indem ich die MASTER-Datenbank wiederherstelle?

10

(Zum Glück befinden wir uns derzeit nicht in dieser Situation und planen nur im Voraus, um zu sehen, welche Optionen wir haben würden, falls dies jemals eintreten sollte.)

Bei einer mit TDE (Transparent Date Encryption) verschlüsselten Datenbank kann eine Kopie der Datenbanksicherung nur wiederhergestellt werden, wenn Sie über eine Sicherung des zum Verschlüsseln verwendeten Zertifikats verfügen.

Was ist, wenn Sie das nicht haben? Gibt es zusätzliche Optionen?

Würde die Wiederherstellung einer Sicherung der MASTER-Datenbank auf neuer Hardware im Falle eines vollständigen Serverausfalls auch das Zertifikat wiederherstellen?

BradC
quelle

Antworten:

9

Da TDE auf einem im Master gespeicherten Zertifikat basiert (das zum Verschlüsseln des Datenbankverschlüsselungsschlüssels verwendet wird), funktioniert dies nur, wenn Sie die Masterdatenbank auf einem anderen Server so wiederherstellen können, dass das Zertifikat entschlüsselt werden kann.

Dies ist die TDE-Verschlüsselungshierarchie:

  1. Diensthauptschlüssel (durch Windows geschützt; gebunden an die Anmeldeinformationen des Dienstkontos und einen Computerschlüssel)
  2. Datenbank-Hauptschlüssel (in diesem Fall der für die Hauptdatenbank)
  3. Zertifikat
  4. TDE-Verschlüsselungsschlüssel

Die ersten drei Elemente werden in der Master-Datenbank gespeichert und können alle gesichert werden. Der vierte wird im Header der verschlüsselten Datenbank gespeichert (verschlüsselt durch das Zertifikat von # 3).

In einem Fehlerszenario müssten Sie also genügend Verschlüsselungshierarchie wiederherstellen, um den TDE-Schlüssel lesen zu können. SQL Server erstellt den Diensthauptschlüssel bei der Installation. Während die Wiederherstellung der Master-Datenbank in einer anderen Instanz auch die Elemente 2 und 3 wiederherstellt, sind die zum Entschlüsseln erforderlichen Schlüssel nicht vorhanden. Ergebnis: unlesbare Daten.

Die beiden besten Optionen sind, entweder das Zertifikat (Nr. 3) aus einer Sicherung wiederherzustellen (eine gute Option, wenn der Master aus irgendeinem Grund nicht wiederhergestellt werden kann) oder Ihre Master-Datenbank und ihren Hauptschlüssel (Nr. 2) aus einer Sicherung wiederherzustellen. Das Wiederherstellen des Hauptschlüssels ist möglicherweise eine bessere Option, wenn Sie viele Zertifikate / Schlüssel haben, die durch diesen Schlüssel geschützt sind, und alle gleichzeitig zugänglich machen müssen. Dies beinhaltet die gleichen Vorsichtsmaßnahmen, die normalerweise mit dem Wiederherstellen der Master-Datenbank verbunden sind (Sortierungen, Anmeldungen, Datenbanknamen und Dateipfade usw.).

Im Allgemeinen würde ich nur empfehlen, den Master in einem Wiederherstellungsszenario wiederherzustellen. Für ein Migrations- / Scale-Out-Szenario (z. B. Verwendung von Verfügbarkeitsgruppen / Spiegelung mit einer TDE-verschlüsselten Datenbank) ist es besser, das Zertifikat (Nr. 3) so zu sichern / wiederherzustellen, dass es mit den Hauptschlüsseln verschlüsselt wird, die für jede zu verschiebende Instanz eindeutig sind zu. Sie müssen den privaten Schlüssel in die Zertifikatsicherung aufnehmen.

In jedem Fall müssen Sie Schlüssel- / Zertifikatsicherungen durchführen, also schützen Sie sie gut und speichern Sie sie an redundanten, sicheren Orten. Nur ein Backup des Masters bringt Sie nicht aus einer TDE-Katastrophe heraus. Sie benötigen eine Sicherung von mindestens einem Schlüssel oder Zertifikat.

db2
quelle
Hmm, wie kommt es also, dass wir das Zertifikat auf einem anderen Server wiederherstellen können, ohne auch das SMK (1) oder das Master-DB-DMK (2) wiederherzustellen? Wird es von diesem neuen Server aus an das SMK / DMK "angehängt"?
BradC
Ah, ich glaube, ich verstehe: Wenn Sie das Zertifikat exportieren, geben Sie explizit einen Schlüssel für den Export an, der die Abhängigkeit von SMK / DMK vom ursprünglichen Server ersetzt. Beim Importieren auf den neuen Server übertragen Sie dann die Abhängigkeit auf das SMK / DMK des neuen Servers. Klingt das richtig?
BradC
Ja, das ist so ziemlich genau das Richtige. Wenn Sie ein Zertifikat exportieren oder importieren, müssen Sie ein Kennwort angeben, mit dem die Sicherung verschlüsselt / entschlüsselt wird. Wenn Sie die Sicherung wiederherstellen, wird das Zertifikat importiert und mit dem DMK des Zielservers neu verschlüsselt.
DB2
5

1.Wenn Sie wie gewohnt eine verschlüsselte Sicherung auf einem anderen Server wiederherstellen möchten, tritt der folgende Fehler auf

 Cannot find server certificate with thumbprint …...

2.Finden Sie den Zertifikatsnamen: in diesem Beispiel vestacert

   SELECT  * FROM   sys.certificates

3.Sichern Sie das Zertifikat vom Quellserver (Source encryptedserver):

BACKUP CERTIFICATE vestacert
TO FILE = 'c:\Backup\certificate_TDE_Test_Certificate.cer'
WITH PRIVATE KEY
(FILE = 'c:\Backup\certificate_TDE_Test_Key.pvk',
ENCRYPTION BY PASSWORD = 'Password12#')

4.Erstellen Sie ein neues Master-Zertifikat auf dem UAT-Server, falls es noch nicht vorhanden ist

USE master GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'D1ffPa$$w0rd'

5.Sichern Sie die Sicherungszertifikate auf dem UAT-Server (UATserver).

CREATE CERTIFICATE vestacert2
FROM FILE = 'C:\tmp\certificate_TDE_Test_Certificate.cer'     
WITH PRIVATE KEY (FILE = 'C:\tmp\LCMS\certificate_TDE_Test_Key.pvk', 
DECRYPTION BY PASSWORD = 'Passsword12#')

6.Nach diesem Schritt hat das Wiederherstellen der Sicherung keinen Fehler und alle Daten waren lesbar.

7.Aber das Lustige ist, dass das einfache Entfernen der Verschlüsselung und das Erstellen einer neuen Sicherung und das Wiederherstellen auf dem endgültigen Server (Final Server) nicht funktioniert und den folgenden Fehler verursacht. Die Datei "mydb_log" konnte nicht korrekt initialisiert werden. Untersuchen Sie die Fehlerprotokolle auf weitere Details.

8.Die richtige Methode zum Entfernen der Verschlüsselung von UAT besteht darin, alle Zeichen wie unten Schritt für Schritt und von unten nach oben zu entfernen

    USE master
    ALTER DATABASE mydb SET ENCRYPTION OFF
    USE mydb
    DROP DATABASE ENCRYPTION KEY 
    USE master
    DROP CERTIFICATE vestacert2 
    DROP MASTER KEY

9. Erstellen Sie jetzt eine neue Sicherung vom UAT-Server und stellen Sie sie auf dem endgültigen Server wieder her

guter Artikel: http://sqlserverzest.com/2013/10/03/sql-server-restoring-a-tde-encrypted-database-to-a-different-server/

Iman Abidi
quelle
1
Die Wiederherstellung des Protokolls schlägt fehl, da die Protokolldatei noch verschlüsselten Inhalt enthält. Wechseln Sie nach dem Deaktivieren in den einfachen Modus, führen Sie ein Zurück aus, um das Protokoll abzuschneiden, und sichern Sie dann erneut.
IDisposable
0

Wenn Ihr System abstürzt und unbrauchbar wird, können Sie ein neues System erstellen und die Masterdatenbank über der vorhandenen wiederherstellen, um das TDE-Zertifikat wiederherzustellen, solange Sie dasselbe Dienstkonto auf dem neuen System verwenden. Anschließend sollten Sie das System neu starten, um die Verschlüsselung des Service-Hauptschlüssels durch den lokalen Computerschlüssel zu korrigieren. Danach sollten Sie in der Lage sein, das TDE-Zertifikat zu sichern oder die Benutzerdatenbank wiederherzustellen und auf die Daten zuzugreifen. Der Service-Hauptschlüssel wird auf zwei Arten durch die Datenschutz-API des Windows-Servers geschützt: erstens mit dem systemspezifischen lokalen Computerschlüssel und zweitens mit dem Dienstkonto des Datenbankmoduls. Da Sie aufgrund eines Systemabsturzes nicht mehr über den lokalen Computerschlüssel des ursprünglichen Systems verfügen, müssen Sie dasselbe Dienstkonto verwenden. Das TDE-Zertifikat wird mit der Datenbank gesichert, kann jedoch erst aufgerufen werden, wenn die Verschlüsselungshierarchie vollständig ist.

Michael Keleher
quelle