Dela via


Konfigurera utökningsbar nyckelhantering för SQL Server TDE med hjälp av Azure Key Vault

gäller för:SQL Server

I den här artikeln installerar och konfigurerar du SQL Server Connector för Azure Key Vault.

Not

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

Utökningsbar nyckelhantering med Azure Key Vault (AKV) är tillgängligt för SQL Server i Linux-miljöer, från och med SQL Server 2022 (16.x) Kumulativ uppdatering 12. Följ samma instruktioner, men hoppa över steg 3 och 4.

Förutsättningar

Innan du börjar använda Azure Key Vault med din SQL Server-instans måste du vara säker på att du har uppfyllt följande krav:

Noten

I SQL Server 2022 (16.x) CU 14 och senare versioner stöder SQL Server på 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.

Steg 1: Konfigurera ett Huvudnamn för Microsoft Entra-tjänsten

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-portalenoch 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 göra följande. 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 & 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ägg till en klienthemlighet.

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

    6. I fönstret Certifikat & hemligheter under Valueväljer du knappen Kopiera bredvid värdet för den klienthemlighet som ska användas 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 det värde som ska användas för att skapa en asymmetrisk nyckel i SQL Server i rutan Program (klient).

      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.

Skapa ett nyckelvalv med hjälp av Azure-portalen

Du kan använda Azure-portalen för att skapa nyckelvalvet och sedan lägga till ett Microsoft Entra-huvudnamn i det.

  1. Skapa en resursgrupp.

    Alla Azure-resurser som du skapar via Azure-portalen måste finnas i en resursgrupp som du skapar för att inhysa ditt nyckelvalv. Resursnamnet i det här exemplet är DocsSampleRG. Välj din egen resursgrupp och nyckelvalvsnamn eftersom alla nyckelvalvsnamn måste vara globalt unika.

    I fönstret Skapa en resursgrupp under Projektinformationanger du värdena och väljer sedan Granska + skapa.

    Skärmbild av fönstret Skapa en resursgrupp i Azure-portalen.

  2. I Azure-portalen söker eller väljer du Nyckelvalv tjänster för att skapa ett nyckelvalv. Välj Skapa.

    I fönstret Skapa ett nyckelvalv väljer du fliken Grundläggande. Ange lämpliga värden för fliken. Vi rekommenderar också att du aktiverar rensningsskydd.

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

  3. På fliken Access-konfiguration kan du välja rollbaserad åtkomstkontroll i Azure eller Vault-åtkomstprincip. Vi går över båda alternativen, men alternativet rollbaserad åtkomstkontroll i Azure rekommenderas. För mer information, se Access-modellens översikt.

    Skärmbild av fönstret Skapa nyckelvalv och fliken Åtkomstkonfiguration i Azure-portalen.

  4. Du kan lämna fliken Nätverk som standard, eller så kan du konfigurera nätverksinställningarna för nyckelvalvet. Om du använder en brandvägg med nyckelvalvet måste alternativet Tillåt betrodda Microsoft-tjänster att kringgå brandväggen aktiveras, såvida du inte använder privata slutpunktsanslutningar. Mer information finns i Konfigurera Azure Key Vault-brandväggar och virtuella nätverk.

  5. Välj Granska + skapa och skapa sedan nyckelvalvet.

Rollbaserad åtkomstkontroll i Azure

Den rekommenderade metoden är att använda rollbaserad åtkomstkontroll i Azure (RBAC) för att tilldela behörigheter till nyckelvalvet. Med den här metoden kan du tilldela behörigheter till användare, grupper och program på en mer detaljerad nivå. Du kan tilldela behörigheter till nyckelvalvet på hanteringsplanet (Azure-rolltilldelningar) och på dataplanet (åtkomstprinciper för nyckelvalvet). Om du bara kan använda åtkomstprinciper kan du hoppa över det här avsnittet och gå till Vault-åtkomstprinciperna avsnitt. 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-programmet behöver rollen Key Vault Crypto Service Encryption User för att utföra åtgärderna wrap och unwrap. 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 Microsoft Entra-programmet som du skapade i steg 1. Välj programmet 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.

  6. Användaren som skapar nyckeln behöver rollen Key Vault-administratör. Sök efter Key Vault-administratör och välj rollen. Välj Nästa.

  7. Precis som i föregående steg lägger du till medlemmen som skapar nyckeln och tilldelar rollen.

