Konfigurera Azure Key Vault-integrering för SQL Server på virtuella Azure-datorer (Resource Manager)

Gäller för:SQL Server på en virtuell Azure-dator

Det finns flera SQL Server-krypteringsfunktioner, till exempel transparent datakryptering (TDE), kryptering på kolumnnivå (CLE) och kryptering för säkerhetskopiering. Dessa former av kryptering kräver att du hanterar och lagrar de kryptografiska nycklar som du använder för kryptering. Azure Key Vault-tjänsten är utformad för att förbättra säkerheten och hanteringen av dessa nycklar på en säker och högtillgänglig plats. SQL Server-Anslut eller gör det möjligt för SQL Server att använda dessa nycklar från Azure Key Vault.

Om du kör SQL Server lokalt finns det steg du kan följa för att komma åt Azure Key Vault från din lokala SQL Server-instans. Men för SQL Server på virtuella Azure-datorer kan du spara tid med hjälp av Azure Key Vault-integreringsfunktionen.

Kommentar

Azure Key Vault-integreringen är endast tillgänglig för enterprise-, utvecklar- och utvärderingsversionerna av SQL Server. Från och med SQL Server 2019 stöds även Standard Edition.

När den här funktionen är aktiverad installerar den automatiskt SQL Server-Anslut eller, konfigurerar EKM-providern för åtkomst till Azure Key Vault och skapar autentiseringsuppgifterna så att du kan komma åt valvet. Om du har tittat på stegen i den tidigare nämnda lokala dokumentationen kan du se att den här funktionen automatiserar steg 2 och 3. Det enda du fortfarande behöver göra manuellt är att skapa nyckelvalvet och nycklarna. Därifrån automatiseras hela konfigurationen av den virtuella SQL Server-datorn. När den här funktionen har slutfört den här installationen kan du köra Transact-SQL-instruktioner (T-SQL) för att börja kryptera dina databaser eller säkerhetskopior som vanligt.

Kommentar

Du kan också konfigurera Key Vault-integrering med hjälp av en mall. Mer information finns i Azure-snabbstartsmall för Azure Key Vault-integrering.

Förbereda för AKV-integrering

Om du vill använda Azure Key Vault-integrering för att konfigurera din virtuella SQL Server-dator finns det flera krav:

  1. Installera Azure PowerShell
  2. Skapa en Microsoft Entra-klientorganisation
  3. Skapa ett nyckelvalv

I följande avsnitt beskrivs dessa förutsättningar och den information du behöver samla in för att senare köra PowerShell-cmdletarna.

Kommentar

Den här artikeln använder Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för interaktion med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Installera Azure PowerShell

Kontrollera att du har installerat den senaste Azure PowerShell-modulen. Mer information finns i Installera och konfigurera Azure PowerShell.

Registrera ett program i ditt Microsoft Entra-ID

Först måste du ha en Microsoft Entra-klientorganisation i din prenumeration. Bland många fördelar kan du bevilja behörighet till ditt nyckelvalv för vissa användare och program.

Registrera sedan ett program med Microsoft Entra-ID. Detta ger dig ett konto för tjänstens huvudnamn som har åtkomst till ditt nyckelvalv, som den virtuella datorn behöver. I artikeln Azure Key Vault hittar du de här stegen i avsnittet Registrera ett program med Microsoft Entra-ID, eller så kan du se stegen med skärmbilder i avsnittet Hämta en identitet för programmet i det här blogginlägget. Innan du slutför de här stegen måste du samla in följande information under den här registreringen som behövs senare när du aktiverar Azure Key Vault-integrering på din virtuella SQL-dator.

  • När programmet har lagts till letar du reda på program-ID :t (även kallat ClientID eller AppID) på bladet Registrerad app . Program-ID:t tilldelas senare till parametern $spName (tjänstens huvudnamn) i PowerShell-skriptet för att aktivera Azure Key Vault-integrering.

    Application ID

  • Under de här stegen när du skapar din nyckel kopierar du hemligheten för din nyckel som visas i följande skärmbild. Den här nyckelhemligheten tilldelas senare till parametern $spSecret (tjänstens huvudnamnshemlighet) i PowerShell-skriptet.

    AAD secret

  • Program-ID:t och hemligheten används också för att skapa en autentiseringsuppgift i SQL Server.

  • Du måste auktorisera detta nya program-ID (eller klient-ID) för att ha följande åtkomstbehörigheter: get, wrapKey, unwrapKey. Detta görs med cmdleten Set-AzKeyVaultAccessPolicy . Mer information finns i Översikt över Azure Key Vault.

Skapa ett nyckelvalv

För att kunna använda Azure Key Vault för att lagra de nycklar som du ska använda för kryptering på den virtuella datorn behöver du åtkomst till ett nyckelvalv. Om du inte redan har konfigurerat ditt nyckelvalv skapar du ett genom att följa stegen i artikeln Komma igång med Azure Key Vault . Innan du slutför de här stegen finns det viss information som du behöver samla in under den här konfigurationen som behövs senare när du aktiverar Azure Key Vault-integrering på din virtuella SQL-dator.

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

