Azure Key Vault-integratie configureren voor SQL Server op Azure-VM's (Resource Manager)

Van toepassing op: SQL Server op Azure VM

Er zijn meerdere SQL Server-versleutelingsfuncties, zoals transparent data encryption (TDE), versleuteling op kolomniveau (CLE) en back-upversleuteling. Voor deze versleutelingsvormen moet u de cryptografische sleutels beheren en opslaan die u gebruikt voor versleuteling. De Azure Key Vault-service is ontworpen om de beveiliging en het beheer van deze sleutels op een veilige en maximaal beschikbare locatie te verbeteren. Met de SQL Server-Verbinding maken or kan SQL Server deze sleutels uit Azure Key Vault gebruiken.

Als u SQL Server on-premises uitvoert, zijn er stappen die u kunt volgen om toegang te krijgen tot Azure Key Vault vanuit uw on-premises SQL Server-exemplaar. Maar voor SQL Server op Azure-VM's kunt u tijd besparen met behulp van de azure Key Vault-integratiefunctie .

Notitie

De Integratie van Azure Key Vault is alleen beschikbaar voor de Enterprise-, Developer- en Evaluation-edities van SQL Server. Vanaf SQL Server 2019 wordt de Standard-editie ook ondersteund.

Wanneer deze functie is ingeschakeld, wordt de SQL Server-Verbinding maken or automatisch geïnstalleerd, wordt de EKM-provider geconfigureerd voor toegang tot Azure Key Vault en wordt de referentie gemaakt waarmee u toegang hebt tot uw kluis. Als u de stappen in de eerder genoemde on-premises documentatie hebt bekeken, kunt u zien dat deze functie stap 2 en 3 automatiseert. Het enige wat u nog handmatig moet doen, is door de sleutelkluis en sleutels te maken. Van daaruit wordt de volledige installatie van uw SQL Server-VM geautomatiseerd. Zodra deze functie deze installatie heeft voltooid, kunt u Transact-SQL-instructies (T-SQL) uitvoeren om uw databases of back-ups te versleutelen zoals u dat normaal zou doen.

Notitie

U kunt key vault-integratie ook configureren met behulp van een sjabloon. Zie de Azure-quickstartsjabloon voor Azure Key Vault-integratie voor meer informatie.

Voorbereiden op AKV-integratie

Als u Azure Key Vault-integratie wilt gebruiken om uw SQL Server-VM te configureren, zijn er verschillende vereisten:

  1. Azure PowerShell installeren
  2. Een Microsoft Entra-tenant maken
  3. Maak een sleutelkluis.

In de volgende secties worden deze vereisten beschreven en de informatie die u moet verzamelen om de PowerShell-cmdlets later uit te voeren.

Notitie

In dit artikel wordt gebruikgemaakt van de Azure Az PowerShell-module. Dit is de aanbevolen PowerShell-module voor interactie met Azure. Raadpleeg Azure PowerShell installeren om aan de slag te gaan met de Az PowerShell-module. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.

Installeer Azure PowerShell

Zorg ervoor dat u de nieuwste Azure PowerShell-module hebt geïnstalleerd. Zie Azure PowerShell installeren en configureren voor meer informatie.

Een toepassing registreren in uw Microsoft Entra-id

Eerst moet u een Microsoft Entra-tenant in uw abonnement hebben. Dit biedt u de mogelijkheid om uw sleutelkluis te machtigen voor bepaalde gebruikers en toepassingen.

