Dela via


Aktivera transparent datakryptering på SQL Server med HJÄLP av EKM

gäller för:SQL Server

Den här artikeln beskriver hur du aktiverar transparent datakryptering (TDE) i SQL Server för att skydda en databaskrypteringsnyckel med hjälp av en asymmetrisk nyckel som lagras i en EKM-modul (Extensible Key Management) med Transact-SQL.

TDE krypterar lagringen av en hel databas med hjälp av en symmetrisk nyckel som kallas databaskrypteringsnyckeln. Databaskrypteringsnyckeln kan också skyddas med hjälp av ett certifikat som skyddas av databasens huvudnyckel (DMK).master Mer information om hur du skyddar databaskrypteringsnyckeln med hjälp av DMK finns i Transparent datakryptering (TDE). Information om hur du konfigurerar TDE när SQL Server körs på en virtuell Azure-dator finns i Extensible Key Management Using Azure Key Vault (SQL Server). Information om hur du konfigurerar TDE med hjälp av en nyckel i Azure-nyckelvalvet finns i Använda SQL Server Connector med SQL-krypteringsfunktioner.

Begränsningar

Du måste vara en högprivilegierad användare (till exempel systemadministratör) för att skapa en databaskrypteringsnyckel och kryptera en databas. EKM-modulen måste kunna autentisera användaren.

Vid start måste databasmotorn öppna databasen. Du bör skapa en autentiseringsuppgift som ska autentiseras av EKM och lägga till den i en inloggning som baseras på en asymmetrisk nyckel. Användare kan inte logga in med den inloggningen, men databasmotorn kan autentisera sig själv med EKM-enheten.

Om den asymmetriska nyckeln som lagras i EKM-modulen går förlorad kan databasen inte öppnas av SQL Server. Om EKM-providern låter dig säkerhetskopiera den asymmetriska nyckeln bör du skapa en säkerhetskopia och lagra den på en säker plats.

Alternativen och parametrarna som krävs av EKM-providern kan skilja sig från vad som anges i följande kodexempel. För mer information, kontakta din EKM-leverantör.

Behörigheter

Den här artikeln använder följande behörigheter:

  • Om du vill ändra ett konfigurationsalternativ och köra -instruktionen RECONFIGURE måste du beviljas behörighet på ALTER SETTINGS servernivå. Behörighet ALTER SETTINGS hålls implicit av de fasta serverrollerna sysadmin och serveradmin.

  • Kräver ALTER ANY CREDENTIAL behörighet.

  • Kräver ALTER ANY LOGIN behörighet.

  • Kräver CREATE ASYMMETRIC KEY behörighet.

  • Kräver CONTROL behörighet för databasen för att kryptera databasen.

Använd Transact-SQL

  1. Kopiera filerna som tillhandahålls av EKM-providern till en lämplig plats på SQL Server-datorn. I det här exemplet använder C:\EKM_Files vi mappen.

  2. Installera certifikat på datorn enligt din EKM-leverantörs krav.

    Not

    SQL Server tillhandahåller ingen EKM-provider. Varje EKM-provider kan ha olika procedurer för att installera, konfigurera och auktorisera användare. För att slutföra det här steget läser du dokumentationen för EKM-providern.

  3. I Object Exploreransluter du till en instans av databasmotorn.

  4. I standardfältet väljer du Ny fråga.

  5. Kopiera och klistra in följande exempel i frågefönstret och välj Kör.

    -- 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