Konfigurera Transparent Data Encryption med Azure Key Vault för SQL Server

Gäller för:SQL Server

I den här artikeln installerar och konfigurerar du SQL Server Connector för Azure Key Vault och konfigurerar sedan Transparent Data Encryption (TDE) med hjälp av en nyckel i Azure Key Vault.

Prerequisites

Innan du börjar använda Azure Key Vault med din SQL Server-instans måste du uppfylla följande krav:

Note

I SQL Server 2022 (16.x) CU 12 och senare versioner stöder SQL Server on Linux TDE Extensible Key Management med Azure Key Vault. Steg 3 och 4 i den här guiden krävs inte för SQL Server i Linux.

Snabbflöde

  1. Välj en autentiseringsmodell i steg 1: Konfigurera autentiseringsmodellen.
  2. Skapa ett nyckelvalv och en nyckel i steg 2: Skapa ett nyckelvalv.
  3. Installera anslutningsappen i steg 3: Installera SQL Server Connector.
  4. Konfigurera registrets krav i steg 4: Lägg till registernyckel för att stödja EKM-providern.
  5. Konfigurera SQL Server och verifiera kryptering i steg 5: Konfigurera SQL Server.

Steg 1: Konfigurera autentiseringsmodellen

Important

Välj din autentiseringsmodell innan du fortsätter:

  • Använd fliken Tjänstens huvudnamn för SQL Server lokalt.
  • Använd fliken Hanterad identitet för SQL Server på Azure virtuella datorer eller SQL Server aktiverad av Azure Arc, där hanterad identitet stöds.

Stödmatris för autentiseringsmodell:

Autentiseringsmodell SQL Server-versionen Där SQL Server körs Stöds
Service Principal Versioner som stöds i den här artikeln Lokalt, virtuell Azure-dator, SQL Server aktiverad med Azure Arc Ja
Hanterad identitet SQL Server 2022 CU17 och senare Azure VM Ja
Hanterad identitet SQL Server 2025 och senare SQL Server aktiverat av Azure Arc Ja
Hanterad identitet Any On-premises No

Om du vill ge din SQL Server-instans åtkomstbehörighet till ditt Azure-nyckelvalv behöver du ett konto för tjänstens huvudkonto i Microsoft Entra ID.

  1. Logga in på Azure-portalen och gör något av följande:

    • Välj knappen Microsoft Entra ID.

      Skärmbild av fönstret Azure-tjänster.

    • Välj Fler tjänster och skriv sedan Microsoft Entra IDi fönstret Alla tjänster .

  2. Registrera ett program med Microsoft Entra ID genom att utföra följande steg. Detaljerade stegvisa instruktioner finns i avsnittet Hämta en identitet för programmet i blogginlägget i Azure Key Vault Azure Key Vault – steg för steg.

    1. I avsnittet Hantera för din Microsoft Entra ID resurs, välj Appregistreringar.

      Skärmbild av sidan Översikt över Microsoft Entra-ID i Azure-portalen.

    2. På sidan Appregistreringar väljer du Ny registrering.

      Skärmbild av fönstret Appregistreringar i Azure-portalen.

    3. I fönstret Registrera ett program anger du appens användarriktade namn och väljer sedan Registrera.

      Skärmbild av fönstret Registrera ett program.

    4. I den vänstra rutan väljer du Certifikat och hemligheter>Klienthemligheter>Ny klienthemlighet.

      Skärmbild av fönstret Certifikat & hemligheter för appen i Azure-portalen.

    5. Under Lägg till en klienthemlighetanger du en beskrivning och en lämplig förfallotid och väljer sedan Lägg till. Du kan inte välja en giltighetstid som är längre än 24 månader. Mer information finns i Lägga till en klienthemlighet.

      Skärmbild av avsnittet Lägg till en klienthemlighet för appen i Azure-portalen.

    6. I fönstret Certifikat och hemligheter går du till Värde och väljer knappen Kopiera bredvid värdet för klienthemligheten för att använda den för att skapa en asymmetrisk nyckel i SQL Server.

      Skärmbild av det hemliga värdet i Azure-portalen.

    7. I den vänstra rutan väljer du Översikt och kopierar sedan värdet i rutan Program -ID (klient) för att använda det för att skapa en asymmetrisk nyckel i SQL Server.

      Skärmklipp av applikations-ID (klient) på fliken Översikt.