När du kommer till steget Skapa ett nyckelvalv noterar du egenskapen returnerade vaultUri , som är url:en för nyckelvalvet. I exemplet i det steget, som visas senare, är nyckelvalvets namn ContosoKeyVault, och därför skulle nyckelvalvs-URL:en vara https://contosokeyvault.vault.azure.net/.

Url:en för nyckelvalvet tilldelas senare till parametern $akvURL i PowerShell-skriptet för att aktivera Azure Key Vault-integrering.

När nyckelvalvet har skapats måste vi lägga till en nyckel i nyckelvalvet. Den här nyckeln refereras när vi skapar en asymmetrisk nyckel som skapas i SQL Server senare.

Kommentar

Utökningsbar nyckelhanteringsprovider (EKM) version 1.0.4.0 installeras på den virtuella SQL Server-datorn via IaaS-tillägget (SQL Infrastructure as a Service). Om du uppgraderar SQL IaaS Agent-tillägget uppdateras inte providerversionen. Överväg att uppgradera EKM-providerversionen manuellt om det behövs (till exempel när du migrerar till en SQL Managed Instance).

Aktivera och konfigurera Key Vault-integrering

Du kan aktivera Key Vault-integrering under etableringen eller konfigurera den för befintliga virtuella datorer.

Nya virtuella datorer

Om du etablerar en ny virtuell SQL-dator med Resource Manager tillhandahåller Azure-portalen ett sätt att aktivera Azure Key Vault-integrering.

SQL Azure Key Vault Integration

En detaljerad genomgång av etablering finns i Etablera en virtuell SQL-dator i Azure-portalen.

Befintliga virtuella datorer

För befintliga virtuella SQL-datorer öppnar du resursen för virtuella SQL-datorer och väljer Säkerhet under Inställningar. Välj Aktivera för att aktivera Azure Key Vault-integrering.

Följande skärmbild visar hur du aktiverar Azure Key Vault i portalen för en befintlig virtuell SQL Server-dator (den här SQL Server-instansen använder en port 1401 som inte är standard):

SQL Key Vault integration for existing VMs

När du är klar väljer du knappen Använd längst ned på sidan Säkerhet för att spara ändringarna.

Kommentar

Namnet på autentiseringsuppgifterna som vi skapade här mappas till en SQL-inloggning senare. Detta gör att SQL-inloggningen kan komma åt nyckelvalvet.

När du har aktiverat Azure Key Vault-integrering kan du aktivera SQL Server-kryptering på din virtuella SQL-dator. Först måste du skapa en asymmetrisk nyckel i nyckelvalvet och en symmetrisk nyckel i SQL Server på den virtuella datorn. Sedan kan du köra T-SQL-instruktioner för att aktivera kryptering för dina databaser och säkerhetskopior.

Det finns flera typer av kryptering som du kan dra nytta av:

Följande Transact-SQL-skript innehåller exempel för vart och ett av dessa områden.

Förutsättningar för exempel

Varje exempel baseras på de två förutsättningarna: en asymmetrisk nyckel från ditt nyckelvalv med namnet CONTOSO_KEY och en autentiseringsuppgift som skapats av AKV-integreringsfunktionen med namnet Azure_EKM_cred. Följande Transact-SQL-kommandon konfigurerar dessa förutsättningar för att köra exemplen.

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;

Transparent datakryptering (TDE)

  1. Skapa en SQL Server-inloggning som ska användas av databasmotorn för TDE och lägg sedan till autentiseringsuppgifterna i den.

    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. Skapa databaskrypteringsnyckeln som ska användas för 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
    

Krypterade säkerhetskopior

  1. Skapa en SQL Server-inloggning som ska användas av databasmotorn för kryptering av säkerhetskopior och lägg till autentiseringsuppgifterna i den.

    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. Säkerhetskopiera databasen som anger kryptering med den asymmetriska nyckeln som lagras i nyckelvalvet.

    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
    

Kryptering på kolumnnivå (CLE)

Det här skriptet skapar en symmetrisk nyckel som skyddas av den asymmetriska nyckeln i nyckelvalvet och använder sedan den symmetriska nyckeln för att kryptera data i databasen.

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;

Ytterligare resurser

Mer information om hur du använder dessa krypteringsfunktioner finns i Använda EKM med SQL Server-krypteringsfunktioner.

Observera att stegen i den här artikeln förutsätter att SQL Server redan körs på en virtuell Azure-dator. Om inte kan du läsa Etablera en virtuell SQL Server-dator i Azure. Mer information om hur du kör SQL Server på virtuella Azure-datorer finns i Översikt över SQL Server på virtuella Azure Windows-datorer.

Nästa steg

Mer säkerhetsinformation finns i Säkerhetsöverväganden för SQL Server på virtuella Azure-datorer.