Åtkomstprincip för valv

Not

Om du använder rollbaserad åtkomstkontroll i Azure alternativet kan du hoppa över det här avsnittet. Om du ändrar behörighetsmodellen kan du göra det genom att gå till Åtkomstkonfiguration-menyn i nyckelvalvet. Kontrollera att du har rätt behörigheter för att hantera nyckelvalvet. Mer information finns i Aktivera Azure RBAC-behörigheter för Key Vault.

  1. På fliken Access-konfiguration väljer du Vault-åtkomstprincip. Om du använder ett befintligt nyckelvalv kan du välja menyn Åtkomstprinciper från Key Vault-resursen och välja Skapa.

  2. I fönstret Skapa en åtkomstprincip väljer du Hämta och Lista behörigheter från alternativen Nyckelhanteringsåtgärder. Välj Ta bort nyckel och Omslut nyckel behörigheter från alternativen kryptografiska åtgärder. Välj Nästa

    Skärmbild av länken Lägg till åtkomstprincip i fönstret Åtkomstprinciper.

  3. På fliken Principal väljer du det program som skapades i steg 1.

    Skärmbild av sökruta för applikationer i huvudfönstret.

  4. Välj Nästa och sedan Skapa.

Skapa en nyckel

  1. I fönstret Key Vault väljer du Nycklar och väljer sedan alternativet Generera/importera. Då öppnas fönstret Skapa en nyckel. Ange ett nyckelvalvnamn. 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.

Metodtips

För att säkerställa snabb nyckelåterställning och få åtkomst till dina data utanför Azure rekommenderar vi följande metodtips:

  • Skapa krypteringsnyckeln lokalt på en lokal HSM-enhet (Hardware Security Module). Se till att använda en asymmetrisk RSA 2048- eller 3072-nyckel så att den stöds av SQL Server.

  • Importera krypteringsnyckeln till ditt Azure-nyckelvalv. Den här processen beskrivs i nästa avsnitt.

  • Innan du använder nyckeln i ditt Azure-nyckelvalv för första gången ska du göra en säkerhetskopia av Azure Key Vault-nyckeln med hjälp av Backup-AzureKeyVaultKey PowerShell-cmdleten.

  • När du gör ändringar i nyckeln (till exempel lägga till ACL:er, taggar eller nyckelattribut) måste du göra en annan säkerhetskopiering av Nyckelvalvet i Azure.

    Not

    Säkerhetskopiering av en nyckel är en Azure Key Vault-nyckelåtgärd som returnerar en fil som kan sparas var som helst.

    Användning av SQL Server Connector för Azure Key Vault bakom en brandvägg eller proxyserver kan påverka prestanda om trafiken fördröjs eller blockeras. Bekanta dig med Få åtkomst till Azure Key Vault bakom en brandvägg för att säkerställa att rätt regler finns på plats.

Valfritt – Konfigurera en Hanterad HSM för Azure Key Vault (maskinvarusäkerhetsmodul)

Azure Key Vault Managed HSM (Maskinvarusäkerhetsmodul) stöds för SQL Server och SQL Server på virtuella Azure-datorer (VM) när du använder den senaste versionen av SQL Server Connectorsamt 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.

I steg 2lärde vi oss att skapa ett nyckelvalv och en nyckel i Azure Key Vault. Du kan valfritt använda en Hanterad HSM för Azure Key Vault för att skapa eller lagra en nyckel som ska användas med SQL Server Connector. Här är stegen:

  1. Skapa ett hanterat HSM i Azure Key Vault. Detta kan göras med hjälp av Azure-portalen genom att söka efter Azure Key Vault Managed HSM-tjänsten och skapa den nya resursen, eller genom att använda Azure CLI-, PowerShelleller en ARM-mall.

  2. Aktivera hanterad HSM. Endast de utsedda administratörer som tilldelades under skapandet av Managed HSM kan aktivera HSM. Du kan göra detta genom att välja den hanterade HSM-resursen i Azure-portalen genom att välja Ladda ned säkerhetsdomän i menyn Översikt i resursen. Följ sedan en av snabbstarterna för att aktivera din hanterade HSM.

  3. Bevilja behörigheter för Microsoft Entra serviceprincipal för åtkomst till Managed HSM. Rollen Hanterad HSM-administratör ger inte behörighet att skapa en nyckel. På samma sätt som steg 2behöver EKM-programmet rollen Managed HSM Crypto User eller rollen Managed HSM Crypto Service Encryption User för att utföra in- och urpaketeringsåtgärder. Välj Enterprise-programmet typ när du lägger till huvudnamnet för rolltilldelningen. 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.

    Obs

    När du skapar en autentiseringsuppgift för åtkomst till managed HSM <name of Managed HSM>.managedhsm.azure.netidentiteten , som finns i Azure Key Vault Managed HSM Overview as the HSM URI i Azure Portal.

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

    SQL Server Connector version 15.0.2000.440 eller senare krävs för att stödja Azure Key Vault 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 alternativet Microsofts förlitliga tjänst undantag aktiveras för nätverksinställningen för Azure Key Vaults hanterade HSM Nätverk.

