Delen via


Sql Server TDE Extensible Key Management instellen met behulp van Azure Key Vault

van toepassing op:SQL Server-

In dit artikel installeert en configureert u de SQL Server-connector voor Azure Key Vault.

Opmerking

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

Extensible Key Management met behulp van Azure Key Vault (AKV) is beschikbaar voor SQL Server in Linux-omgevingen, te beginnen met SQL Server 2022 (16.x) Cumulatieve update 12. Volg dezelfde instructies, maar sla stap 3 en 4 over.

Vereiste voorwaarden

Voordat u Azure Key Vault met uw SQL Server-exemplaar gaat gebruiken, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:

Opmerking

In SQL Server 2022 (16.x) CU 14 en hoger ondersteunt SQL Server op Linux TDE Extensible Key Management met Azure Key Vault. Stap 3 en 4 in deze handleiding zijn niet vereist voor SQL Server in Linux.

Stap 1: Een Microsoft Entra-service-principal instellen

Als u uw SQL Server-exemplaar toegangsmachtigingen wilt verlenen aan uw Azure-sleutelkluis, hebt u een service-principal-account in Microsoft Entra-id nodig.

  1. Meld u aan bij Azure Portal en voer een van de volgende handelingen uit:

    • Selecteer de knop Microsoft Entra ID.

      Schermopname van het deelvenster Azure-services.

    • Selecteer Meer services en typ vervolgens in het deelvenster Alle servicesDe id van Microsoft Entra.

  2. Registreer een toepassing bij Microsoft Entra ID door het volgende te doen. Zie voor gedetailleerde stapsgewijze instructies de sectie Een identiteit ophalen voor de toepassingssectie van het Azure Key Vault-blogbericht, Azure Key Vault – Stapsgewijze instructies.

    1. Selecteer app-registraties in de sectie Beheren van uw Microsoft Entra-id-resource.

      Schermopname van de pagina Overzicht van Microsoft Entra-id in Azure Portal.

    2. Selecteer op de pagina App-registratiesNieuwe registratie.

      Schermopname van het deelvenster App-registraties in Azure Portal.

    3. Voer in het deelvenster Een toepassing registreren de gebruikersnaam voor de app in en selecteer Registreren.

      Schermopname van het deelvenster Een toepassing registreren.

    4. Selecteer in het linkerdeelvenster Certificaten en geheimen Clientgeheimen >> Nieuw clientgeheim.

      Schermopname van het deelvenster Certificaten en geheimen voor de app in Azure Portal.

    5. Voer onder Een clientgeheim toevoegen een beschrijving en een geschikte vervaldatum in en selecteer vervolgens Toevoegen. U kunt geen verloopperiode kiezen die langer is dan 24 maanden. Zie Een clientgeheim toevoegen voor meer informatie.

      Schermopname van de sectie Een clientgeheim toevoegen voor de app in Azure Portal.

    6. Selecteer in het deelvenster Certificaten en geheimen onder Waarde de knop Kopiëren naast de waarde van het clientgeheim dat moet worden gebruikt voor het maken van een asymmetrische sleutel in SQL Server.

      Schermopname van de geheime waarde in Azure Portal.

    7. Selecteer In het linkerdeelvenster Overzicht en kopieer in het vak Toepassings-id (client) de waarde die moet worden gebruikt voor het maken van een asymmetrische sleutel in SQL Server.

      Schermopname van de waarde van de toepassings-id (client) in het deelvenster Overzicht.

Stap 2: Een sleutelkluis maken

Selecteer de methode die u wilt gebruiken om een sleutelkluis te maken.

Een sleutelkluis maken met behulp van Azure Portal

