Verschieben einer TDE-geschützten Datenbank auf einen anderen SQL-Server

In diesem Thema werden die Schritte zum Schutz einer SQL Server-Datenbank anhand transparenter Datenverschlüsselung (TDE) und das Verschieben der Datenbank in eine andere Instanz von SQL Server erläutert.

In diesem Thema

  • Vorbereitungen:

    Hintergrund

    Sicherheit

  • Beispiel:

    So erstellen Sie eine durch transparente Datenverschlüsselung geschützte Datenbank

    So verschieben Sie eine TDE-geschützte Datenbank in eine neue Instanz von SQL Server

  • Nachverfolgung: Nach dem Verschieben einer TDE-geschützten Datenbank in eine neue Instanz von SQL Server zu unternehmende Schritte

Hintergrund

Die TDE führt die E/A-Verschlüsselung und -Entschlüsselung der Daten und der Protokolldateien in Echtzeit durch. Die Verschlüsselung verwendet einen Verschlüsselungsschlüssel für die Datenbank (Database Encryption Key, DEK), der in der Datenbankstartseite gespeichert wird, damit er während der Wiederherstellung verfügbar ist. Der DEK ist ein symmetrischer Schlüssel, der durch ein in der master-Datenbank des Servers gespeichertes Zertifikat gesichert wird, oder ein asymmetrischer Schlüssel, der von einem EKM-Modul geschützt wird. Beim Verschieben einer TDE-geschützten Datenbank muss auch das Zertifikat oder der asymmetrische Schlüssel verschoben werden, mit dem der DEK geöffnet wird. Das Zertifikat oder der asymmetrische Schlüssel muss in der Masterdatenbank des Zielservers installiert sein, damit von SQL Server auf die Datenbankdateien zugegriffen werden kann. Weitere Informationen finden Sie unter Grundlegendes zur transparenten Datenverschlüsselung (TDE).

Sicherheit

Berechtigungen

Erfordert CONTROL DATABASE-Berechtigung für die Masterdatenbank, um den Datenbankhauptschlüssel zu erstellen.

Erfordert CREATE CERTIFICATE-Berechtigung für die Masterdatenbank, um das Zertifikat zu erstellen, von dem der DEK geschützt wird.

Erfordert die CONTROL DATABASE-Berechtigung für die verschlüsselte Datenbank und die VIEW DEFINITION-Berechtigung für das Zertifikat oder den asymmetrischen Schlüssel, die zum Verschlüsseln des Verschlüsselungsschlüssels für die Datenbank verwendet werden.

[Nach oben]

Erstellen einer TDE-geschützten Datenbank

So erstellen Sie eine durch transparente Datenverschlüsselung geschützte Datenbank anhand eines durch ein Zertifikat in der Masterdatenbank geschützten Verschlüsselungsschlüssels für eine Datenbank

So erstellen Sie eine durch transparente Datenverschlüsselung geschützte Datenbank

  1. Geben Sie im Abfrage-Editor die folgenden Transact-SQL-Befehle ein, um einen Datenbankhauptschlüssel und ein Zertifikat in der Masterdatenbank zu erstellen.

    SicherheitshinweisSicherheitshinweis

    Ersetzen Sie die Sternchen durch ein Kennwort. Verwenden Sie kein leeres Kennwort. Verwenden Sie ein sicheres Kennwort.

    USE master ;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    CREATE CERTIFICATE TestSQLServerCert 
    WITH SUBJECT = 'Certificate to protect TDE key'
    GO
    
  2. Erstellen Sie eine Sicherung des Serverzertifikats in der Masterdatenbank. Ohne das Zertifikat zum Schutz des Verschlüsselungsschlüssels für die Datenbank kann nicht auf die Daten in einer TDE-geschützten Datenbank zugegriffen werden. Im folgenden Beispiel werden die Sicherung des Zertifikats und die Datei mit dem privaten Schlüssel am Standardort für Daten dieser Instanz von SQL Server gespeichert (C:\Programme\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA).

    SicherheitshinweisSicherheitshinweis

    Bewahren Sie Kopien der Zertifikatdatei und der Datei mit dem privaten Schlüssel auf, um das Zertifikat wiederherzustellen. Das Kennwort für den privaten Schlüssel muss nicht mit dem Kennwort für den Datenbankhauptschlüssel übereinstimmen.

    BACKUP CERTIFICATE TestSQLServerCert 
    TO FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        ENCRYPTION BY PASSWORD = '**************'
    );
    GO
    
  3. Erstellen Sie eine Datenbank für den TDE-Schutz.

    CREATE DATABASE CustRecords ;
    GO
    
  4. Wechseln Sie zur neuen Datenbank. Erstellen Sie einen Verschlüsselungsschlüssel für die Datenbank, der vom Serverzertifikat in der Masterdatenbank geschützt wird. Ändern Sie anschließend die neue Datenbank, um die Datenbank anhand von TDE zu verschlüsseln.

    USE CustRecords;
    GO
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_128
    ENCRYPTION BY SERVER CERTIFICATE TestSQLServerCert;
    GO
    ALTER DATABASE CustRecords
    SET ENCRYPTION ON;
    GO
    
    HinweisHinweis

    So führen Sie diesen Schritt anhand von SQL Server Management Studio aus: Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, zeigen Sie auf die Option für Tasks, und klicken Sie auf Datenbankverschlüsselung verwalten. Verwenden Sie das Dialogfeld Datenbankverschlüsselung verwalten, um einen Verschlüsselungsschlüssel für die Datenbank auszuwählen und die Datenbankverschlüsselung zu aktivieren.

  5. Erstellen Sie eine einfache Tabelle. Geben Sie Daten in die Tabelle ein, und wählen Sie entsprechende Daten in der Tabelle aus, um die Datenbank zu testen.

    CREATE TABLE CustomerRecord
        (CustomerID int PRIMARY KEY,
        SecretData nvarchar(100) NOT NULL) ;
    GO
    INSERT CustomerRecord (CustomerID,SecretData)
    VALUES (23997, 'Plain text data') ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

