Freigeben über


Transparente Datenverschlüsselung auf SQL Server mithilfe von EKM aktivieren

Gilt für:SQL Server

Dieser Artikel beschreibt, wie Transparent Data Encryption (TDE) in SQL Server aktiviert wird, um einen Datenbankverschlüsselungsschlüssel mit einem asymmetrischen Schlüssel zu schützen, der in einem erweiterbaren Schlüsselverwaltungsmodul mit Transact-SQL gespeichert wird.

TDE verschlüsselt die Speicherung einer gesamten Datenbank, indem ein symmetrischer Schlüssel verwendet wird, der als Datenbankverschlüsselungsschlüssel bezeichnet wird. Der Datenbankverschlüsselungsschlüssel kann auch mithilfe eines Zertifikats geschützt werden, das durch den Datenbankmasterschlüssel (DMK) der master Datenbank geschützt ist. Weitere Informationen zum Schutz des Datenbankverschlüsselungsschlüssels mithilfe des DMK finden Sie unter Transparent data encryption (TDE).For more information about protection the database encryption key by using the DMK, see Transparent data encryption (TDE).For more information about protection the database encryption key by using the DMK, see Transparent data encryption (TDE). Informationen zum Konfigurieren von TDE, wenn SQL Server auf einem virtuellen Azure-Computer ausgeführt wird, finden Sie unter Extensible Key Management Using Azure Key Vault (SQL Server). Informationen zum Konfigurieren von TDE mithilfe eines Schlüssels im Azure-Schlüsseltresor finden Sie unter Verwenden von SQL Server-Connector mit SQL-Verschlüsselungsfunktionen.

Einschränkungen

Sie müssen ein Benutzer mit hohen Privilegien (z. B. ein Systemadministrator) sein, um einen Verschlüsselungsschlüssel für die Datenbank erstellen und eine Datenbank verschlüsseln zu können. Das EKM-Modul muss diesen Benutzer authentifizieren können.

Beim Start muss das Datenbankmodul die Datenbank öffnen. Sie sollten eine Anmeldeinformation erstellen, die vom EKM authentifiziert wird, und sie zu einer Anmeldung hinzufügen, die auf einem asymmetrischen Schlüssel basiert. Benutzer können sich nicht mit dieser Anmeldung anmelden, aber das Datenbankmodul kann sich mit dem EKM-Gerät authentifizieren.

Wenn der im EKM-Modul gespeicherte asymmetrische Schlüssel verloren geht, kann die Datenbank nicht von SQL Server geöffnet werden. Wenn der EKM-Anbieter eine Sicherung des asymmetrischen Schlüssels erlaubt, sollten Sie eine Sicherung erstellen und diese an einem sicheren Ort aufbewahren.

Die von Ihrem EKM-Anbieter erforderlichen Optionen und Parameter können sich von den Im folgenden Codebeispiel bereitgestellten Optionen unterscheiden. Weitere Informationen erhalten Sie vom Anbieter für erweiterbare Schlüsselverwaltung.

Berechtigungen

In diesem Artikel werden die folgenden Berechtigungen verwendet:

  • Um eine Konfigurationsoption zu ändern und die RECONFIGURE Anweisung auszuführen, müssen Sie die ALTER SETTINGS Berechtigung auf Serverebene erteilen. Die ALTER SETTINGS-Berechtigung ist implizit in den festen Serverrollen sysadmin und serveradmin enthalten.

  • Erfordert ALTER ANY CREDENTIAL die Berechtigung.

  • Erfordert ALTER ANY LOGIN die Berechtigung.

  • Erfordert CREATE ASYMMETRIC KEY die Berechtigung.

  • Erfordert CONTROL die Berechtigung für die Datenbank zum Verschlüsseln der Datenbank.

Verwenden von Transact-SQL

  1. Kopieren Sie die Dateien, die vom Anbieter für erweiterbare Schlüsselverwaltung bereitgestellt wurden, an einen geeigneten Speicherort auf dem Computer mit SQL Server. In diesem Beispiel verwenden wir den C:\EKM_Files Ordner.

  2. Installieren Sie Zertifikate auf dem Computer, die ggf. vom Anbieter für erweiterbare Schlüsselverwaltung benötigt werden.

    Hinweis

    SQL Server stellt keinen EKM-Anbieter zur Verfügung. Jeder Anbieter für erweiterbare Schlüsselverwaltung kann andere Prozeduren zum Installieren, Konfigurieren und Autorisieren von Benutzern verwenden. Um diesen Schritt abzuschließen, wenden Sie sich an ihre EKM-Anbieterdokumentation.

  3. Stellen Sie im Objekt-Explorer eine Verbindung mit einer Datenbank-Engine-Instanz her.

  4. Klicken Sie in der Standardleiste auf Neue Abfrage.

  5. Kopieren Sie das folgende Beispiel in das Abfragefenster, und klicken Sie dann auf Ausführen.

    -- Enable advanced options.
    EXECUTE sp_configure 'show advanced options', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXECUTE sp_configure 'EKM provider enabled', 1;
    GO
    
    RECONFIGURE;
    GO
    
    -- Create a cryptographic provider, which we have chosen to call "EKM_Prov," based on an EKM provider
    CREATE CRYPTOGRAPHIC PROVIDER EKM_Prov
        FROM FILE = 'C:\EKM_Files\KeyProvFile.dll';
    GO
    
    -- Create a credential that will be used by system administrators.
    CREATE CREDENTIAL sa_ekm_tde_cred
        WITH IDENTITY = 'Identity1',
        SECRET = '<password>' FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    GO
    
    -- Add the credential to a high privileged user such as your
    -- own domain login in the format [DOMAIN\login].
    ALTER LOGIN [Contoso\Mary] ADD CREDENTIAL sa_ekm_tde_cred;
    GO
    
    -- create an asymmetric key stored inside the EKM provider
    USE master;
    GO
    
    CREATE ASYMMETRIC KEY ekm_login_key
         FROM PROVIDER [EKM_Prov]
             WITH ALGORITHM = RSA_512,
             PROVIDER_KEY_NAME = 'SQL_Server_Key';
    GO
    
    -- Create a credential that will be used by the Database Engine.
    CREATE CREDENTIAL ekm_tde_cred
        WITH IDENTITY = 'Identity2', SECRET = '<secret>'
        FOR CRYPTOGRAPHIC PROVIDER EKM_Prov;
    
    -- Add a login used by TDE, and add the new credential to the login.
    CREATE LOGIN EKM_Login
        FROM ASYMMETRIC KEY ekm_login_key;
    GO
    
    ALTER LOGIN EKM_Login
        ADD CREDENTIAL ekm_tde_cred;
    GO
    
    -- Create the database encryption key that will be used for TDE.
    USE AdventureWorks2022;
    GO
    
    CREATE DATABASE ENCRYPTION KEY
        WITH ALGORITHM = AES_128
        ENCRYPTION BY SERVER ASYMMETRIC KEY ekm_login_key;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE AdventureWorks2022
        SET ENCRYPTION ON;
    GO