U kunt de Azure-portal gebruiken om de sleutelkluis te maken en vervolgens een Microsoft Entra-hoofdgebruiker eraan toe te voegen.

  1. Maak een resourcegroep.

    Alle Azure-resources die u maakt via Azure Portal, moeten zijn opgenomen in een resourcegroep, die u maakt om uw sleutelkluis te huiseren. De resourcenaam in dit voorbeeld is DocsSampleRG. Kies uw eigen resourcegroep en sleutelkluisnaam, omdat alle namen van de sleutelkluis wereldwijd uniek moeten zijn.

    Voer in het deelvenster Een resourcegroep maken onder Projectdetails de waarden in en selecteer Beoordelen en maken.

    Schermopname van het deelvenster Een resourcegroep maken in Azure Portal.

  2. Zoek of selecteer in de Azure-portal de Key vaults-services om een sleutelkluis te maken. Klik op Creëren.

    Selecteer in het deelvenster Een sleutelkluis maken het tabblad Basisbeginselen . Voer de juiste waarden voor het tabblad in. We raden u ook aan om beveiliging tegen opschonen in te schakelen.

    Schermopname van het deelvenster Sleutelkluis maken in Azure Portal.

  3. Op het tabblad Toegangsconfiguratie hebt u de mogelijkheid om op rollen gebaseerd toegangsbeheer of kluistoegangsbeleid van Azure te selecteren. We bespreken beide opties, maar de optie voor Azure rolgebaseerd toegangsbeheer wordt aanbevolen. Zie het overzicht van het Access-model voor meer informatie.

    Schermopname van het deelvenster Sleutelkluis maken en het tabblad Access-configuratie in Azure Portal.

  4. U kunt het tabblad Netwerken standaard laten staan of u kunt de netwerkinstellingen voor de sleutelkluis configureren. Als u een firewall met de sleutelkluis gebruikt, moet de optie Vertrouwde Microsoft-services toestaan om de firewall te omzeilen zijn ingeschakeld, tenzij u privé-eindpuntverbindingen gebruikt. Zie Azure Key Vault-firewalls en virtuele netwerken configurerenvoor meer informatie.

  5. Selecteer Beoordelen + maken en maak de sleutelkluis aan.

Op rollen gebaseerd toegangsbeheer van Azure

De aanbevolen methode is om op rollen gebaseerd toegangsbeheer (RBAC) van Azure te gebruiken om machtigingen toe te wijzen aan de sleutelkluis. Met deze methode kunt u machtigingen toewijzen aan gebruikers, groepen en toepassingen op een gedetailleerder niveau. U kunt machtigingen toewijzen aan de sleutelkluis op het beheervlak (Azure-roltoewijzingen) en op het gegevensvlak (toegangsbeleid voor key vault). Als u alleen toegangsbeleid kunt gebruiken, kunt u deze sectie overslaan en naar de sectie Kluistoegangsbeleid gaan. Voor meer informatie over RBAC-machtigingen voor Azure Key Vault zie Azure ingebouwde rollen voor data plane-bewerkingen van Key Vault.

  1. Ga naar de sleutelkluisresource die u hebt gemaakt en selecteer de IAM-instelling (Access Control).

  2. Selecteer Toevoegen>Roltoewijzing toevoegen.

    Schermopname van de knop Roltoewijzing toevoegen in het deelvenster Toegangsbeheer (IAM) in Azure Portal.

  3. De EKM-toepassing heeft de rol Key Vault Crypto Service Encryption User nodig om omsluit- en ontsluitbewerkingen uit te voeren. Zoek naar Key Vault Crypto Service Encryption User en selecteer de rol. Kies Volgende.

    Schermopname van het selecteren van een roltoewijzing in Azure Portal.

  4. Selecteer op het tabblad Leden de optieLeden selecteren en zoek vervolgens naar de Microsoft Entra-toepassing die u in stap 1 hebt gemaakt. Selecteer de toepassing en vervolgens de knop Selecteren .

    Schermopname van het deelvenster Leden selecteren voor het toevoegen van een roltoewijzing in Azure Portal.

  5. Selecteer Beoordelen en tweemaal toewijzen om de roltoewijzing te voltooien.

  6. De gebruiker die de sleutel maakt, heeft de rol Key Vault-beheerder nodig. Zoek naar Key Vault-beheerder en selecteer de rol. Kies Volgende.

  7. Net als in de vorige stappen voegt u het lid toe dat de sleutel maakt en wijst u de rol toe.

Toegangsbeleid voor kluis

Opmerking

