Delen via


SQL Server-connector gebruiken met SQL-versleutelingsfuncties

van toepassing op:SQL Server-

Veelvoorkomende SQL Server-versleutelingsactiviteiten met behulp van een asymmetrische sleutel die wordt beveiligd door Azure Key Vault, bevatten de volgende drie gebieden.

  • Transparent Data Encryption met behulp van een asymmetrische sleutel uit Azure Key Vault

  • Back-ups versleutelen met behulp van een asymmetrische sleutel uit de Sleutelkluis

  • Versleuteling op kolomniveau met behulp van een asymmetrische sleutel uit de sleutelkluis

Voltooi deel I tot en met IV van het onderwerp Installatiestappen voor uitbreidbaar sleutelbeheer met behulp van de Azure Key Vault-, voordat u de stappen in dit onderwerp volgt.

Notitie

Versies 1.0.0.440 en ouder zijn vervangen en worden niet meer ondersteund in productieomgevingen. Voer een upgrade uit naar versie 1.0.1.0 of hoger door naar het Microsoft Downloadcentrum te gaan en de instructies te volgen op de Onderhoud van de SQL Server-connector & pagina Probleemoplossing onder "Upgrade van de SQL Server-connector".

Notitie

Microsoft Entra ID voorheen Azure Active Directory (Azure AD) werd genoemd.

Transparent Data Encryption met behulp van een asymmetrische sleutel uit Azure Key Vault

Nadat u deel I tot en met IV van het onderwerp Setup Steps for Extensible Key Management hebt voltooid met behulp van Azure Key Vault, gebruikt u de Azure Key Vault-sleutel om de databaseversleutelingssleutel te versleutelen met behulp van TDE. Zie voor meer informatie over het roteren van sleutels met behulp van PowerShell, De TDE-beschermer (Transparent Data Encryption) roteren met PowerShell.

Belangrijk

Verwijder eerdere versies van de sleutel niet na een rollover. Wanneer sleutels worden overgerold, worden sommige gegevens nog steeds versleuteld met de vorige sleutels, zoals oudere databaseback-ups, back-ups van logboekbestanden en transactielogboekbestanden.

U moet een referentie en aanmelding maken en een databaseversleutelingssleutel maken waarmee de gegevens en logboeken in de database worden versleuteld. Voor het versleutelen van een database is control- machtiging voor de database vereist. In de volgende afbeelding ziet u de hiërarchie van de versleutelingssleutel wanneer u De Azure Key Vault gebruikt.

