Delen via


Transparante gegevensversleuteling inschakelen op SQL Server met behulp van EKM

van toepassing op:SQL Server-

In dit artikel wordt beschreven hoe u TDE (Transparent Data Encryption) inschakelt in SQL Server om een databaseversleutelingssleutel te beveiligen met behulp van een asymmetrische sleutel die is opgeslagen in een EKM-module (Extensible Key Management) met Transact-SQL.

TDE versleutelt de opslag van een hele database met behulp van een symmetrische sleutel, de databaseversleutelingssleutel genoemd. De databaseversleutelingssleutel kan ook worden beveiligd met behulp van een certificaat dat wordt beveiligd door de databasehoofdsleutel (DMK) van de master database. Zie TDE (Transparent Data Encryption) voor meer informatie over het beveiligen van de databaseversleutelingssleutel met behulp van de DMK. Zie Extensible Key Management using Azure Key Vault (SQL Server) (Extensible Key Management using Azure Key Vault (SQL Server) voor informatie over het configureren van TDE wanneer SQL Server wordt uitgevoerd op een virtuele Azure-machine. Zie SQL Server Connector gebruiken met SQL-versleutelingsfunctiesvoor meer informatie over het configureren van TDE met behulp van een sleutel in de Azure-sleutelkluis.

Beperkingen

U moet een gebruiker met hoge bevoegdheden (zoals een systeembeheerder) zijn om een databaseversleutelingssleutel te maken en een database te versleutelen. De EKM-module moet die gebruiker kunnen verifiëren.

Bij het opstarten moet de database-engine de database openen. U moet een referentie maken die wordt geverifieerd door de EKM en deze toevoegen aan een aanmelding die is gebaseerd op een asymmetrische sleutel. Gebruikers kunnen zich niet aanmelden met die aanmelding, maar de Database Engine kan zichzelf verifiëren met het EKM-apparaat.

Als de asymmetrische sleutel die is opgeslagen in de EKM-module verloren gaat, kan de database niet worden geopend door SQL Server. Als u met de EKM-provider een back-up van de asymmetrische sleutel kunt maken, moet u een back-up maken en opslaan op een veilige locatie.

De opties en parameters die door uw EKM-provider zijn vereist, kunnen verschillen van wat in het volgende codevoorbeeld is opgegeven. Zie uw EKM-provider voor meer informatie.

Machtigingen

In dit artikel worden de volgende machtigingen gebruikt:

  • Als u een configuratieoptie wilt wijzigen en de RECONFIGURE instructie wilt uitvoeren, moet u de ALTER SETTINGS machtiging op serverniveau krijgen. De machtiging ALTER SETTINGS wordt impliciet gehouden door de vaste serverrollen sysadmin en serverbeheerder.

  • Hiervoor is toestemming vereist ALTER ANY CREDENTIAL .

  • Hiervoor is toestemming vereist ALTER ANY LOGIN .

  • Hiervoor is toestemming vereist CREATE ASYMMETRIC KEY .

  • Vereist CONTROL toestemming voor de database om de database te versleutelen.

Gebruik Transact-SQL

  1. Kopieer de bestanden die door de EKM-provider worden geleverd naar een geschikte locatie op de SQL Server-computer. In dit voorbeeld gebruiken we de C:\EKM_Files map.

  2. Installeer certificaten op de computer zoals vereist door uw EKM-provider.

    Notitie

    SQL Server levert geen EKM-provider. Elke EKM-provider kan verschillende procedures hebben voor het installeren, configureren en autoriseren van gebruikers. Raadpleeg de documentatie van uw EKM-provider om deze stap te voltooien.

  3. Maak in de Objectverkennerverbinding met een exemplaar van de Database Engine.

  4. Selecteer op de standaardbalk de optie Nieuwe query.

  5. Kopieer en plak het volgende voorbeeld in het queryvenster en selecteer uitvoeren.

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