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

GÄLLER FÖR: SQL Server på virtuella Azure-datorer

Det finns flera SQL Server för kryptering, till exempel transparent datakryptering (TDE),kryptering på kolumnnivå (CLE)och säkerhetskopieringskryptering. Dessa typer av kryptering kräver att du hanterar och lagrar de kryptografiska nycklar som du använder för kryptering. Tjänsten Azure Key Vault har utformats för att förbättra säkerheten och hanteringen av dessa nycklar på en säker plats med hög tillgång. Med SQL Server Connector kan SQL Server använda dessa nycklar från Azure Key Vault.

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

När den här funktionen är aktiverad installerar den automatiskt SQL Server Connector, konfigurerar EKM-providern för åtkomst till Azure Key Vault och skapar autentiseringsbehörigheten så att du kan komma åt ditt valv. 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 SQL Server virtuella datorn. När den här funktionen har slutfört den här konfigurationen kan du köra Instruktioner för Transact-SQL (T-SQL) för att börja kryptera dina databaser eller säkerhetskopior som vanligt.

Förbereda för AKV-integrering

Det finns flera Azure Key Vault för att använda Azure Key Vault för att konfigurera din virtuella SQL Server dator:

  1. Installera Azure PowerShell
  2. Skapa en Azure Active Directory
  3. Skapa ett nyckelvalv

I följande avsnitt beskrivs dessa krav och den information du behöver samla in för att senare köra PowerShell-cmdlets.

Anteckning

I den här artikeln används Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för att interagera 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 Azure Active Directory

Först måste du ha en Azure Active Directory (AAD) i din prenumeration. Bland många fördelar gör detta att du kan bevilja behörighet till ditt nyckelvalv för vissa användare och program.

Registrera sedan ett program med AAD. Då får du ett konto för tjänstens huvudnamn som har åtkomst till nyckelvalvet, vilket den virtuella datorn behöver. I Azure Key Vault-artikeln hittar du de här stegen i avsnittet Registrera ett program med Azure Active Directory, 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 registreringen som behövs senare när du aktiverar Azure Key Vault-integrering på din SQL virtuella dator.

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

    Program-ID:t

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

    AAD-hemlighet

  • Program-ID:t och hemligheten används också för att skapa autentiseringsuppgifter 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 Azure Key Vault översikt.

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 ställt in nyckelvalvet skapar du ett genom att följa stegen i Komma igång med Azure Key Vault artikeln. Innan du slutför de här stegen finns det viss information som du behöver samla in under den här installationen som behövs senare när du aktiverar Azure Key Vault-integrering på din SQL virtuella dator.

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

När du kommer till steget Skapa ett nyckelvalv noterar du den returnerade vaultUri-egenskapen, som är nyckelvalvs-URL:en. I exemplet som anges i det steget, som visas nedan, är nyckelvalvsnamnet ContosoKeyVault, och därför är nyckelvalvs-URL:en https://contosokeyvault.vault.azure.net/ .

Url:en för nyckelvalvet tilldelas senare till $akvURL i PowerShell-skriptet för att 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 i SQL Server senare.

Anteckning

EKM-providern (Extensible Key Management) version 1.0.4.0 installeras på den virtuella SQL Server-datorn via SQL-tillägget för infrastruktur som en tjänst (IaaS). Uppgradering SQL IaaS-tillägget uppdaterar inte providerversionen. Överväg att manuellt uppgradera EKM-providerversionen om det behövs (till exempel vid migrering till en SQL hanterad instans).

Aktivera och konfigurera Key Vault integrering

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

Nya virtuella datorer

Om du etablerar en SQL virtuell dator med Resource Manager tillhandahåller Azure Portal ett sätt att aktivera Azure Key Vault integrering. Funktionen Azure Key Vault är endast tillgänglig för enterprise-, utvecklar- och utvärderingsversionerna av SQL Server.

SQL Azure Key Vault-integrering

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

Befintliga virtuella datorer

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

SQL Key Vault integrering för befintliga virtuella datorer

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

Anteckning

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

Anteckning

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

Nästa steg

När du har aktiverat Azure Key Vault-integrering kan du aktivera SQL Server kryptering på den virtuella SQL-datorn. Först måste du skapa en asymmetrisk nyckel i ditt nyckel valv och en symmetrisk nyckel i SQL Server på den virtuella datorn. Sedan kommer du att kunna köra T-SQL-uttryck för att aktivera kryptering för dina databaser och säkerhets kopior.

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

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

Krav för exempel

Varje exempel baseras på de två förutsättningarna: en asymmetrisk nyckel från ditt nyckel valv som kallas CONTOSO_KEY och en autentiseringsuppgift som skapats av AKV-integrations funktionen som kallas Azure_EKM_cred. Följande Transact-SQL-kommandon ställer in dessa krav 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 databas motorn för TDE och Lägg sedan till autentiseringsuppgiften till 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 den databas krypterings nyckel 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äkerhets kopior

  1. Skapa en SQL Server inloggning som ska användas av databas motorn för kryptering av säkerhets kopior och Lägg till autentiseringsuppgiften till 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 nyckel som lagras i nyckel valvet.

    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å kolumn nivå (CLE)

Det här skriptet skapar en symmetrisk nyckel som skyddas av den asymmetriska nyckeln i nyckel valvet 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 krypterings funktioner finns i använda EKM med SQL Server krypterings funktioner.

Observera att stegen i den här artikeln förutsätter att du redan har SQL Server som körs på en virtuell Azure-dator. Om inte, se etablera en SQL Server virtuell dator i Azure. Andra rikt linjer för att köra SQL Server på virtuella Azure-datorer finns SQL Server på azure Virtual Machines-översikt.