Registreer vervolgens een toepassing bij Microsoft Entra-id. Hiermee krijgt u een service-principal-account dat toegang heeft tot uw sleutelkluis, die uw VM nodig heeft. In het azure Key Vault-artikel vindt u deze stappen in de sectie Een toepassing registreren bij Microsoft Entra ID . U kunt ook de stappen met schermopnamen bekijken in de sectie Een identiteit ophalen voor de toepassingssectie van dit blogbericht. Voordat u deze stappen uitvoert, moet u de volgende informatie verzamelen tijdens deze registratie die later nodig is wanneer u Azure Key Vault-integratie inschakelt op uw SQL-VM.

  • Nadat de toepassing is toegevoegd, zoekt u de toepassings-id (ook wel ClientID of AppID genoemd) op de blade Geregistreerde app . De toepassings-id wordt later toegewezen aan de parameter $spName (Service Principal Name) in het PowerShell-script om Azure Key Vault-integratie in te schakelen.

    Application ID

  • Kopieer tijdens deze stappen tijdens het maken van uw sleutel het geheim voor uw sleutel, zoals wordt weergegeven in de volgende schermopname. Dit sleutelgeheim wordt later toegewezen aan de parameter $spSecret (Service Principal Secret) in het PowerShell-script.

    AAD secret

  • De toepassings-id en het geheim worden ook gebruikt om een referentie te maken in SQL Server.

  • U moet deze nieuwe toepassings-id (of client-id) autoriseren om de volgende toegangsmachtigingen te hebben: ophalen, wrapKey, unwrapKey. Dit wordt gedaan met de cmdlet Set-AzKeyVaultAccessPolicy . Zie het overzicht van Azure Key Vault voor meer informatie.

Maak een sleutelkluis.

Als u Azure Key Vault wilt gebruiken om de sleutels op te slaan die u gebruikt voor versleuteling in uw virtuele machine, hebt u toegang nodig tot een sleutelkluis. Als u uw sleutelkluis nog niet hebt ingesteld, maakt u er een door de stappen te volgen in het artikel Aan de slag met Azure Key Vault . Voordat u deze stappen uitvoert, zijn er enkele gegevens die u moet verzamelen tijdens deze configuratie die later nodig is wanneer u Azure Key Vault-integratie inschakelt op uw SQL-VM.

New-AzKeyVault -VaultName 'ContosoKeyVault' -ResourceGroupName 'ContosoResourceGroup' -Location 'East Asia'

Wanneer u bij de stap Een sleutelkluis maken komt, noteert u de geretourneerde vaultUri-eigenschap , de URL van de sleutelkluis. In het voorbeeld in die stap, dat later wordt weergegeven, is de naam van de sleutelkluis ContosoKeyVault, dus de URL van de sleutelkluis zou zijn https://contosokeyvault.vault.azure.net/.

De URL van de sleutelkluis wordt later toegewezen aan de parameter $akvURL in het PowerShell-script om Azure Key Vault-integratie in te schakelen.

Nadat de sleutelkluis is gemaakt, moeten we een sleutel toevoegen aan de sleutelkluis. Deze sleutel wordt later verwezen wanneer we een asymmetrische sleutel maken in SQL Server.

Notitie

EKM-provider (Extensible Key Management) versie 1.0.4.0 is geïnstalleerd op de SQL Server-VM via de IaaS-extensie (Infrastructure as a Service). Als u de SQL IaaS Agent-extensie bijwerkt, wordt de providerversie niet bijgewerkt. Overweeg indien nodig de EKM-providerversie handmatig te upgraden (bijvoorbeeld wanneer u migreert naar een met SQL beheerd exemplaar).

Key Vault-integratie inschakelen en configureren

U kunt Key Vault-integratie inschakelen tijdens het inrichten of configureren voor bestaande VM's.

Nieuwe VM's

Als u een nieuwe virtuele SQL-machine inricht met Resource Manager, biedt Azure Portal een manier om Azure Key Vault-integratie in te schakelen.

SQL Azure Key Vault Integration

Zie Een virtuele SQL-machine inrichten in Azure Portal voor een gedetailleerd overzicht van het inrichten.

Bestaande VM's

Voor bestaande virtuele SQL-machines opent u de resource voor virtuele SQL-machines en selecteert u Beveiliging onder Instellingen. Selecteer Inschakelen om Azure Key Vault-integratie in te schakelen.

In de volgende schermopname ziet u hoe u Azure Key Vault inschakelt in de portal voor een bestaande SQL Server-VM (dit SQL Server-exemplaar maakt gebruik van een niet-standaardpoort 1401):

SQL Key Vault integration for existing VMs

Wanneer u klaar bent, selecteert u de knop Toepassen onderaan de pagina Beveiliging om uw wijzigingen op te slaan.

Notitie

De referentienaam die we hier hebben gemaakt, wordt later toegewezen aan een SQL-aanmelding. Hierdoor heeft de SQL-aanmelding toegang tot de sleutelkluis.