Steg 3: Installera SQL Server Connector

Ladda ned SQL Server Connector från Microsoft Download Center. Nedladdningen ska göras av administratören för SQL Server-datorn.

Not

  • SQL Server Connector-versionerna 1.0.0.440 och äldre har ersatts och stöds inte längre i produktionsmiljöer. Instruktionerna finns på sidan Underhåll av SQL Server Connector & Felsökning under Uppgradering av SQL Server Connector.
  • Från och med version 1.0.3.0 rapporterar SQL Server Connector relevanta felmeddelanden till Windows-händelseloggarna för felsökning.
  • Från och med version 1.0.4.0 finns det stöd för privata Azure-moln, inklusive Azure som drivs av 21Vianet, Azure Germany och Azure Government.
  • Det finns en brytande förändring i version 1.0.5.0 när det gäller thumbprint-algoritmen. Det kan uppstå problem med databasåterställning efter uppgradering till 1.0.5.0. Mer information finns i artikeln KB 447099.
  • Från och med version 1.0.5.0 (TimeStamp: september 2020) stöder SQL Server Connector filtreringsmeddelanden och logik för omförsök av nätverksbegäran.
  • Från och med den uppdaterade versionen 1.0.5.0 (TimeStamp: November 2020) stöder SQL Server Connector RSA 2048, RSA 3072, RSA-HSM 2048 och RSA-HSM 3072-nycklar.
  • Från och med den uppdaterade versionen 1.0.5.0 (TimeStamp: November 2020) kan du referera till en specifik nyckelversion i Azure Key Vault.

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. Den här platsen kan ändras under installationen. Om du ändrar det justerar du skripten i nästa avsnitt.

Det finns inget gränssnitt för Connector, men om det har installerats framgångsrikt är Microsoft.AzureKeyVaultService.EKM.dll installerat på datorn. Den här sammansättningen är den kryptografiska EKM-providerns DLL som måste registreras med SQL Server med hjälp av CREATE CRYPTOGRAPHIC PROVIDER-instruktionen.

Med installationen av SQL Server Connector kan du också ladda ned exempelskript för SQL Server-kryptering.

Information om hur du visar felkodsförklaringar, konfigurationsinställningar eller underhållsaktiviteter för SQL Server Connector finns i:

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

Varning

Att ändra registret bör utföras av användare som vet exakt vad de gör. Allvarliga problem kan uppstå om du ändrar registret felaktigt. Säkerhetskopiera registret innan du ändrar det för extra skydd. Du kan återställa registret om ett problem uppstår.

Att ändra registret bör göras av administratören för SQL Server-datorn.

  1. Kontrollera att SQL Server är installerat och körs.

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

  3. Skapa en SQL Server Cryptographic Provider registernyckel på HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft. Den fullständiga sökvägen är HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

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

  5. Ge fullständig kontroll behörigheter för SQL Server Cryptographic Provider-registernyckeln till användarkontot som kör SQL Server-tjänsten.

    Skärmbild av EKM-registernyckeln i Registereditorn.

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

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

    Obs

    Om du använder TDE med EKM eller Azure Key Vault på en redundansklusterinstans måste du slutföra ytterligare ett steg för att lägga till HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider i rutinen För kontrollpunkt för klusterregister så att registret kan synkroniseras mellan noderna. Synkronisering underlättar databasåterställning efter failover och rotation av nycklar.

    Om du vill lägga till registernyckeln i rutinen För kontrollpunkt för klusterregister kör du följande kommando i PowerShell:

    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.

