Dela via


Använda SQL Server Connector med SQL-krypteringsfunktioner

gäller för:SQL Server

Vanliga SQL Server-krypteringsaktiviteter med hjälp av en asymmetrisk nyckel som skyddas av Azure Key Vault innehåller följande tre områden.

  • Transparent datakryptering med hjälp av en asymmetrisk nyckel från Azure Key Vault

  • Kryptera säkerhetskopior med hjälp av en asymmetrisk nyckel från Nyckelvalvet

  • Kryptering på kolumnnivå med hjälp av en asymmetrisk nyckel från nyckelvalvet

Slutför delar av I till IV i avsnittet installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault-innan du följer stegen i det här avsnittet.

Notera

Version 1.0.0.440 och äldre har ersatts och stöds inte längre i produktionsmiljöer. Uppgradera till version 1.0.1.0 eller senare genom att gå till Microsoft Download Center och använda anvisningarna på sidan UNDERHÅLL av SQL Server Connector & Felsökning under "Uppgradering av SQL Server Connector".

Notera

Microsoft Entra ID tidigare kallades Azure Active Directory (Azure AD).

Transparent datakryptering med hjälp av en asymmetrisk nyckel från Azure Key Vault

När du har slutfört del I till IV i avsnittet Installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault använder du Azure Key Vault-nyckeln för att kryptera databaskrypteringsnyckeln med hjälp av TDE. Mer information om hur du roterar nycklar med PowerShell finns i Rotera TDE-skyddet (Transparent datakryptering) med PowerShell-.

Viktig

Ta inte bort tidigare versioner av nyckeln efter en rollover. När nycklar rullas över krypteras vissa data fortfarande med tidigare nycklar, till exempel äldre databassäkerhetskopior, säkerhetskopierade loggfiler och transaktionsloggfiler.

Du måste skapa en autentiseringsuppgift och en inloggning och skapa en databaskrypteringsnyckel som krypterar data och loggar i databasen. För att kryptera en databas krävs CONTROL- behörighet för databasen. Följande bild visar hierarkin för krypteringsnyckeln när du använder Azure Key Vault.

diagram som visar hierarkin för krypteringsnyckeln när du använder Azure Key Vault.

  1. Skapa en SQL Server-autentiseringsuppgift som databasmotorn ska använda för TDE-

    Databasmotorn använder autentiseringsuppgifterna för Microsoft Entra-programmet för att komma åt Key Vault under databasinläsningen. Vi rekommenderar att du skapar ett annat klient-ID och Secret, enligt beskrivningen i steg 1för databasmotorn, för att begränsa de Behörigheter för Nyckelvalv som beviljas.

    Ändra Transact-SQL skriptet nedan på följande sätt:

    • Redigera argumentet IDENTITY (ContosoDevKeyVault) för att peka på ditt Azure Key Vault.

      • Om du använder globala Azure-ersätter du argumentet IDENTITY med namnet på ditt Azure Key Vault från del II.
      • Om du använder ett privat Azure-moln (t.ex. Azure Government, Azure som drivs av 21Vianet eller Azure Tyskland) ersätter du argumentet IDENTITY med valv-URI:n som returneras i del II, steg 3. Inkludera inte "https://" i valv-URI:n.
    • Ersätt den första delen av argumentet SECRET med Microsoft Entra-programmet klient-ID från steg 1. I det här exemplet är Klient-IDEF5C8E094D2A4A769998D93440D8115D.

      Viktig

      Du måste ta bort bindestrecken från klient-ID.

    • Slutför den andra delen av argumentet SECRET med klienthemlighet från del I. I det här exemplet är klienthemlighet från del 1 ReplaceWithAADClientSecret.

    • Den sista strängen för SECRET-argumentet blir en lång sekvens med bokstäver och siffror, utan bindestreck.

    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. Skapa en SQL Server-inloggning för databasmotorn för TDE

    Skapa en SQL Server-inloggning och lägg till autentiseringsuppgifterna från steg 1 till den. I det här Transact-SQL exemplet används samma nyckel som importerades tidigare.

    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. Skapa databaskrypteringsnyckeln (DEK)

    DEK krypterar dina data och loggfiler i databasinstansen och krypteras i sin tur av den asymmetriska Azure Key Vault-nyckeln. DEK kan skapas med valfri SQL Server-algoritm eller nyckellängd som stöds.

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

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

    Med Hjälp av Management Studio kontrollerar du att TDE har aktiverats genom att ansluta till databasen med Object Explorer. Högerklicka på databasen, peka på Uppgifteroch klicka sedan på Hantera databaskryptering.

    skärmbild som visar Object Explorer med Aktiviteter > Hantera databaskryptering markerat.

    I dialogrutan Hantera databaskryptering bekräftar du att TDE är aktiverat och vilken asymmetrisk nyckel som krypterar DEK.

    Skärmbild av dialogrutan Hantera databaskryptering med alternativet Ange databaskryptering på valt och en gul banderoll med texten Nu är TDE aktiverat.

    Du kan också köra följande Transact-SQL skript. Krypteringstillståndet 3 anger en krypterad databas.

    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;  
    

    Note

    Den tempdb databasen krypteras automatiskt när en databas aktiverar TDE.

Kryptera säkerhetskopior med hjälp av en asymmetrisk nyckel från Nyckelvalvet