Steg 2: Skapa ett nyckelvalv

Välj den metod som du vill använda för att skapa ett nyckelvalv.

Note

Endast Azure Key Vault och Azure Key Vault Managed HSM stöds. Azure Cloud HSM stöds inte.

Skapa ett nyckelvalv med hjälp av Azure-portalen

Information om hur du skapar ett nyckelvalv med hjälp av Azure portalen finns i Snabbstart: Skapa ett nyckelvalv med hjälp av Azure-portalen.

Rollbaserad åtkomstkontroll i Azure

Använd Azure rollbaserad åtkomstkontroll (RBAC) för att hantera åtkomst till Azure Key Vault. Använd inte äldre åtkomstprinciper. Äldre åtkomstprinciper har kända säkerhetsrisker, saknar stöd för Privileged Identity Management (PIM) och bör inte användas för kritiska data och arbetsbelastningar. Mer information om RBAC-behörigheter för Azure Key Vault finns i Azure-inbyggda roller för åtgärder på Key Vault-dataplansnivå.

  1. Gå till nyckelvalvsresursen som du skapade och välj inställningen Åtkomstkontroll (IAM).

  2. Välj Lägg till>Lägg till rolltilldelning.

    Skärmbild av knappen Lägg till rolltilldelning i fönstret Åtkomstkontroll (IAM) i Azure-portalen.

  3. EKM-applikationen eller den hanterade identiteten behöver rollen Key Vault Crypto Service Encryption User för att utföra wrap- och unwrap-åtgärder. Sök efter Key Vault Crypto Service Encryption User och välj rollen. Välj Nästa.

    Skärmbild av att välja en rolltilldelning i Azure-portalen.

  4. På fliken Medlemmar väljer du alternativet Välj medlemmar och söker sedan efter det Microsoft Entra program eller hanterade identitet som du skapade i steg 1. Välj programmet eller den hanterade identiteten och sedan knappen Välj .

    Skärmbild av fönstret Välj medlemmar för att lägga till en rolltilldelning i Azure-portalen.

  5. Välj Granska + tilldela två gånger för att slutföra rolltilldelningen.

Skapa en nyckel

Användaren som skapar nyckeln behöver rollen Key Vault-administratör. Precis som i föregående steg lägger du till medlemmen som skapar nyckeln och tilldelar rollen.

  1. I fönstret Key Vault väljer du Nycklar och väljer sedan alternativet Generera/importera. Den här åtgärden öppnar fönstret Skapa en nyckel . Välj alternativet Generera och ange ett namn för nyckeln. SQL Server Connector kräver att nyckelnamnet endast använder tecknen "a-z", "A-Z", "0-9" och "-", med en gräns på 26 tecken.

  2. Använd nyckeltypen RSA och RSA-nyckelstorleken som 2048. EKM stöder för närvarande endast en RSA-nyckel. Ange aktiverings- och utgångsdatum efter behov och ställ in Aktiverad som Ja.

    Skärmbild av fönstret Skapa nyckel.

Konfigurera ett Azure Key Vault Managed HSM (valfritt)

Azure Key Vault Managed HSM (Hardware Security Module) stöder SQL Server och SQL Server på Azure Virtual Machines (VM) när du använder den senaste versionen av SQL Server Connector och Azure SQL. Managed HSM är en fullständigt hanterad, hög tillgänglig, enkelhyresgäst HSM-tjänst. Hanterad HSM ger en säker grund för kryptografiska åtgärder och nyckellagring. Hanterad HSM är utformad för att uppfylla de strängaste säkerhets- och efterlevnadskraven.