Konfigurera master-databasen

  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
    

    Not

    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.

    En autentiseringsuppgift måste läggas till i varje inloggning som ska utföra kryptering med hjälp av en nyckel från nyckelvalvet. Detta kan omfatta:

    • En SQL Server-administratörsinloggning som använder nyckelvalvet för att konfigurera och hantera SQL Server-krypteringsscenarier.

    • Andra SQL Server-inloggningar som kan aktivera TDE eller andra SQL Server-krypteringsfunktioner.

    Det finns en-till-en-mappning mellan autentiseringsuppgifter och inloggningar. Varje inloggning måste alltså 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 argumentet IDENTITY med valv-URI:n som returneras i steg 3 i Skapa ett nyckelvalv och nyckel med hjälp av PowerShell avsnittet. Inkludera inte https:// i nyckelvalvets URI.
    • Ersätt den första delen av argumentet SECRET med Microsoft Entra-klient-ID från steg 1: Konfigurera ett Microsoft Entra-tjänsthuvudnamn. I det här exemplet är Klient-IDd956f6b9xxxxxxx.

      Viktig

      Se till att ta bort bindestrecken från app-ID:t (Klient).

    • Slutför den andra delen av argumentet SECRET med Klienthemlighet från steg 1: Konfigurera ett Microsoft Entra-tjänstens huvudnamn. I det här exemplet är klienthemligheten yrA8X~PldtMCvUZPxxxxxxxx. Den sista strängen för argumentet SECRET är en lång sekvens med bokstäver och siffror, utan bindestreck (förutom avsnittet Klienthemlighet, om klienthemligheten innehåller bindestreck).

      USE master;
      CREATE CREDENTIAL sysadmin_ekm_cred
          WITH IDENTITY = 'DocsSampleEKMKeyVault',                            -- for public Azure
          -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.usgovcloudapi.net', -- for Azure Government
          -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.azure.cn',          -- for Microsoft Azure operated by 21Vianet
          -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.microsoftazure.de', -- for Azure Germany
          -- WITH IDENTITY = '<name of Managed HSM>.managedhsm.azure.net',    -- for Managed HSM (HSM URI in the Azure portal resource)
                 --<----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 för argumentet CREATE CREDENTIAL och programmatiskt tar bort bindestrecken från klient-ID:t finns i CREATE CREDENTIAL.

  5. Öppna din Azure Key Vault-nyckel i SQL Server-instansen.

    Om du har skapat en ny nyckel eller importerat en asymmetrisk nyckel enligt beskrivningen i steg 2: Skapa ett nyckelvalvmåste du öppna nyckeln. Öppna det genom att ange ditt nyckelnamn i följande Transact-SQL skript.

    Viktig

    Se till att först slutföra registerkraven för det här steget.

    • Ersätt EKMSampleASYKey med det namn som du vill att nyckeln ska ha i SQL Server.
    • Ersätt ContosoRSAKey0 med namnet på din nyckel i Azure Key Vault eller Managed HSM. Nedan visas ett exempel på en versionslös nyckel.
    CREATE ASYMMETRIC KEY EKMSampleASYKey
    FROM PROVIDER [AzureKeyVault_EKM]
    WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    Från och med den uppdaterade versionen 1.0.5.0 av SQL Server-anslutningsappen kan du referera till en specifik nyckelversion i Azure Key Vault:

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

    I föregående exempelskript representerar 1a4d3b9b393c4678831ccc60def75379 den specifika versionen av nyckeln som ska användas. Om du använder det här skriptet spelar det ingen roll om du uppdaterar nyckeln med en ny version. Nyckelversionen (till exempel) 1a4d3b9b393c4678831ccc60def75379 används alltid 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 will associate the asymmetric key to this login
    CREATE LOGIN TDE_Login
    FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Skapa en ny inloggning från den asymmetriska nyckeln i SQL Server. Släpp mappningen av autentiseringsuppgifter från steg 5: Konfigurera SQL Server- så att autentiseringsuppgifterna kan mappas till den nya inloggningen.

    --Now drop the credential mapping from the original association
    ALTER LOGIN [<domain>\<login>]
    DROP CREDENTIAL sysadmin_ekm_cred;
    
  8. Ändra den nya inloggningen och mappa EKM-autentiseringsuppgifterna till den nya inloggningen.

    --Now add the credential mapping to the new Login
    ALTER LOGIN TDE_Login
    ADD CREDENTIAL sysadmin_ekm_cred;
    