Als u de optie op basis van op rollen gebaseerd toegangsbeheer van Azure gebruikt, kunt u deze sectie overslaan. Als u het machtigingsmodel wijzigt, kunt u dit doen door naar het toegangsconfiguratiemenu van de sleutelkluis te gaan. Zorg ervoor dat u over de juiste machtigingen beschikt om de sleutelkluis te beheren. Zie Azure RBAC-machtigingen inschakelen voor Key Vault voor meer informatie.

  1. Selecteer op het tabblad Toegangsconfiguratiekluistoegangsbeleid. Als u een bestaande sleutelkluis gebruikt, kunt u het menu Toegangsbeleid selecteren in de Key Vault-resource en Maken selecteren.

  2. Selecteer in het deelvenster Een toegangsbeleid maken de machtigingen Get en List uit de opties voor Sleutelbeheerbewerkingen. Selecteer Sleutel uitpakken en Sleutelmachtigingen verpakken in de opties voor cryptografische bewerkingen . Kies Volgende

    Schermopname van de koppeling Toegangsbeleid toevoegen in het deelvenster Toegangsbeleid.

  3. Selecteer op het tabblad Principal de toepassing die is gemaakt in stap 1.

    Schermopname van het zoekvak van de toepassing in het deelvenster Principal.

  4. Selecteer Volgende en vervolgens Maken.

Een sleutel maken

  1. Selecteer sleutels in het deelvenster Key Vault en selecteer vervolgens de optie Genereren/importeren. Hiermee opent u het deelvenster Een sleutel maken . Voer de naam van een sleutelkluis in. Selecteer de optie Genereren en voer een naam in voor de sleutel. De SQL Server-connector vereist dat de sleutelnaam alleen de tekens 'a-z', 'A-Z', '0-9' en '-' met een limiet van 26 tekens gebruikt.

  2. Gebruik het sleuteltype RSA en RSA-sleutelgrootte als 2048. EKM ondersteunt momenteel alleen een RSA-sleutel. Stel de activerings- en vervaldatums zo nodig in en stel Ingeschakeld in op Ja.

    Schermopname van het deelvenster Sleutel maken.

Beste praktijken