Steg 2 visar hur du skapar ett nyckelvalv och en nyckel i Azure Key Vault. Du kan också använda en Azure Key Vault Managed HSM för att lagra eller skapa en nyckel för SQL Server Connector. Följ de här stegen:

  1. Skapa en Azure Key Vault hanterad HSM med hjälp av Azure-portalen, Azure CLI, PowerShell eller en ARM-mall.

  2. Aktivera den hanterade HSM:en. Endast de utsedda administratörer som tilldelades när de skapades kan aktivera den. I Azure-portalen väljer du resursen Hanterad HSM och väljer sedan Ladda ned säkerhetsdomän på menyn Översikt. Följ en av snabbstartsguiderna för att aktivera din hanterade HSM.

  3. Bevilja behörigheter för Microsoft Entra-tjänsthuvudnamnet eller den hanterade identiteten att få åtkomst till Managed HSM. Rollen Hanterad HSM-administratör ger inte behörighet att skapa en nyckel. På samma sätt som steg 2 behöver EKM-applikationen eller den hanterade identiteten rollen Managed HSM Crypto User eller Managed HSM Crypto Service Encryption User för att utföra wrap- och unwrap-operationer. Mer information finns i lokalt inbyggda RBAC-roller för Managed HSM.

  4. I menyn Hanterad HSM-tjänst i Azure Key Vault, under Inställningar, välj Nycklar. I fönstret Nycklar väljer du Skapa/importera/återställa säkerhetskopiering för att skapa en nyckel eller importera en befintlig nyckel.

    Note

    Algoritmer RSA-HSM_2048 och RSA-HSM_3072 stöds från och med SQL Server 2022 (16.x) kumulativ uppdatering 13.

    Azure Key Vault Managed HSM stöder automatisk nyckelrotation. Mer information finns i Konfigurera automatisk nyckelrotation i Azure Managed HSM.

    Hanterad HSM stöder privata slutpunktsanslutningar. Mer information finns i Integrera hanterad HSM med Azure Private Link. I den här konfigurationen måste du aktivera alternativet Microsoft förbikoppling av betrodd tjänst i inställningen Azure Key Vault Hanterat HSM-nätverk.

Steg 3: Installera SQL Server Connector

Låt en SQL Server administratör ladda ned den senaste versionen av SQL Server Connector för Microsoft Azure Key Vault från Microsoft Download Center och köra installationsprogrammet.

Skärmbild av installationsguiden för SQL Server Connector.

Som standard installeras anslutningen på C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Du kan ändra den här platsen under installationen. Om du ändrar det justerar du skripten i nästa avsnitt.

En lyckad installation placerar Microsoft.AzureKeyVaultService.EKM.dll på datorn. Den här sammansättningen är den kryptografiska EKM-providerns DLL. Registrera den med SQL Server med hjälp av -instruktionenCREATE CRYPTOGRAPHIC PROVIDER.

Installationsprogrammet erbjuder även exempelskript för SQL Server kryptering.

Information om felkodsförklaringar, konfigurationsinställningar eller underhållsaktiviteter finns i:

Steg 4: Lägg till registernyckel för att stödja EKM-provider

Varning

Endast en SQL Server administratör som vet exakt vad de gör bör ändra registret. Felaktiga ändringar kan orsaka allvarliga problem. Säkerhetskopiera registret innan du gör några ändringar så att du kan återställa det om ett problem uppstår.

  1. Kör regedit för att öppna Registereditorn.

  2. Skapa en SQL Server Cryptographic Provider registernyckel på HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  3. Högerklicka på SQL Server Cryptographic Provider-registernyckeln och välj sedan Behörigheter.

  4. Ge fullständig kontroll överSQL Server Cryptographic Provider nyckeln till användarkontot som kör SQL Server-tjänsten.

    Skärmbild av EKM-registernyckeln i Registereditorn.

  5. Välj Använd och sedan OK.

  6. Stäng Registereditorn och starta om SQL Server-tjänsten.

    Note

    Om du använder TDE med EKM eller Azure Key Vault på en redundansklusterinstans lägger du även till HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider i rutinen För kontrollpunkt för klusterregister så att registret synkroniseras mellan noder, vilket underlättar databasåterställning efter redundansväxling och nyckelrotation.

    Kör följande PowerShell-kommando för att lägga till registernyckeln i kontrollpunktsrutinen:

    Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
    

Steg 5: Konfigurera SQL Server

En anteckning om de lägsta behörighetsnivåer som krävs för varje åtgärd i det här avsnittet finns i B. Vanliga frågor och svar.