Krypterade säkerhetskopior stöds från och med SQL Server 2014 (12.x). I följande exempel skapas och återställs en säkerhetskopia som krypterats med en datakrypteringsnyckel som skyddas av den asymmetriska nyckeln i nyckelvalvet.
Databasmotorn använder autentiseringsuppgifterna för Microsoft Entra-programmet för att komma åt Key Vault under databasinläsningen. Vi rekommenderar att du skapar ett annat klient-ID och Secret, enligt beskrivningen i steg 1för databasmotorn, för att begränsa de Behörigheter för Nyckelvalv som beviljas.

  1. Skapa en SQL Server-autentiseringsuppgift som databasmotorn ska använda för säkerhetskopieringskryptering

    Ändra Transact-SQL skriptet nedan på följande sätt:

    • Redigera argumentet IDENTITY (ContosoDevKeyVault) för att peka på ditt Azure Key Vault.

      • Om du använder globala Azure-ersätter du argumentet IDENTITY med namnet på ditt Azure Key Vault från del II.
      • Om du använder en privata Azure-moln (t.ex. Azure Government, Microsoft Azure som drivs av 21Vianet eller Azure Tyskland) ersätter du argumentet IDENTITY med valv-URI:n som returneras i del II, steg 3. Inkludera inte "https://" i valv-URI:n.
    • Ersätt den första delen av argumentet SECRET med Microsoft Entra-programmet klient-ID från steg 1. I det här exemplet är klient-IDEF5C8E094D2A4A769998D93440D8115D.

      Viktig

      Du måste ta bort bindestrecken från klientens ID-nummer.

    • Slutför den andra delen av argumentet SECRET med klienthemlighet från del I. I det här exemplet är klienthemlighet från del I Replace-With-AAD-Client-Secret. Den sista strängen för argumentet SECRET blir en lång sekvens med bokstäver och siffror, med inga bindestreck.

      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. Skapa en SQL Server-inloggning för databasmotorn för säkerhetskopieringskryptering

    Skapa en SQL Server-inloggning som ska användas av Database Enginee för krypteringssäkerhetskopior och lägg till autentiseringsuppgifterna från steg 1 till den. I det här Transact-SQL exemplet används samma nyckel som importerades tidigare.

    Viktig

    Du kan inte använda samma asymmetriska nyckel för säkerhetskopieringskryptering om du redan har använt den nyckeln för TDE (exemplet ovan) eller kryptering på kolumnnivå (följande exempel).

    I det här exemplet används CONTOSO_KEY_BACKUP asymmetrisk nyckel som lagras i nyckelvalvet, som kan importeras eller skapas tidigare för huvuddatabasen, som del IV, steg 5 tidigare.

    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. Säkerhetskopiera databasen

    Säkerhetskopiera databasen som anger kryptering med den asymmetriska nyckeln som lagras i nyckelvalvet.

    Observera i exemplet nedan att om databasen redan har krypterats med TDE och den asymmetriska nyckeln CONTOSO_KEY_BACKUP skiljer sig från TDE-asymmetrisk nyckel krypteras säkerhetskopieringen av både den asymmetriska TDE-nyckeln och CONTOSO_KEY_BACKUP. SQL Server-målinstansen behöver båda nycklarna för att dekryptera säkerhetskopian.

    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. Återställ databasen

    Om du vill återställa en databassäkerhetskopia som är krypterad med TDE måste SQL Server-målinstansen först ha en kopia av den asymmetriska Key Vault-nyckel som används för kryptering. Det är så här detta skulle uppnås:

    • Om den ursprungliga asymmetriska nyckeln som används för TDE inte längre finns i Key Vault återställer du nyckelsäkerhetskopian för Key Vault eller importerar nyckeln från en lokal HSM igen. Viktigt: För att nyckelns tumavtryck ska matcha tumavtrycket som registrerats i databassäkerhetskopian måste nyckeln namnges samma Nyckelvalvsnyckelnamn som den ursprungligen hette tidigare.

    • Tillämpa steg 1 och 2 på SQL Server-målinstansen.

    • När SQL Server-målinstansen har åtkomst till de asymmetriska nycklar som används för att kryptera säkerhetskopian återställer du databasen på servern.

    Exempel på återställningskod:

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

    Mer information om alternativ för säkerhetskopiering finns i BACKUP (Transact-SQL).

Kryptering på kolumnnivå med hjälp av en asymmetrisk nyckel från nyckelvalvet

I följande exempel skapas en symmetrisk nyckel som skyddas av den asymmetriska nyckeln i nyckelvalvet. Sedan används den symmetriska nyckeln för att kryptera data i databasen.

Viktig

Du kan inte använda samma asymmetriska nyckel för kryptering på kolumnnivå om du redan har använt den nyckeln för säkerhetskopieringskryptering.

I det här exemplet används CONTOSO_KEY_COLUMNS asymmetrisk nyckel som lagras i nyckelvalvet, som kan importeras eller skapas tidigare, enligt beskrivningen i steg 3, avsnitt 3 i installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault-. Om du vill använda den här asymmetriska nyckeln i ContosoDatabase-databasen måste du köra CREATE ASYMMETRIC KEY-instruktionen igen för att ge ContosoDatabase-databasen en referens till nyckeln.

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;  

Se även

installationssteg för utökningsbar nyckelhantering med hjälp av Azure Key Vault-
Utökningsbar nyckelhantering med Azure Key Vault
EKM-provider aktiverat serverkonfigurationsalternativ
underhåll av SQL Server Connector & felsökning