[Nach oben]

Verschieben einer TDE-geschützten Datenbank

So verschieben Sie eine TDE-geschützte Datenbank in eine neue Instanz von SQL Server

  1. Trennen Sie die TDE-geschützte Datenbank vom Quellserver.

    USE master ;
    GO
    EXEC master.dbo.sp_detach_db @dbname = N'CustRecords';
    GO
    
    HinweisHinweis

    So führen Sie diesen Schritt anhand von Management Studio aus: Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbank, zeigen Sie auf die Option für Tasks, und klicken Sie auf Trennen. Klicken Sie auf OK.

  2. Verwenden Sie Windows Explorer, um Datenbankdateien vom Quellserver an den gleichen Ort auf dem Zielserver zu verschieben oder zu kopieren.

    HinweisHinweis

    Normalerweise befinden sich die beiden Datenbankdateien (CustomerRecords.mdf und CustomerRecords_log.LDF) am Standardort C:\Programme\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA. Die Dateinamen und -orte können individuell abweichen.

  3. Verwenden Sie Windows Explorer, um die Sicherung des Serverzertifikats und die Datei mit dem privaten Schlüssel vom Quellserver an den gleichen Ort auf dem Zielserver zu verschieben oder zu kopieren. In diesem Beispiel befinden sich die Dateien im standardmäßigen Datenordner unter C:\Programme\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA.

  4. Erstellen Sie für die Zielinstanz von SQL Server einen Datenbank-Hauptschlüssel. Das Kennwort muss nicht mit dem Kennwort für den Quellserver übereinstimmen.

    USE master;
    GO
    CREATE MASTER KEY ENCRYPTION BY PASSWORD = '**************';
    GO
    
  5. Erstellen Sie anhand der entsprechenden Sicherungsdatei das Serverzertifikat neu. Das Kennwort muss mit dem bei der Erstellung der Sicherung verwendeten Kennwort übereinstimmen.

    CREATE CERTIFICATE TestSQLServerCert 
    FROM FILE = 'TestSQLServerCert'
    WITH PRIVATE KEY 
    (
        FILE = 'SQLPrivateKeyFile',
        DECRYPTION BY PASSWORD = '**************'
    );
    GO
    
  6. Fügen Sie die verschobene Datenbank an. Der Pfad der Datenbankdateien muss auf den Ort verweisen, an dem die Datenbankdateien gespeichert wurden.

    CREATE DATABASE [CustRecords] ON 
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords.mdf' ),
    ( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\CustRecords_log.LDF' )
    FOR ATTACH ;
    GO
    
    HinweisHinweis

    So führen Sie diesen Schritt anhand von Management Studio aus: Klicken Sie im Objekt-Explorer mit der rechten Maustaste auf die Datenbanken, und klicken Sie auf Anfügen. Klicken Sie auf Hinzufügen, navigieren Sie zur Datei CustRecords.mdf, und klicken Sie auf OK.

  7. Wählen Sie Tabellendaten aus, um den Zugriff auf die Datenbank zu testen.

    USE CustRecords ;
    GO
    SELECT CustomerID, SecretData FROM CustomerRecord ;
    GO
    

    [Nach oben]

Nachverfolgung: Nach dem Verschieben einer TDE-geschützten Datenbank in eine neue Instanz von SQL Server zu unternehmende Schritte

Sichern der Masterdatenbank

  • Durch das Installieren des Zertifikats und Anfügen der Datenbank wurden die Informationen in der Masterdatenbank geändert. Es empfiehlt sich, eine neue Sicherung der Masterdatenbank zu erstellen.

[Nach oben]