Fas 1: Konfigurera kryptografiprovider och autentiseringsuppgifter i master

Välj din autentiseringsmodell och följ matchningsstegen.

  1. Kör sqlcmd eller öppna SQL Server Management Studio.

  2. Konfigurera SQL Server att använda EKM genom att köra följande Transact-SQL skript:

    -- Enable advanced options.
    USE master;
    GO
    
    EXEC sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    
    -- Enable EKM provider
    EXEC sp_configure 'EKM provider enabled', 1;
    GO
    RECONFIGURE;
    
  3. Registrera SQL Server Connector som en EKM-provider med SQL Server.

    Skapa en kryptografisk provider med hjälp av SQL Server Connector, som är en EKM-provider för Azure Key Vault. I det här exemplet är providernamnet AzureKeyVault_EKM.

    CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM
    FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
    GO
    

    Note

    Filsökvägslängden får inte överstiga 256 tecken.

  4. Konfigurera en SQL Server-autentiseringsuppgift för en SQL Server-inloggning för att använda nyckelvalvet.

    Lägg till en autentiseringsuppgift för varje inloggning som utför kryptering med hjälp av en nyckel från nyckelvalvet. Det finns en en-till-en-mappning mellan autentiseringsuppgifter och inloggningar – varje inloggning måste ha en unik autentiseringsuppgift.

    Ändra det här Transact-SQL skriptet på följande sätt:

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

      • Om du använder globala Azureersätter du argumentet IDENTITY med namnet på ditt Azure Key Vault från steg 2: Skapa ett nyckelvalv.
      • Om du använder ett privat Azure moln (till exempel Azure Government, Microsoft Azure som drivs av 21Vianet eller Azure Germany) ersätter du IDENTITY argumentet med valv-URI:n som returneras i Skapa ett nyckelvalv och en nyckel med hjälp av PowerShell. Inkludera inte https:// i nyckelvalvets URI.
    • Ersätt den första delen av SECRET argumentet med Microsoft Entra klient-ID från steg 1: Konfigurera autentiseringsmodellen. I det här exemplet är Klient-IDd956f6b9xxxxxxx.

      Important

      Ta bort bindestrecken från app-ID:t (Klient).

    • Slutför den andra delen av SECRET argumentet med klienthemligheten från steg 1. Den sista strängen är en lång sekvens med bokstäver och siffror utan bindestreck (förutom eventuella bindestreck i själva klienthemligheten).

    USE master;
    CREATE CREDENTIAL sysadmin_ekm_cred
       -- Set IDENTITY to the vault name (public Azure) or full vault hostname without https:// (sovereign clouds / Managed HSM)
       -- See https://learn.microsoft.com/azure/key-vault/general/about-keys-secrets-certificates#dns-suffixes-for-base-url
       WITH IDENTITY = 'DocsSampleEKMKeyVault',
             --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret-->
       SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx'
    FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
    -- Add the credential to the SQL Server administrator's domain login
    ALTER LOGIN [<domain>\<login>]
        ADD CREDENTIAL sysadmin_ekm_cred;
    

    Ett exempel på hur du använder variabler och programmatiskt tar bort bindestreck från klient-ID:t finns i CREATE CREDENTIAL.

  5. Öppna nyckeln Azure Key Vault i din SQL Server-instans.

    Oavsett om du har skapat en ny nyckel eller importerat en asymmetrisk nyckel i steg 2: Skapa ett nyckelvalv öppnar du nyckeln i SQL Server med hjälp CREATE ASYMMETRIC KEYav .

    Important

    Slutför registerkraven innan du utför det här steget.

    I följande exempel:

    • Ersätt EKMSampleASYKey med det namn som du vill använda i SQL Server.
    • Ersätt ContosoRSAKey0 med ditt nyckelnamn i Azure Key Vault eller Hanterad HSM.

    Använd ett versionslöst nyckelnamn (rekommenderas för de flesta scenarier):

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    Använd en specifik nyckelversion när du behöver fästa åtgärder på en version:

    CREATE ASYMMETRIC KEY EKMSampleASYKey
       FROM PROVIDER [AzureKeyVault_EKM]
       WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379',
          CREATION_DISPOSITION = OPEN_EXISTING;
    

    I det här exemplet 1a4d3b9b393c4678831ccc60def75379 är den specifika nyckelversion som SQL Server använder för databasåtgärder.

  6. Skapa en ny inloggning med hjälp av den asymmetriska nyckeln i SQL Server som du skapade i föregående steg.

    -- Create a login that associates the asymmetric key with this login
    CREATE LOGIN TDE_Login
        FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Flytta mappningen av autentiseringsuppgifter från den ursprungliga administratörsinloggningen till inloggningen som skapades från den asymmetriska nyckeln.

    SQL Server använder inloggningen som skapats från den asymmetriska nyckeln (TDE_Login) för EKM-åtgärder. För att säkerställa att SQL Server kan komma åt Azure Key Vault under krypterings- och återställningsåtgärder mappar du autentiseringsuppgifterna till TDE_Login i stället för den ursprungliga installationsinloggningen.

    -- Remove the service principal credential from the original setup login
    ALTER LOGIN [<domain>\<login>]
       DROP CREDENTIAL sysadmin_ekm_cred;
    
    -- Map the service principal credential to the login created from the asymmetric key
    ALTER LOGIN TDE_Login
       ADD CREDENTIAL sysadmin_ekm_cred;
    