Om snel sleutelherstel te garanderen en toegang te krijgen tot uw gegevens buiten Azure, raden we de volgende aanbevolen procedures aan:

  • Maak uw versleutelingssleutel lokaal op een lokaal HSM-apparaat (Hardware Security Module). Zorg ervoor dat u een asymmetrische RSA 2048- of 3072-sleutel gebruikt, zodat deze wordt ondersteund door SQL Server.

  • Importeer de versleutelingssleutel in uw Azure-sleutelkluis. Dit proces wordt beschreven in de volgende secties.

  • Voordat u de sleutel in uw Azure-sleutelkluis voor de eerste keer gebruikt, voert u een back-up van een Azure-sleutelkluis uit met behulp van de Backup-AzureKeyVaultKey PowerShell-cmdlet.

  • Wanneer u wijzigingen aanbrengt in de sleutel (bijvoorbeeld het toevoegen van ACL's, tags of sleutelkenmerken), moet u een andere back-up van de Azure-sleutelkluis uitvoeren.

    Opmerking

    Het maken van een back-up van een sleutel is een Azure Key Vault-sleutelbewerking die een bestand retourneert dat overal kan worden opgeslagen.

    Het gebruik van de SQL Server-connector voor Azure Key Vault achter een firewall of proxyserver kan van invloed zijn op de prestaties als het verkeer is vertraagd of geblokkeerd. Maak jezelf vertrouwd met Access Azure Key Vault die zich achter een firewall bevindt om te garanderen dat de juiste regels aanwezig zijn.

Optioneel: een beheerde HSM van Azure Key Vault configureren (hardwarebeveiligingsmodule)

Beheerde HSM van Azure Key Vault (Hardware Security Module) wordt ondersteund voor SQL Server en SQL Server op Azure Virtual Machines (VM's) bij gebruik van de nieuwste versie van de SQL Server-connector en Azure SQL. Beheerde HSM is een volledig beheerde, maximaal beschikbare HSM-service met één tenant. Beheerde HSM biedt een veilige basis voor cryptografische bewerkingen en sleutelopslag. Beheerde HSM is ontworpen om te voldoen aan de strengste beveiligings- en nalevingsvereisten.

In stap 2 hebt u geleerd hoe u een sleutelkluis en sleutel maakt in Azure Key Vault. U kunt eventueel een beheerde HSM van Azure Key Vault gebruiken om een sleutel op te slaan of te maken die moet worden gebruikt met de SQL Server-connector. Dit zijn de stappen:

  1. Maak een door Azure Key Vault beheerde HSM. U kunt dit doen met behulp van Azure Portal door te zoeken naar de beheerde HSM-service van Azure Key Vault en de nieuwe resource te maken, of door de Azure CLI, PowerShell of een ARM-sjabloon te gebruiken.

  2. Activeer de beheerde HSM. Alleen de aangewezen beheerders die zijn toegewezen tijdens het maken van de beheerde HSM, kunnen de HSM activeren. U kunt dit doen door de beheerde HSM-resource in Azure Portal te selecteren door Beveiligingsdomein downloaden te selecteren in het menu Overzicht van de resource. Volg vervolgens een van de quickstarts om uw beheerde HSM te activeren.

  3. Verken machtigingen voor de Microsoft Entra-service-principal voor toegang tot de beheerde HSM. De rol Beheerde HSM-beheerder geeft geen machtigingen om een sleutel te maken. Net als bij stap 2 heeft de EKM-toepassing de rol Managed HSM Crypto User of Managed HSM Crypto Service Encryption User nodig om wrap- en uitpakbewerkingen uit te voeren. Kies het ondernemingstoepassingstype bij het toevoegen van de principal voor de roltoewijzing. Zie Ingebouwde rollen voor lokale RBAC voor beheerde HSM voor meer informatie.

  4. Selecteer Sleutels in het menu beheerde HSM-service van Azure Key Vault onder Instelling. Selecteer in het venster Sleutelsde optie Back-up genereren/importeren/herstellen om een sleutel te maken of een bestaande sleutel te importeren.

    Opmerking

    Wanneer u een referentie aanmaakt voor toegang tot de beheerde HSM, is de identiteit <name of Managed HSM>.managedhsm.azure.net, die u kunt vinden in het overzicht van de beheerde HSM van Azure Key Vault als de HSM-URI in de Azure Portal.

    Algoritme RSA-HSM_2048 en RSA-HSM_3072 worden ondersteund vanaf SQL Server 2022 (16.x).

    Automatische sleutelrotatie wordt ondersteund in beheerde HSM van Azure Key Vault. Zie Automatische rotatie van sleutels configureren in Azure Managed HSM voor meer informatie.

    SQL Server Connector versie 15.0.2000.440 of hoger is vereist voor de ondersteuning van door Azure Key Vault beheerde HSM.

    Beheerde HSM ondersteunt privé-eindpuntverbindingen. Voor meer informatie, zie Integrate Managed HSM with Azure Private Link. In deze configuratie moet de optie voor het overslaan van vertrouwde services van Microsoft zijn ingeschakeld voor de door Azure Key Vault beheerde HSM-netwerkinstelling.

Stap 3: De SQL Server-connector installeren

Download de SQL Server-connector via het Microsoft Downloadcentrum. De download moet worden uitgevoerd door de beheerder van de SQL Server-computer.

Opmerking

  • SQL Server Connector-versies 1.0.0.440 en ouder zijn vervangen en worden niet meer ondersteund in productieomgevingen en met behulp van de instructies op de pagina Onderhoud en probleemoplossing van SQL Server Connector onder Upgrade van SQL Server Connector.
  • Vanaf versie 1.0.3.0 rapporteert de SQL Server-connector relevante foutberichten aan de Windows-gebeurtenislogboeken voor probleemoplossing.
  • Vanaf versie 1.0.4.0 is er ondersteuning voor privéclouds van Azure, waaronder Azure beheerd door 21Vianet, Azure Duitsland en Azure Government.
  • Er is een belangrijke wijziging in versie 1.0.5.0 in termen van het vingerafdrukalgoritmen. Mogelijk ondervindt u databaseherstelfouten na een upgrade naar 1.0.5.0. Zie KB-artikel 447099 voor meer informatie.
  • Vanaf versie 1.0.5.0 (TimeStamp: september 2020) ondersteunt de SQL Server-connector het filteren van berichten en logica voor opnieuw proberen van netwerkaanvragen.
  • Vanaf bijgewerkte versie 1.0.5.0 (TimeStamp: november 2020) ondersteunt de SQL Server-connector RSA 2048, RSA 3072, RSA-HSM 2048 en RSA-HSM 3072-sleutels.
  • Vanaf bijgewerkte versie 1.0.5.0 (TimeStamp: november 2020) kunt u verwijzen naar een specifieke sleutelversie in Azure Key Vault.

Schermopname van de installatiewizard van SQL Server Connector.

De connector is standaard geïnstalleerd op C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault. Deze locatie kan tijdens de installatie worden gewijzigd. Als u dit wel wijzigt, past u de scripts in de volgende sectie aan.

Er is geen interface voor de Connector, maar als deze correct is geïnstalleerd, wordt de Microsoft.AzureKeyVaultService.EKM.dll op de computer geïnstalleerd. Deze assembly is de dll van de cryptografische EKM-provider die moet worden geregistreerd bij SQL Server met behulp van de CREATE CRYPTOGRAPHIC PROVIDER instructie.

Met de installatie van de SQL Server-connector kunt u desgewenst voorbeeldscripts voor SQL Server-versleuteling downloaden.

Als u uitleg over foutcodes, configuratie-instellingen of onderhoudstaken voor de SQL Server-connector wilt bekijken, raadpleegt u:

Stap 4: Registersleutel toevoegen ter ondersteuning van EKM-provider

Waarschuwing

Het wijzigen van het register moet worden uitgevoerd door gebruikers die precies weten wat ze doen. Er kunnen ernstige problemen optreden als u het register onjuist wijzigt. Maak voor extra beveiliging een back-up van het register voordat u het wijzigt. U kunt het register herstellen als er een probleem optreedt.

Het register moet worden gewijzigd door de beheerder van de SQL Server-computer.

  1. Zorg ervoor dat SQL Server is geïnstalleerd en wordt uitgevoerd.

  2. Voer regedit uit om de Register-editor te openen.

  3. Maak een SQL Server Cryptographic Provider registersleutel op HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft. Het volledige pad is HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  4. Klik met de rechtermuisknop op de SQL Server Cryptographic Provider registersleutel en selecteer Machtigingen.

  5. Geef machtigingen voor volledig beheer op de SQL Server Cryptographic Provider registersleutel aan het gebruikersaccount waarop de SQL Server-service wordt uitgevoerd.

    Schermopname van de EKM-registersleutel in de Register-editor.

  6. Selecteer toepassen en selecteer vervolgens OK.

  7. Sluit de Register-editor en start de SQL Server-service opnieuw.

    Opmerking

    Als u TDE gebruikt met EKM of Azure Key Vault op een failoverclusterexemplaar, moet u een extra stap uitvoeren om HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider toe te voegen aan de clusterregister-controlepuntroutine, zodat het register kan synchroniseren tussen de knooppunten. Synchronisatie vereenvoudigt het herstel van databases na failover en sleutelrotatie.

    Voer in PowerShell de volgende opdracht uit om de registersleutel toe te voegen aan de routine clusterregistercontrolepunt:

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

Stap 5: SQL Server configureren

Zie B. Veelgestelde vragen voor een opmerking over de minimale machtigingsniveaus die nodig zijn voor elke actie in deze sectie.

De master database configureren

  1. Voer sqlcmd uit of open SQL Server Management Studio.

  2. Configureer SQL Server voor het gebruik van EKM door het volgende Transact-SQL script uit te voeren:

    -- 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. Registreer de SQL Server-connector als een EKM-provider bij SQL Server.

    Maak een cryptografische provider met behulp van de SQL Server-connector, een EKM-provider voor De Azure Key Vault. In dit voorbeeld is AzureKeyVault_EKMde naam van de provider.

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

    Opmerking

    De lengte van het bestandspad mag niet langer zijn dan 256 tekens.

  4. Stel een SQL Server-referentie in voor een SQL Server-aanmelding om de sleutelkluis te gebruiken.

    Er moet een referentie worden toegevoegd aan elke aanmelding die versleuteling uitvoert met behulp van een sleutel uit de sleutelkluis. Denk hierbij bijvoorbeeld aan:

    • Een SQL Server-beheerdersaanmelding die gebruikmaakt van de sleutelkluis voor het instellen en beheren van SQL Server-versleutelingsscenario's.

    • Andere SQL Server-aanmeldingen die TDE of andere SQL Server-versleutelingsfuncties mogelijk mogelijk maken.

    Er is een een-op-een-overeenkomst tussen inloggegevens en aanmeldingen. Dat wil zeggen, elke aanmelding moet een unieke credentaal hebben.

    Wijzig dit Transact-SQL script op de volgende manieren:

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

      • Als u globale Azure gebruikt, vervangt u het IDENTITY argument door de naam van uw Azure Key Vault uit stap 2: Een sleutelkluis maken.
      • Als u een privé-Azure-cloud 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 stap 3 van de sectie Een sleutelkluis en sleutel maken met behulp van powerShell . Neem https:// niet op in de sleutelkluis-URI.
    • Vervang het eerste deel van het SECRET argument door de Microsoft Entra-client-id uit stap 1: Een Microsoft Entra-service-principal instellen. In dit voorbeeld is de client-IDd956f6b9xxxxxxx.

      Belangrijk

      Verwijder de afbreekstreepjes uit de app-id (client).

    • Voltooi het tweede deel van het SECRET argument met clientgeheim uit stap 1: Een Microsoft Entra-service-principal instellen. In dit voorbeeld is yrA8X~PldtMCvUZPxxxxxxxxhet clientgeheim . De laatste tekenreeks voor het SECRET argument is een lange reeks letters en cijfers, zonder afbreekstreepjes (met uitzondering van de sectie Clientgeheim, voor het geval het clientgeheim afbreekstreepjes bevat).

      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;
      

    Zie CREATE CREDENTIAL voor een voorbeeld van het gebruik van variabelen voor het CREATE CREDENTIAL argument en programmatisch het verwijderen van de afbreekstreepjes uit de client-id.

  5. Open uw Azure Key Vault-sleutel in uw SQL Server-exemplaar.

    Of u nu een nieuwe sleutel hebt gemaakt of een asymmetrische sleutel hebt geïmporteerd, zoals beschreven in stap 2: Een sleutelkluis maken, moet u de sleutel openen. Open deze door uw sleutelnaam op te geven in het volgende Transact-SQL script.

    Belangrijk

    Zorg ervoor dat u eerst de registervereisten voor deze stap voltooit.

    • Vervang EKMSampleASYKey door de naam die u wilt hebben in SQL Server.
    • Vervang ContosoRSAKey0 door de naam van uw sleutel in uw Azure Key Vault of beheerde HSM. Hieronder ziet u een voorbeeld van een versieloze sleutel.
    CREATE ASYMMETRIC KEY EKMSampleASYKey
    FROM PROVIDER [AzureKeyVault_EKM]
    WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
    CREATION_DISPOSITION = OPEN_EXISTING;
    

    Vanaf bijgewerkte versie 1.0.5.0 van de SQL Server-connector kunt u verwijzen naar een specifieke sleutelversie in Azure Key Vault:

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

    In het voorgaande voorbeeldscript vertegenwoordigt 1a4d3b9b393c4678831ccc60def75379 de specifieke versie van de sleutel, die wordt gebruikt. Als u dit script gebruikt, maakt het niet uit of u de sleutel bijwerkt met een nieuwe versie. De sleutelversie (bijvoorbeeld) 1a4d3b9b393c4678831ccc60def75379 wordt altijd gebruikt voor databasebewerkingen.

  6. Maak een nieuwe aanmelding met behulp van de asymmetrische sleutel in SQL Server die u in de vorige stap hebt gemaakt.

    --Create a Login that will associate the asymmetric key to this login
    CREATE LOGIN TDE_Login
    FROM ASYMMETRIC KEY EKMSampleASYKey;
    
  7. Maak een nieuwe aanmelding vanaf de asymmetrische sleutel in SQL Server. Verwijder de referentietoewijzing uit stap 5: Configureer SQL Server zodat de referenties aan de nieuwe inlog kunnen worden toegewezen.

    --Now drop the credential mapping from the original association
    ALTER LOGIN [<domain>\<login>]
    DROP CREDENTIAL sysadmin_ekm_cred;
    
  8. Wijzig de nieuwe login en koppel de EKM-referenties aan de nieuwe login.

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

De gebruikersdatabase configureren die moet worden versleuteld

  1. Maak een testdatabase die wordt versleuteld met de Azure Key Vault-sleutel.

    --Create a test database that will be encrypted with the Azure Key Vault key
    CREATE DATABASE TestTDE;
    
  2. Maak een databaseversleutelingssleutel met behulp van de 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. Versleutel de testdatabase. Schakel TDE in door de instelling in te stellen ENCRYPTION ON.

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

Registergegevens

  1. Voer de volgende Transact-SQL query uit in de master database om de gebruikte asymmetrische sleutel weer te geven.

    SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;
    

    De verklaring retourneert:

    name            algorithm_desc    thumbprint
    EKMSampleASYKey RSA_2048          <key thumbprint>
    
  2. Voer in de gebruikersdatabase (TestTDE) de volgende Transact-SQL query uit om de gebruikte versleutelingssleutel weer te geven.

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

    De verklaring retourneert:

    encryptor_type encryption_state_desc encryptor_thumbprint
    ASYMMETRIC KEY ENCRYPTED             <key thumbprint>
    

Schoonmaken

  1. De testobjecten opschonen. Verwijder alle objecten die in dit testscript zijn gemaakt.

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

    Zie de blog op SQL Server Transparent Data Encryption en Extensible Key Management met Azure Key Vault voor voorbeeldscripts.

  2. De SQL Server Cryptographic Provider registersleutel wordt niet automatisch opgeschoond nadat een sleutel of alle EKM-sleutels zijn verwijderd. Het moet handmatig worden opgeschoond. Het opschonen van de registersleutel moet uiterst voorzichtig worden uitgevoerd, omdat het opschonen van het register voortijdig de EKM-functionaliteit kan verbreken. Om de registersleutel op te schonen, verwijder de SQL Server Cryptographic Provider registersleutel op HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.

Probleemoplossingsproces

Als de registersleutel HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider niet is gemaakt of als de vereiste machtigingen niet worden verleend, mislukt de volgende DDL-instructie:

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)

Clientgeheimen die bijna verlopen

Als de referentie een clientgeheim heeft dat bijna verloopt, kan er een nieuw geheim worden toegewezen aan de referentie.

  1. Werk het geheim bij dat oorspronkelijk is gemaakt in stap 1: Een Microsoft Entra-service-principal instellen.

  2. Wijzig de inloggegevens met dezelfde identiteit en een nieuw geheim met behulp van de volgende code. Vervang <New Secret> door uw nieuwe geheim:

    ALTER CREDENTIAL sysadmin_ekm_cred
    WITH IDENTITY = 'DocsSampleEKMKeyVault',
    SECRET = '<New Secret>';
    
  3. Start de SQL Server-service opnieuw op.

Opmerking

Als u EKM in een beschikbaarheidsgroep (AG) gebruikt, moet u de referentie wijzigen en de SQL Server-service opnieuw starten op alle knooppunten van de beschikbaarheidsgroep.

Asymmetrische sleutel draaien met een nieuwe AKV-sleutel of een nieuwe AKV-sleutelversie

Opmerking

  • Bij het handmatig roteren van een AKV-sleutel ondersteunt SQL Server zowel een AKV-sleutel zonder versie als een versiegebonden AKV-sleutel en is het niet nodig om een andere AKV-sleutel te gebruiken.
  • De oorspronkelijke AKV-sleutel kan worden geroteerd, waardoor een nieuwe versie kan worden gemaakt die de vorige in SQL Server gemaakte sleutel kan vervangen.
  • Voor handmatige sleutelrotatie moet een nieuwe asymmetrische SQL Server-sleutel worden aangemaakt die verwijst naar de sleutel zonder versie of de versiesleutel die is geroteerd in AKV. Voor de nieuwe Asymmetrische SQL Server-sleutel wordt de AKV-sleutel zonder versie automatisch gekozen met behulp van de hoogste sleutelversie in AKV. Voor de versiesleutel moet u de hoogste versie in AKV aangeven met behulp van de syntaxis WITH PROVIDER_KEY_NAME = <key_name>/<version>. U kunt de versleutelingssleutel van de database wijzigen om opnieuw te versleutelen met de nieuwe asymmetrische sleutel. Dezelfde sleutelnaam (met versie of zonder versie) kan worden gebruikt met het AKV-rotatiebeleid. Voor een versiesleutel moet de huidige versie worden toegevoegd. Gebruik dezelfde sleutelnaam voor versieloze sleutels.

SQL Server heeft geen mechanisme voor het automatisch roteren van de asymmetrische sleutel die wordt gebruikt voor TDE. De stappen voor het handmatig roteren van een asymmetrische sleutel zijn als volgt.

  1. De inloggegevens die worden gebruikt in de initiële installatie (sysadmin_ekm_cred) kunnen ook worden hergebruikt voor de sleutelrotatie. Maak eventueel een nieuwe referentie voor de nieuwe asymmetrische sleutel.

    CREATE CREDENTIAL <new_credential_name>
        WITH IDENTITY = <key vault>,
        SECRET = 'existing/new secret'
        FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
    
  2. Voeg de referentie toe aan de principal:

    ALTER LOGIN [domain\userName];
    ADD CREDENTIAL <new_credential_name>;
    
  3. Maak de nieuwe asymmetrische sleutel op basis van de nieuwe sleutel (na het draaien van de sleutel). De nieuwe sleutel kan een versieloze sleutel zijn (ContosoRSAKey0 in ons voorbeeld) of een versiesleutel (ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379 waar 1a4d3b9b393c4678831ccc60def75379 is de versie van de bijgewerkte sleutel in 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. Maak een nieuwe aanmelding op basis van de nieuwe asymmetrische sleutel:

    CREATE LOGIN <new_login_name>
    FROM ASYMMETRIC KEY <new_ekm_key_name>;
    
  5. Verwijder de referentie van de principal.

    ALTER LOGIN [domain\username]
    DROP CREDENTIAL <new_credential_name>;
    
  6. AKV-referentie toewijzen aan de nieuwe inloggen.

    ALTER LOGIN <new_login_name>;
    ADD CREDENTIAL <new_credential_name>;
    
  7. Wijzig de databaseversleutelingssleutel (DEK) om opnieuw te versleutelen met de nieuwe asymmetrische sleutel:

    USE [databaseName];
    GO
    ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
    
  8. U kunt de nieuwe asymmetrische sleutel en de versleutelingssleutel controleren die in de database wordt gebruikt:

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

    Deze vingerafdruk moet overeenkomen met de registersleutel onder het pad HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\<key_vault_url>\<thumbprint> en u de KeyUri voor uw gedraaide sleutel geven.

Belangrijk

Het roteren van de logische TDE-beveiliging voor een server betekent dat u overschakelt naar een nieuwe asymmetrische sleutel of een nieuw certificaat dat de DATABASEversleutelingssleutel (DEK) beveiligt. Sleutelrotatie is een onlinebewerking en moet slechts enkele seconden duren, omdat dit alleen de DEK ontsleutelt en opnieuw versleutelt en niet de hele database.

Verwijder na rotatie geen eerdere versies van de sleutel. Wanneer sleutels worden geroteerd, worden sommige gegevens nog steeds versleuteld met de vorige sleutels, zoals oudere databaseback-ups, back-ups van logboekbestanden, virtuele logboekbestanden (VLF) en transactielogboekbestanden. Eerdere sleutels zijn mogelijk ook vereist voor een databaseherstel of een databaseterugzetting.