Konfigurace integrace služby Azure Key Vault pro SQL Server na virtuálních počítačích Azure (Resource Manager)

Platí pro:SQL Server na virtuálním počítači Azure

Existuje několik funkcí šifrování SQL Serveru, jako je transparentní šifrování dat (TDE), šifrování na úrovni sloupce (CLE) a šifrování záloh. Tyto formy šifrování vyžadují správu a ukládání kryptografických klíčů, které používáte k šifrování. Služba Azure Key Vault je navržená tak, aby zlepšila zabezpečení a správu těchto klíčů v zabezpečeném a vysoce dostupném umístění. Sql Server Připojení or umožňuje SQL Serveru používat tyto klíče ze služby Azure Key Vault.

Pokud používáte SQL Server místně, můžete postupovat podle kroků pro přístup ke službě Azure Key Vault z místní instance SQL Serveru. Pro SQL Server na virtuálních počítačích Azure ale můžete ušetřit čas pomocí funkce integrace služby Azure Key Vault.

Poznámka:

Integrace služby Azure Key Vault je dostupná jenom pro edice Enterprise, Developer a Evaluation Serveru. Počínaje SQL Serverem 2019 se podporuje také edice Standard.

Pokud je tato funkce povolená, automaticky nainstaluje sql Server Připojení or, nakonfiguruje zprostředkovatele EKM pro přístup ke službě Azure Key Vault a vytvoří přihlašovací údaje, které vám umožní přístup k trezoru. Pokud jste se podívali na kroky v dříve uvedené místní dokumentaci, můžete vidět, že tato funkce automatizuje kroky 2 a 3. Jedinou věcí, kterou byste stále potřebovali udělat ručně, je vytvoření trezoru klíčů a klíčů. Odsud je celá instalace virtuálního počítače s SQL Serverem automatizovaná. Jakmile tato funkce dokončí toto nastavení, můžete spouštět příkazy jazyka Transact-SQL (T-SQL) a začít šifrovat databáze nebo zálohy, jak byste normálně chtěli.

Poznámka:

Integraci služby Key Vault můžete nakonfigurovat také pomocí šablony. Další informace najdete v šabloně Azure Pro rychlý start pro integraci se službou Azure Key Vault.

Příprava na integraci AKV

Pokud chcete ke konfiguraci virtuálního počítače s SQL Serverem použít integraci se službou Azure Key Vault, existuje několik požadavků:

  1. Instalace Azure PowerShellu
  2. Vytvoření tenanta Microsoft Entra
  3. Vytvoření trezoru klíčů

Následující části popisují tyto požadavky a informace, které potřebujete shromáždit pro pozdější spuštění rutin PowerShellu.

Poznámka:

Tento článek používá modul Azure Az PowerShell, což je doporučený modul PowerShellu pro interakci s Azure. Pokud chcete začít s modulem Az PowerShell, projděte si téma věnované instalaci Azure PowerShellu. Informace o tom, jak migrovat na modul Az PowerShell, najdete v tématu Migrace Azure PowerShellu z AzureRM na Az.

Instalace prostředí Azure PowerShell

Ujistěte se, že máte nainstalovaný nejnovější modul Azure PowerShellu. Další informace najdete v tématu Instalace a konfigurace Azure PowerShellu.

Registrace aplikace ve vašem ID Microsoft Entra

Nejprve musíte mít ve svém předplatném tenanta Microsoft Entra . Mezi mnoho výhod to umožňuje udělit oprávnění k trezoru klíčů pro určité uživatele a aplikace.

V dalším kroku zaregistrujte aplikaci pomocí Microsoft Entra ID. Tím získáte účet instančního objektu, který má přístup k vašemu trezoru klíčů, který váš virtuální počítač potřebuje. V článku o službě Azure Key Vault najdete tyto kroky v části Registrace aplikace v části Microsoft Entra ID nebo si můžete prohlédnout kroky se snímky obrazovky v částiZískání identity pro aplikaci v tomto blogovém příspěvku. Před provedením těchto kroků budete muset během této registrace shromáždit následující informace, které jsou potřeba později, když na svém virtuálním počítači SQL povolíte integraci se službou Azure Key Vault.

  • Po přidání aplikace vyhledejte ID aplikace (označované také jako ClientID nebo AppID) v podokně Zaregistrovaná aplikace . ID aplikace se později přiřadí k parametru $spName (instanční název) ve skriptu PowerShellu, aby se povolila integrace služby Azure Key Vault.

    Application ID

  • Během těchto kroků při vytváření klíče zkopírujte tajný klíč, jak je znázorněno na následujícím snímku obrazovky. Tento tajný klíč se později přiřadí k parametru $spSecret (tajný kód instančního objektu) ve skriptu PowerShellu.

    AAD secret

  • ID aplikace a tajný klíč se také použijí k vytvoření přihlašovacích údajů v SQL Serveru.

  • Toto nové ID aplikace (nebo ID klienta) musíte autorizovat, abyste měli následující přístupová oprávnění: get, wrapKey, unwrapKey. To se provádí pomocí rutiny Set-AzKeyVaultAccessPolicy . Další informace najdete v přehledu služby Azure Key Vault.

Vytvořte trezor klíčů.