Fas 2: Kryptera och verifiera användardatabasen

Konfigurera att användardatabasen ska krypteras

  1. Skapa en testdatabas som ska krypteras med hjälp av Azure Key Vault-nyckeln.

    -- Create a test database for the TDE example.
    CREATE DATABASE TestTDE;
    
  2. Skapa en databaskrypteringsnyckel med hjälp av serverns asymmetriska nyckel (EKMSampleASYKey).

    USE TestTDE;
    -- Create a DEK protected by the EKM asymmetric key.
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Aktivera TDE på databasen genom att ange ENCRYPTION ON.

    -- Enable TDE for the database.
    ALTER DATABASE TestTDE
        SET ENCRYPTION ON;
    

Verifiera nyckelanvändning och krypteringstillstånd

  1. I databasen master kör du följande Transact-SQL-fråga för att verifiera att den EKM-asymmetriska nyckeln finns och hämta dess tumavtryck.

    SELECT name,
           algorithm_desc,
           thumbprint
    FROM sys.asymmetric_keys;
    

    Satsen returnerar utdata som liknar följande:

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. I användardatabasen (TestTDE) kör du följande Transact-SQL fråga för att kontrollera att TDE är aktiverat och att databaskrypteringsnyckeln skyddas av en asymmetrisk nyckel.

    SELECT encryptor_type,
           encryption_state_desc,
           encryptor_thumbprint
    FROM sys.dm_database_encryption_keys
    WHERE database_id = DB_ID('TestTDE');
    

    Satsen returnerar utdata som liknar följande:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

    Bekräfta att encryptor_thumbprint matchar tumavtrycket som returneras av sys.asymmetric_keys. Ett matchningsfel indikerar vanligtvis att databaskrypteringsnyckeln skyddas av en annan nyckel än förväntat.

Städa upp

Använd de rensningssteg som matchar den autentiseringsmodell som du konfigurerade.

  1. Rensa testobjekten som du skapade i den här proceduren.

    -- CLEAN UP: shared objects + service principal credential
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    DROP LOGIN [TDE_Login];
    GO
    
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
  2. Granska om du ska ta bort registernyckeln SQL Server Cryptographic Provider .

    Important

    Registernyckeln SQL Server Cryptographic Provider tas inte bort automatiskt när du har tagit bort EKM-nycklar.

    Ta bara bort den här registernyckeln när du inte längre behöver EKM på instansen. Att ta bort det för tidigt kan störa EKM-funktioner och återställningsåtgärder.

    Registersökväg: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider

Rotera asymmetriska nycklar för TDE med Azure Key Vault

Använd en dedikerad driftsguide för nyckelrotationssteg, inklusive autentiseringsspecifika skript, verifiering och säkerhetskontroller:

Important

Ta inte bort tidigare versioner av nyckeln efter rotation. Tidigare versioner kan fortfarande krävas för att återställa äldre säkerhetskopior, loggfiler och återställningsartefakter.