Konfigurera att användardatabasen ska krypteras

  1. Skapa en testdatabas som ska krypteras med Azure Key Vault-nyckeln.

    --Create a test database that will be encrypted with the Azure Key Vault key
    CREATE DATABASE TestTDE;
    
  2. Skapa en databaskrypteringsnyckel med hjälp av ASYMMETRIC KEY (EKMSampleASYKey).

    USE <DB Name>;
    --Create an ENCRYPTION KEY using the ASYMMETRIC KEY (EKMSampleASYKey)
    CREATE DATABASE ENCRYPTION KEY
    WITH ALGORITHM = AES_256
    ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
    
  3. Kryptera testdatabasen. Aktivera TDE genom att ange ENCRYPTION ON.

    --Enable TDE by setting ENCRYPTION ON
    ALTER DATABASE TestTDE
    SET ENCRYPTION ON;
    

Registerdetaljer

  1. Kör följande Transact-SQL fråga i master-databasen för att visa den asymmetriska nyckel som används.

    SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;
    

    Instruktionen returnerar:

    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 visa krypteringsnyckeln som används.

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

    Uttalandet returnerar:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

Rensa

  1. Rensa testobjekten. Ta bort alla objekt som skapades i det här testskriptet.

    -- CLEAN UP
    USE master;
    GO
    ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
    DROP DATABASE [TestTDE];
    GO
    
    ALTER LOGIN [TDE_Login] DROP CREDENTIAL [sysadmin_ekm_cred];
    DROP LOGIN [TDE_Login];
    GO
    
    DROP CREDENTIAL [sysadmin_ekm_cred];
    GO
    
    USE master;
    GO
    DROP ASYMMETRIC KEY [EKMSampleASYKey];
    DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM];
    GO
    

    Exempelskript finns i bloggen på transparent datakryptering i SQL Server och Utökningsbar nyckelhantering med Azure Key Vault.

  2. Den SQL Server Cryptographic Provider registernyckeln rensas inte automatiskt när en nyckel eller alla EKM-nycklar har tagits bort. Den måste rensas manuellt. Rensning av registernyckeln bör göras med extrem försiktighet, eftersom rensning av registret i förtid kan bryta EKM-funktionen. Om du vill rensa registernyckeln tar du bort SQL Server Cryptographic Provider registernyckeln på HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.

Felsökning

Om registernyckeln HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider inte skapas eller om de behörigheter som krävs inte beviljas misslyckas följande DDL-instruktion:

CREATE ASYMMETRIC KEY EKMSampleASYKey
FROM PROVIDER [AzureKeyVault_EKM]
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
CREATION_DISPOSITION = OPEN_EXISTING;
Msg 33049, Level 16, State 2, Line 65
Key with name 'ContosoRSAKey0' does not exist in the provider or access is denied. Provider error code: 2058.  (Provider Error - No explanation is available, consult EKM Provider for details)

Klienthemligheter som snart upphör att gälla

Om autentiseringsuppgifterna har en klienthemlighet som snart upphör att gälla kan en ny hemlighet tilldelas till autentiseringsuppgifterna.

  1. Uppdatera hemligheten som ursprungligen skapades i Steg 1: Konfigurera en Microsoft Entra-administratör.

  2. Ändra autentiseringsuppgifterna med samma identitet och nya hemlighet med hjälp av följande kod. Ersätt <New Secret> med din nya hemlighet:

    ALTER CREDENTIAL sysadmin_ekm_cred
    WITH IDENTITY = 'DocsSampleEKMKeyVault',
    SECRET = '<New Secret>';
    
  3. Starta om SQL Server-tjänsten.

Anteckning

Om du använder EKM i en tillgänglighetsgrupp (AG) måste du ändra autentiseringsuppgifterna och starta om SQL Server-tjänsten på alla noder i tillgänglighetsgruppen.

Rotera asymmetrisk nyckel med en ny AKV-nyckel eller en ny AKV-nyckelversion