diagram met de hiërarchie van de versleutelingssleutel bij gebruik van Azure Key Vault.

  1. Een SQL Server-referentie maken voor de database-engine die moet worden gebruikt voor TDE-

    De database-engine gebruikt de referenties van de Microsoft Entra-toepassing voor toegang tot de Key Vault tijdens het laden van de database. We raden aan om een andere Client-ID en Client Secrette maken, zoals beschreven in Stap 1, om de verleende Key Vault-machtigingen te beperken.

    Wijzig het Transact-SQL script hieronder op de volgende manieren:

    • Bewerk het argument IDENTITY (ContosoDevKeyVault) om naar uw Azure Key Vault te verwijzen.

      • Als u globale Azure-gebruikt, vervangt u het argument IDENTITY door de naam van uw Azure Key Vault uit deel II.
      • Als u een privécloud van Azure gebruikt (bijvoorbeeld Azure Government, Azure beheerd door 21Vianet of Azure Duitsland), vervangt u het IDENTITY argument door de kluis-URI die wordt geretourneerd in deel II, stap 3. Neem 'https://' niet op in de Vault-URI.
    • Vervang het eerste deel van het argument SECRET door de client-id van de Microsoft Entra-toepassing van stap 1 (). In dit voorbeeld is de client-IDEF5C8E094D2A4A769998D93440D8115D.

      Belangrijk

      U moet de afbreekstreepjes uit de client-idverwijderen.

    • Voltooi het tweede deel van het argument SECRET met clientgeheim van deel I. In dit voorbeeld wordt het clientgeheim van deel 1 ReplaceWithAADClientSecret.

    • De laatste tekenreeks voor het argument SECRET is een lange reeks letters en cijfers, zonder afbreekstreepjes.

    USE master;  
    CREATE CREDENTIAL Azure_EKM_TDE_cred   
        WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
        -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
        SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret'   
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;  
    
  2. Een SQL Server-aanmelding maken voor de Database Engine voor TDE-

    Maak een SQL Server-aanmelding en voeg de referentie uit stap 1 eraan toe. In dit Transact-SQL voorbeeld wordt dezelfde sleutel gebruikt die eerder is geïmporteerd.

    USE master;  
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it loads a database   
    -- encrypted by TDE.  
    CREATE LOGIN TDE_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY;  
    GO   
    
    -- Alter the TDE Login to add the credential for use by the   
    -- Database Engine to access the key vault  
    ALTER LOGIN TDE_Login   
    ADD CREDENTIAL Azure_EKM_TDE_cred ;  
    GO  
    
  3. Maak de DEK (Database Encryption Key) aan

    De DEK versleutelt uw gegevens en logboekbestanden in het database-exemplaar en wordt op zijn beurt versleuteld door de asymmetrische sleutel van Azure Key Vault. De DEK kan worden gemaakt met behulp van een door SQL Server ondersteund algoritme of sleutellengte.

    USE ContosoDatabase;  
    GO  
    
    CREATE DATABASE ENCRYPTION KEY   
    WITH ALGORITHM = AES_256   
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;  
    GO  
    
  4. TDE- inschakelen

    -- Alter the database to enable transparent data encryption.  
    ALTER DATABASE ContosoDatabase   
    SET ENCRYPTION ON;  
    GO  
    

    Controleer met Behulp van Management Studio of TDE is ingeschakeld door verbinding te maken met uw database met Objectverkenner. Klik met de rechtermuisknop op uw database, wijs Takenaan en klik vervolgens op Databaseversleuteling beheren.

    schermopname van Objectverkenner met Taken > Databaseversleuteling beheren geselecteerd. ekm-tde-object-explorer

    Controleer in het dialoogvenster Databaseversleuteling beheren of TDE is ingeschakeld en welke asymmetrische sleutel de DEK versleutelt.

    nl-NL: Schermopname van het dialoogvenster Databaseversleuteling beheren met de optie Databaseversleuteling inschakelen geselecteerd en een gele banner met de melding: Nu is TDE ingeschakeld.

    U kunt ook het volgende Transact-SQL script uitvoeren. Een versleutelingsstatus van 3 geeft een versleutelde database aan.

    USE MASTER  
    SELECT * FROM sys.asymmetric_keys  
    
    -- Check which databases are encrypted using TDE  
    SELECT d.name, dek.encryption_state   
    FROM sys.dm_database_encryption_keys AS dek  
    JOIN sys.databases AS d  
         ON dek.database_id = d.database_id;  
    

    Notitie

    De tempdb-database wordt automatisch versleuteld wanneer een database TDE inschakelt.

Back-ups versleutelen met behulp van een asymmetrische sleutel uit de Sleutelkluis