Nadat u Azure Key Vault-integratie hebt ingeschakeld, kunt u SQL Server-versleuteling inschakelen op uw SQL-VM. Eerst moet u een asymmetrische sleutel maken in uw sleutelkluis en een symmetrische sleutel in SQL Server op uw VIRTUELE machine. Vervolgens kunt u T-SQL-instructies uitvoeren om versleuteling in te schakelen voor uw databases en back-ups.

Er zijn verschillende vormen van versleuteling die u kunt gebruiken:

De volgende Transact-SQL-scripts bieden voorbeelden voor elk van deze gebieden.

Vereisten voor voorbeelden

Elk voorbeeld is gebaseerd op de twee vereisten: een asymmetrische sleutel uit uw sleutelkluis met de naam CONTOSO_KEY en een referentie die is gemaakt door de AKV-integratiefunctie met de naam Azure_EKM_cred. Met de volgende Transact-SQL-opdrachten worden deze vereisten ingesteld voor het uitvoeren van de voorbeelden.

USE master;
GO

--create credential
--The <<SECRET>> here requires the <Application ID> (without hyphens) and <Secret> to be passed together without a space between them.
CREATE CREDENTIAL Azure_EKM_cred
    WITH IDENTITY = 'keytestvault', --keyvault
    SECRET = '<<SECRET>>'
FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;


--Map the credential to a SQL login that has sysadmin permissions. This allows the SQL login to access the key vault when creating the asymmetric key in the next step.
ALTER LOGIN [SQL_Login]
ADD CREDENTIAL Azure_EKM_cred;


CREATE ASYMMETRIC KEY CONTOSO_KEY
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'KeyName_in_KeyVault',  --The key name here requires the key we created in the key vault
CREATION_DISPOSITION = OPEN_EXISTING;

TDE (Transparent Data Encryption)

  1. Maak een SQL Server-aanmelding die moet worden gebruikt door de Database Engine voor TDE en voeg vervolgens de referentie eraan toe.

    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 EKM_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 EKM_Login
    ADD CREDENTIAL Azure_EKM_cred;
    GO
    
  2. Maak de databaseversleutelingssleutel die wordt gebruikt voor TDE.

    USE ContosoDatabase;
    GO
    
    CREATE DATABASE ENCRYPTION KEY 
    WITH ALGORITHM = AES_128 
    ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the database to enable transparent data encryption.
    ALTER DATABASE ContosoDatabase
    SET ENCRYPTION ON;
    GO
    

Versleutelde back-ups

  1. Maak een SQL Server-aanmelding die door de database-engine moet worden gebruikt voor het versleutelen van back-ups en voeg de referentie eraan toe.

    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 EKM_Login
    FROM ASYMMETRIC KEY CONTOSO_KEY;
    GO
    
    -- Alter the Encrypted Backup Login to add the credential for use by
    -- the Database Engine to access the key vault
    ALTER LOGIN EKM_Login
    ADD CREDENTIAL Azure_EKM_cred ;
    GO
    
  2. Maak een back-up van de database die versleuteling opgeeft met de asymmetrische sleutel die is opgeslagen in de sleutelkluis.

    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]);
    GO
    

Versleuteling op kolomniveau (CLE)

Met dit script maakt u een symmetrische sleutel die wordt beveiligd door de asymmetrische sleutel in de sleutelkluis en gebruikt u vervolgens de symmetrische sleutel om gegevens in de database te versleutelen.

CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY;

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;

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

Aanvullende bronnen

Zie EKM gebruiken met SQL Server-versleutelingsfuncties voor meer informatie over het gebruik van deze versleutelingsfuncties.

Houd er rekening mee dat in de stappen in dit artikel wordt ervan uitgegaan dat SQL Server al wordt uitgevoerd op een virtuele Azure-machine. Zie Een virtuele SQL Server-machine inrichten in Azure. Zie Overzicht van SQL Server op Virtuele Azure-machines voor andere richtlijnen voor het uitvoeren van SQL Server op Virtuele Azure-machines.

Volgende stappen

Raadpleeg beveiligingsoverwegingen voor SQL Server op Azure-VM's voor meer beveiligingsinformatie.