Observera

  • När du roterar en AKV-nyckel manuellt har SQL Server stöd för både AKV-versionlös nyckel eller versionsnyckel och du behöver inte använda en annan AKV-nyckel.
  • Den ursprungliga AKV-nyckeln kan roteras och skapa en ny version som kan ersätta den tidigare nyckeln som skapades i SQL Server.
  • För manuell nyckelrotation måste en ny asymmetrisk SQL Server-nyckel skapas som refererar till den versionslösa nyckel eller versionsnyckel som roterades i AKV. För den nya asymmetriska SQL Server-nyckeln väljs den versionslösa AKV-nyckeln automatiskt med den högsta nyckelversionen i AKV. För den versionerade nyckeln måste du ange den högsta versionen i AKV med hjälp av syntaxen WITH PROVIDER_KEY_NAME = <key_name>/<version>. Du kan ändra databaskrypteringsnyckeln för att kryptera om med den nya asymmetriska nyckeln. Samma nyckelnamn (versionshanterat eller versionslöst) kan användas med AKV-rotationsprincip. För versionsnyckel måste den aktuella versionen läggas till. Använd samma nyckelnamn för versionslös nyckel.

SQL Server har ingen mekanism för att automatiskt rotera den asymmetriska nyckel som används för TDE. Stegen för att rotera en asymmetrisk nyckel manuellt är följande.

  1. Autentiseringsuppgifterna som används i vår första konfiguration (sysadmin_ekm_cred) kan också återanvändas för nyckelrotationen. Du kan också skapa en ny autentiseringsuppgift för den nya asymmetriska nyckeln.

    CREATE CREDENTIAL <new_credential_name>
        WITH IDENTITY = <key vault>,
        SECRET = 'existing/new secret'
        FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
  2. Lägg till autentiseringsuppgifterna till huvudmannen:

    ALTER LOGIN [domain\userName];
    ADD CREDENTIAL <new_credential_name>;
    
  3. Skapa den nya asymmetriska nyckeln baserat på den nya nyckeln (när du har roterat nyckeln). Den nya nyckeln kan vara en versionslös nyckel (ContosoRSAKey0 i vårt exempel) eller en versionsnyckel (ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379 där 1a4d3b9b393c4678831ccc60def75379 är versionen av den uppdaterade nyckeln i AKV):

    CREATE ASYMMETRIC KEY <new_ekm_key_name>
     FROM PROVIDER [AzureKeyVault_EKM]
     WITH PROVIDER_KEY_NAME = <new_key_from_key_vault>,
     CREATION_DISPOSITION = OPEN_EXISTING;
    
  4. Skapa en ny inloggning från den nya asymmetriska nyckeln:

    CREATE LOGIN <new_login_name>
    FROM ASYMMETRIC KEY <new_ekm_key_name>;
    
  5. Ta bort autentiseringsuppgifterna från huvudkontot:

    ALTER LOGIN [domain\username]
    DROP CREDENTIAL <new_credential_name>;
    
  6. Mappa AKV-autentiseringsuppgifter till den nya inloggningen:

    ALTER LOGIN <new_login_name>;
    ADD CREDENTIAL <new_credential_name>;
    
  7. Ändra databaskrypteringsnyckeln (DEK) för att kryptera om med den nya asymmetriska nyckeln:

    USE [databaseName];
    GO
    ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
    
  8. Du kan verifiera den nya asymmetriska nyckeln och krypteringsnyckeln som används i databasen:

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

    Det här fingeravtrycket ska matcha registernyckeln under sökvägen HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\<key_vault_url>\<thumbprint> och resultera i KeyUri för din roterade nyckel.

Viktig

Att rotera det logiska TDE-skyddet för en server innebär att växla till en ny asymmetrisk nyckel eller ett certifikat som skyddar databaskrypteringsnyckeln (DEK). Nyckelrotation är en onlineåtgärd och bör bara ta några sekunder att slutföra, eftersom detta bara dekrypterar och krypterar om DEK och inte hela databasen.

Ta inte bort tidigare versioner av nyckeln efter rotation. När nycklar roteras krypteras vissa data fortfarande med tidigare nycklar, till exempel äldre databassäkerhetskopior, säkerhetskopierade loggfiler, virtuella loggfiler (VLF) och transaktionsloggfiler. Tidigare nycklar kan också krävas för en databasåterställning eller en databasåterläggning.