Versleutelde back-ups worden ondersteund vanaf SQL Server 2014 (12.x). In het volgende voorbeeld wordt een back-up gemaakt en hersteld die is versleuteld met een gegevensversleutelingssleutel die wordt beveiligd door de asymmetrische sleutel in de sleutelkluis.
De database-engine gebruikt de referenties van de Microsoft Entra-toepassing voor toegang tot de Key Vault tijdens het laden van de database. We raden aan om een andere client-id en client-secrette maken, zoals beschreven in stap 1, om de verleende Key Vault-machtigingen te beperken.

  1. een SQL Server-referentie maken voor de database-engine die moet worden gebruikt voor back-upversleuteling

    Wijzig het Transact-SQL script hieronder op de volgende manieren:

    • Bewerk het argument IDENTITY (ContosoDevKeyVault) om naar uw Azure Key Vault te verwijzen.

      • Als u globale Azure-gebruikt, vervangt u het argument IDENTITY door de naam van uw Azure Key Vault uit deel II.
      • Als u een privécloud van Azure gebruikt (bijvoorbeeld Azure Government, Microsoft Azure beheerd door 21Vianet of Azure Duitsland), vervangt u het IDENTITY argument door de kluis-URI die wordt geretourneerd in deel II, stap 3. Neem 'https://' niet op in de kluis-URI.
    • Vervang het eerste deel van het argument SECRET met het Client-ID van de Microsoft Entra-toepassing uit stap 1 . In dit voorbeeld is de client-idEF5C8E094D2A4A769998D93440D8115D.

      Belangrijk

      U moet de afbreekstreepjes uit de client-idverwijderen.

    • Voltooi het tweede deel van het argument SECRET met clientgeheim van deel I. In dit voorbeeld wordt het clientgeheim van deel I Replace-With-AAD-Client-Secret. De laatste tekenreeks voor het argument SECRET is een lange reeks letters en cijfers, met geen afbreekstreepjes.

      USE master;  
      
      CREATE CREDENTIAL Azure_EKM_Backup_cred   
          WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet
          -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany   
          SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret'   
      FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;    
      
  2. Een SQL Server-aanmelding maken voor de database-engine voor back-upversleuteling

    Maak een SQL Server-aanmelding die moet worden gebruikt door de Database Enginee voor versleutelingsback-ups en voeg de referentie van stap 1 eraan toe. In dit Transact-SQL voorbeeld wordt dezelfde sleutel gebruikt die eerder is geïmporteerd.

    Belangrijk

    U kunt dezelfde asymmetrische sleutel niet gebruiken voor back-upversleuteling als u die sleutel al hebt gebruikt voor TDE (het bovenstaande voorbeeld) of versleuteling op kolomniveau (het volgende voorbeeld).

    In dit voorbeeld wordt de asymmetrische sleutel CONTOSO_KEY_BACKUP gebruikt, die is opgeslagen in de sleutelkluis. Deze sleutel kan eerder zijn geïmporteerd of gemaakt voor de hoofddatabase, zoals beschreven in deel IV, stap 5.

    USE master;  
    
    -- Create a SQL Server login associated with the asymmetric key   
    -- for the Database engine to use when it is encrypting the backup.  
    CREATE LOGIN Backup_Login   
    FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP;  
    GO   
    
    -- Alter the Encrypted Backup Login to add the credential for use by   
    -- the Database Engine to access the key vault  
    ALTER LOGIN Backup_Login   
    ADD CREDENTIAL Azure_EKM_Backup_cred ;  
    GO  
    
  3. een back-up maken van de database

    Maak een back-up van de database en specificeer versleuteling met de asymmetrische sleutel die is opgeslagen in de sleutelkluis.

    In het onderstaande voorbeeld ziet u dat als de database al is versleuteld met TDE en de asymmetrische sleutel CONTOSO_KEY_BACKUP verschilt van de Asymmetrische TDE-sleutel, de back-up wordt versleuteld door zowel de ASYMmetrische TDE-sleutel als CONTOSO_KEY_BACKUP. Het SQL Server-doelexemplaar heeft beide sleutels nodig om de back-up te decoderen.

    USE master;  
    
    BACKUP DATABASE [DATABASE_TO_BACKUP]  
    TO DISK = N'[PATH TO BACKUP FILE]'   
    WITH FORMAT, INIT, SKIP, NOREWIND, NOUNLOAD,   
    ENCRYPTION(ALGORITHM = AES_256,   
    SERVER ASYMMETRIC KEY = [CONTOSO_KEY_BACKUP]);  
    GO  
    
  4. de database herstellen

    Als u een databaseback-up wilt herstellen die is versleuteld met TDE, moet het doelexemplaar van SQL Server eerst een kopie hebben van de asymmetrische Key Vault-sleutel die wordt gebruikt voor versleuteling. Dit is hoe dit zou worden bereikt:

    • Als de oorspronkelijke asymmetrische sleutel die wordt gebruikt voor TDE zich niet meer in Key Vault bevindt, herstelt u de key Vault-sleutelback-up ofimporteert u de sleutel opnieuw vanuit een lokale HSM. Belangrijk: Om ervoor te zorgen dat de vingerafdruk van de sleutel overeenkomt met de vingerafdruk die is vastgelegd in de back-up van de database, moet de sleutel de dezelfde Key Vault-sleutelnaam hebben als die oorspronkelijk had.

    • Pas stap 1 en 2 toe op het SQL Server-doelexemplaren.

    • Zodra het doel-SQL Server-exemplaar toegang heeft tot de asymmetrische sleutel(s) die worden gebruikt om de back-up te versleutelen, herstelt u de database op de server.

    Voorbeeld van herstelcode:

    RESTORE DATABASE [DATABASE_TO_BACKUP]  
    FROM DISK = N'[PATH TO BACKUP FILE]'   
        WITH FILE = 1, NOUNLOAD, REPLACE;  
    GO  
    

    Zie BACKUP (Transact-SQL)voor meer informatie over back-upopties.