Abyste mohli použít Azure Key Vault k ukládání klíčů, které budete používat k šifrování ve virtuálním počítači, potřebujete přístup k trezoru klíčů. Pokud jste ještě nenastavili trezor klíčů, vytvořte si ho podle kroků v článku Začínáme se službou Azure Key Vault . Před provedením těchto kroků je potřeba během tohoto nastavení shromáždit některé informace, které budete potřebovat později, když na svém virtuálním počítači SQL povolíte integraci se službou Azure Key Vault.

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

Když se dostanete ke kroku Vytvořit trezor klíčů, poznamenejte si vrácenou vlastnost vaultUri , což je adresa URL trezoru klíčů. V příkladu uvedeném v tomto kroku je později název trezoru klíčů ContosoKeyVault, proto by adresa URL trezoru klíčů byla https://contosokeyvault.vault.azure.net/.

Adresa URL trezoru klíčů se později přiřadí k parametru $akvURL ve skriptu PowerShellu, aby se povolila integrace služby Azure Key Vault.

Po vytvoření trezoru klíčů musíme do trezoru klíčů přidat klíč, tento klíč se bude odkazovat při pozdějším vytvoření asymetrického klíče v SQL Serveru.

Poznámka:

Zprostředkovatel EKM (Extensible Key Management) verze 1.0.4.0 je nainstalovaný na virtuálním počítači s SQL Serverem prostřednictvím rozšíření IaaS (Infrastruktura jako služba). Upgrade rozšíření agenta SQL IaaS neaktualizuje verzi poskytovatele. Zvažte ruční upgrade verze poskytovatele EKM v případě potřeby (například při migraci na spravovanou instanci SQL).

Povolení a konfigurace integrace služby Key Vault

Integraci služby Key Vault můžete povolit během zřizování nebo ji nakonfigurovat pro existující virtuální počítače.

Nové virtuální počítače

Pokud zřizujete nový virtuální počítač SQL pomocí Resource Manageru, azure Portal nabízí způsob, jak povolit integraci se službou Azure Key Vault.

SQL Azure Key Vault Integration

Podrobný návod ke zřizování najdete v tématu Zřízení virtuálního počítače SQL na webu Azure Portal.

Existující virtuální počítače

U existujících virtuálních počítačů SQL otevřete prostředek virtuálních počítačů SQL a v části Nastavení vyberte Zabezpečení. Výběrem možnosti Povolit povolíte integraci se službou Azure Key Vault.

Následující snímek obrazovky ukazuje, jak povolit službu Azure Key Vault na portálu pro existující virtuální počítač s SQL Serverem (tato instance SQL Serveru používá jiný než výchozí port 1401):

SQL Key Vault integration for existing VMs

Až budete hotovi, uložte změny kliknutím na tlačítko Použít v dolní části stránky Zabezpečení .

Poznámka:

Název přihlašovacích údajů, který jsme zde vytvořili, se později namapuje na přihlašovací jméno SQL. To umožňuje přihlášení SQL pro přístup k trezoru klíčů.

Po povolení integrace služby Azure Key Vault můžete na virtuálním počítači SQL povolit šifrování SQL Serveru. Nejprve budete muset ve svém trezoru klíčů vytvořit asymetrický klíč a symetrický klíč v rámci SQL Serveru na virtuálním počítači. Potom budete moct spouštět příkazy T-SQL, které umožní šifrování databází a záloh.

Existuje několik forem šifrování, které můžete využít:

Následující skripty jazyka Transact-SQL poskytují příklady pro každou z těchto oblastí.

Požadavky pro příklady

Každý příklad vychází ze dvou požadavků: asymetrického klíče z trezoru klíčů s názvem CONTOSO_KEY a přihlašovacích údajů vytvořených funkcí integrace AKV s názvem Azure_EKM_cred. Následující příkazy jazyka Transact-SQL nastavují tyto požadavky pro spuštění příkladů.

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;

Transparentní šifrování dat

  1. Vytvořte přihlášení k SQL Serveru, které bude používat databázový stroj pro transparentní šifrování dat, a pak do něj přidejte přihlašovací údaje.

    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. Vytvořte šifrovací klíč databáze, který se použije pro transparentní šifrování dat.

    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
    

Šifrované zálohy

  1. Vytvořte přihlášení k SQL Serveru, které bude používat databázový stroj pro šifrování záloh, a přidejte do něj přihlašovací údaje.

    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. Zálohujte databázi určující šifrování pomocí asymetrického klíče uloženého v trezoru klíčů.

    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
    

Šifrování na úrovni sloupce (CLE)

Tento skript vytvoří symetrický klíč chráněný asymetrickým klíčem v trezoru klíčů a pak použije symetrický klíč k šifrování dat v databázi.

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;

Další materiály

Další informace o tom, jak tyto funkce šifrování používat, najdete v tématu Použití EKM s funkcemi šifrování SQL Serveru.

Všimněte si, že kroky v tomto článku předpokládají, že sql Server už máte spuštěný na virtuálním počítači Azure. Pokud ne, přečtěte si téma Zřízení virtuálního počítače s SQL Serverem v Azure. Další pokyny k provozování SQL Serveru na virtuálních počítačích Azure najdete v tématu Přehled SQL Serveru na virtuálních počítačích Azure s Windows.

Další kroky

Další informace o zabezpečení najdete v tématu Důležité informace o zabezpečení SQL Serveru na virtuálních počítačích Azure.