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:
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.
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.
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.
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):
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)
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
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
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
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.