Versleuteling op kolomniveau met behulp van een asymmetrische sleutel uit de sleutelkluis

In het volgende voorbeeld wordt een symmetrische sleutel gemaakt die wordt beveiligd door de asymmetrische sleutel in de sleutelkluis. Vervolgens wordt de symmetrische sleutel gebruikt om gegevens in de database te versleutelen.

Belangrijk

U kunt dezelfde asymmetrische sleutel niet gebruiken voor versleuteling op kolomniveau als u die sleutel al hebt gebruikt voor back-upversleuteling.

In dit voorbeeld wordt de CONTOSO_KEY_COLUMNS asymmetrische sleutel gebruikt die is opgeslagen in de sleutelkluis, die eerder kan worden geïmporteerd of gemaakt, zoals beschreven in stap 3, sectie 3 van setupstappen voor uitbreidbaar sleutelbeheer met behulp van de Azure Key Vault-. Als u deze asymmetrische sleutel in de ContosoDatabase-database wilt gebruiken, moet u de CREATE ASYMMETRIC KEY instructie opnieuw uitvoeren om de ContosoDatabase database een verwijzing naar de sleutel op te geven.

USE [ContosoDatabase];  
GO  
  
-- Create a reference to the key in the key vault  
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS   
FROM PROVIDER [AzureKeyVault_EKM_Prov]  
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',  
CREATION_DISPOSITION = OPEN_EXISTING;  
  
-- Create the data encryption key.  
-- The data encryption key can be created using any SQL Server   
-- supported algorithm or key length.  
-- The DEK will be protected by the asymmetric key in the key vault  
  
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY  
    WITH ALGORITHM=AES_256  
    ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  
  
DECLARE @DATA VARBINARY(MAX);  
  
--Open the symmetric key for use in this session  
OPEN SYMMETRIC KEY DATA_ENCRYPTION_KEY   
DECRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;  
  
--Encrypt syntax  
SELECT @DATA = ENCRYPTBYKEY  
    (  
    KEY_GUID('DATA_ENCRYPTION_KEY'),   
    CONVERT(VARBINARY,'Plain text data to encrypt')  
    );  
  
-- Decrypt syntax  
SELECT CONVERT(VARCHAR, DECRYPTBYKEY(@DATA));  
  
--Close the symmetric key  
CLOSE SYMMETRIC KEY DATA_ENCRYPTION_KEY;  

Zie ook

installatiestappen voor uitbreidbaar sleutelbeheer met behulp van de Azure Key Vault-
Uitbreidbaar sleutelbeheer met behulp van Azure Key Vault-
EKM-provider ingeschakeld serverconfiguratieoptie
sql Server-connectoronderhoud & problemen oplossen