Použití konektoru SQL Serveru s funkcemi šifrování SQL
platí pro:SQL Server
Mezi běžné aktivity šifrování SQL Serveru používající asymetrický klíč chráněný službou Azure Key Vault patří následující tři oblasti.
Transparentní šifrování dat pomocí asymetrického klíče ze služby Azure Key Vault
Šifrování záloh pomocí asymetrického klíče ze služby Key Vault
Šifrování na úrovni sloupců pomocí asymetrického klíče ze služby Key Vault
Než budete postupovat podle kroků v tomto tématu, dokončete část I až IV tématu Kroky nastavení pro rozšiřitelnou správu klíčů pomocí služby Azure Key Vault.
Poznámka
Verze 1.0.0.440 a starší byly nahrazeny a již nejsou podporovány v produkčních prostředích. Upgradujte na verzi 1.0.1.0 nebo novější tím, že přejdete na stránku Microsoft Download Center a použijete pokyny na stránce Údržba konektoru SQL Serveru & Řešení potíží v části "Upgrade konektoru SQL Serveru."
Transparentní šifrování dat pomocí asymetrického klíče ze služby Azure Key Vault
Po dokončení částí I až IV tématu postup nastavení rozšiřitelné správy klíčů pomocí služby Azure Key Vault, použijte klíč služby Azure Key Vault k šifrování šifrovacího klíče databáze pomocí Transparent Data Encryption (TDE). Další informace o obměně klíčů pomocí PowerShellu najdete v tématu Otočení ochrany transparentního šifrování dat (TDE) pomocí PowerShellu.
Důležitý
Po rotaci neodstraňovat předchozí verze klíče. Když jsou klíče změněny, některá data jsou stále šifrována pomocí předchozích klíčů, jako jsou starší zálohy databáze, zálohované soubory logů a transakční logy.
Budete muset vytvořit přihlašovací údaje a přihlášení a vytvořit šifrovací klíč databáze, který zašifruje data a protokoly v databázi. K šifrování databáze se vyžaduje oprávnění CONTROL k databázi. Následující obrázek znázorňuje hierarchii šifrovacího klíče při použití služby Azure Key Vault.
ekm-key-hierarchy-with-akv
Vytvořte přihlašovací údaje SQL Serveru pro databázový stroj, který se použije pro Transparentní šifrování dat (TDE)
Databázový stroj používá přihlašovací údaje aplikace Microsoft Entra pro přístup ke službě Key Vault během načítání databáze. Doporučujeme vytvořit další ID klienta a tajný klíč, jak je popsáno v kroku 1, pro databázový stroj, aby se omezila udělená oprávnění pro Key Vault.
Upravte následující skript Transact-SQL následujícími způsoby:
Upravte argument
IDENTITY
(ContosoDevKeyVault
) tak, aby odkazovat na službu Azure Key Vault.- Pokud používáte globálníAzure, nahraďte argument
IDENTITY
názvem služby Azure Key Vault z části II. - Pokud používáte privátní cloud Azure (např. Azure Government, Azure provozovaný společností 21Vianet nebo Azure Germany), nahraďte argument
IDENTITY
identifikátorem URI trezoru vráceným v části II kroku 3. Do identifikátoru URI trezoru nezahrnujte "https://".
- Pokud používáte globálníAzure, nahraďte argument
Nahraďte první část argumentu
SECRET
aplikací Microsoft Entra ID klienta z kroku 1. V tomto příkladu je ID klientaEF5C8E094D2A4A769998D93440D8115D
.Důležitý
Je nutné odebrat pomlčky z id klienta .
Dokončete druhou část argumentu
SECRET
se tajným klíčem klienta z části I. V tomto příkladu je tajný klíč klienta z části 1ReplaceWithAADClientSecret
.Posledním řetězcem argumentu SECRET bude dlouhá posloupnost písmen a číslic bez pomlček.
USE master; CREATE CREDENTIAL Azure_EKM_TDE_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplaceWithAADClientSecret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Vytvořte přihlášení k SQL Serveru pro databázový stroj pro TDE
Vytvořte přihlášení k SQL Serveru a přidejte do něj přihlašovací údaje z kroku 1. Tento Transact-SQL příklad používá stejný klíč, který jste naimportovali dříve.
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 TDE_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 TDE_Login ADD CREDENTIAL Azure_EKM_TDE_cred ; GO
vytvoření šifrovacího klíče databáze (DEK)
DEK zašifruje vaše data a soubory protokolů v databázové instanci a na oplátku budou šifrovány asymetrickým klíčem služby Azure Key Vault. Klíč DEK je možné vytvořit pomocí libovolného podporovaného algoritmu nebo délky klíče SQL Serveru.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GO
zapnout transparentního šifrování dat
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GO
Pomocí aplikace Management Studio ověřte, že je TDE (transparentní šifrování dat) zapnuté, a to připojením k vaší databázi pomocí Průzkumníka objektů. Klepněte pravým tlačítkem myši na databázi, přejděte na příkaz Úkolya klepněte na tlačítko Spravovat šifrování databáze.
V dialogovém okně Spravovat šifrování databáze ověřte, že je TDE zapnuté a jaký asymetrický klíč šifruje DEK.
Případně můžete spustit následující Transact-SQL skript. Stav šifrování 3 označuje zašifrovanou databázi.
USE MASTER SELECT * FROM sys.asymmetric_keys -- Check which databases are encrypted using TDE SELECT d.name, dek.encryption_state FROM sys.dm_database_encryption_keys AS dek JOIN sys.databases AS d ON dek.database_id = d.database_id;
Poznámka
Databáze
tempdb
se automaticky šifruje, kdykoli je v jakékoli databázi povoleno TDE.
Šifrování záloh pomocí asymetrického klíče ze služby Key Vault
Šifrované zálohy se podporují od SQL Serveru 2014 (12.x). Následující příklad vytvoří a obnoví zálohu šifrovaného šifrovacího klíče dat chráněného asymetrickým klíčem v trezoru klíčů.
Databázový stroj používá přihlašovací údaje aplikace Microsoft Entra pro přístup ke službě Key Vault během načítání databáze. Doporučujeme pro databázový stroj vytvořit další ID klienta a tajný klíč, jak je popsáno v kroku 1, aby se omezila oprávnění udělená službě Key Vault.
Vytvořte přihlašovací údaje SQL Serveru pro použití databázovým strojem k šifrování zálohování
Upravte následující skript Transact-SQL následujícími způsoby:
Upravte argument
IDENTITY
(ContosoDevKeyVault
) tak, aby odkazovat na službu Azure Key Vault.- Pokud používáte globálníAzure, nahraďte argument
IDENTITY
názvem služby Azure Key Vault z části II. - Pokud používáte privátní cloud Azure (např. Azure Government, Microsoft Azure provozovaný společností 21Vianet nebo Azure Germany), nahraďte argument
IDENTITY
identifikátorem URI trezoru vráceným v části II kroku 3. Do identifikátoru URI trezoru nezahrnujte "https://".
- Pokud používáte globálníAzure, nahraďte argument
Nahraďte první část argumentu
SECRET
aplikací Microsoft Entra ID klienta z kroku 1. V tomto příkladu je id klientaEF5C8E094D2A4A769998D93440D8115D
.Důležitý
Je nutné odebrat pomlčky z id klienta .
Dokončete druhou část argumentu
SECRET
tajným kódem klienta z části I. V tomto příkladu jeReplace-With-AAD-Client-Secret
tajný klíč klienta z části I . Posledním řetězcem argumentuSECRET
bude dlouhá posloupnost písmen a číslic s bez pomlček.USE master; CREATE CREDENTIAL Azure_EKM_Backup_cred WITH IDENTITY = 'ContosoDevKeyVault', -- for global Azure -- WITH IDENTITY = 'ContosoDevKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'ContosoDevKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'ContosoDevKeyVault.vault.microsoftazure.de', -- for Azure Germany SECRET = 'EF5C8E094D2A4A769998D93440D8115DReplace-With-AAD-Client-Secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM_Prov;
Vytvořte přihlášení k SQL Serveru pro Šifrování zálohování v databázovém stroji
Vytvořte přihlášení k SQL Serveru, které bude používat databázový stroj pro zálohy šifrování, a přidejte do něj přihlašovací údaje z kroku 1. Tento Transact-SQL příklad používá stejný klíč, který jste naimportovali dříve.
Důležitý
Nemůžete použít stejný asymetrický klíč pro šifrování záloh, pokud jste tento klíč už použili pro transparentní šifrování dat (výše uvedený příklad) nebo šifrování na úrovni sloupce (následující příklad).
V tomto příkladu se používá asymetrický klíč
CONTOSO_KEY_BACKUP
uložený v trezoru klíčů, který lze importovat nebo vytvořit předem pro hlavní databázi, stejně jako v části IV, kroku 5.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 Backup_Login FROM ASYMMETRIC KEY CONTOSO_KEY_BACKUP; GO -- Alter the Encrypted Backup Login to add the credential for use by -- the Database Engine to access the key vault ALTER LOGIN Backup_Login ADD CREDENTIAL Azure_EKM_Backup_cred ; GO
zálohování databáze
Zálohujte databázi určující šifrování pomocí asymetrického klíče uloženého v trezoru klíčů.
V následujícím příkladu si všimněte, že pokud je databáze již šifrovaná pomocí transparentního šifrování dat a asymetrický klíč
CONTOSO_KEY_BACKUP
se liší od asymetrického klíče transparentního šifrování dat, zálohování se zašifruje asymetrickým klíčem transparentního šifrování dat iCONTOSO_KEY_BACKUP
. K dešifrování zálohy bude cílová instance SQL Serveru potřebovat oba klíče.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_BACKUP]); GO
obnovení databáze
Pokud chcete obnovit zálohu databáze, která je šifrovaná transparentním šifrováním dat, musí mít cílová instance SQL Serveru nejprve kopii asymetrického klíče služby Key Vault, který se používá k šifrování. Takto by bylo dosaženo:
Pokud původní asymetrický klíč použitý pro transparentní šifrování dat už není ve službě Key Vault, obnovte zálohu klíče služby Key Vault nebo klíč znovu naimportujte z místního HSM. Důležité: Aby kryptografický otisk klíče odpovídal kryptografickému otisku zaznamenanému v zálohování databáze, musí být tento klíč pojmenován stejný název klíče služby Key Vault, který byl původně pojmenován dříve.
Použijte kroky 1 a 2 v cílové instanci SQL Serveru.
Jakmile má cílová instance SQL Serveru přístup k asymetrickým klíčům používaným k šifrování zálohy, obnovte databázi na serveru.
Ukázkový kód pro obnovení:
RESTORE DATABASE [DATABASE_TO_BACKUP] FROM DISK = N'[PATH TO BACKUP FILE]' WITH FILE = 1, NOUNLOAD, REPLACE; GO
Další informace o možnostech zálohování naleznete v tématu BACKUP (Transact-SQL).
Šifrování na úrovni sloupců pomocí asymetrického klíče ze služby Key Vault
Následující příklad vytvoří symetrický klíč chráněný asymetrickým klíčem v trezoru klíčů. Potom se symetrický klíč použije k šifrování dat v databázi.
Důležitý
Pokud jste tento klíč už použili k šifrování na úrovni sloupce, nemůžete použít stejný asymetrický klíč.
V tomto příkladu se používá asymetrický klíč CONTOSO_KEY_COLUMNS
uložený v trezoru klíčů, který je možné importovat nebo vytvořit dříve, jak je popsáno v kroku 3 oddílu 3 kroků nastavení pro rozšiřitelnou správu klíčů pomocí služby Azure Key Vault. Chcete-li tento asymetrický klíč použít v databázi ContosoDatabase
, je nutné příkaz CREATE ASYMMETRIC KEY
znovu spustit, aby byla databáze ContosoDatabase
odkazem na klíč.
USE [ContosoDatabase];
GO
-- Create a reference to the key in the key vault
CREATE ASYMMETRIC KEY CONTOSO_KEY_COLUMNS
FROM PROVIDER [AzureKeyVault_EKM_Prov]
WITH PROVIDER_KEY_NAME = 'ContosoDevRSAKey2',
CREATION_DISPOSITION = OPEN_EXISTING;
-- Create the data encryption key.
-- The data encryption key can be created using any SQL Server
-- supported algorithm or key length.
-- The DEK will be protected by the asymmetric key in the key vault
CREATE SYMMETRIC KEY DATA_ENCRYPTION_KEY
WITH ALGORITHM=AES_256
ENCRYPTION BY ASYMMETRIC KEY CONTOSO_KEY_COLUMNS;
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_COLUMNS;
--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;
Viz také
kroky nastavení pro rozšiřitelnou správu klíčů pomocí služby Azure Key Vault
rozšiřitelné správy klíčů pomocí služby Azure Key Vault
EKM poskytovatel povolena možnost konfigurace serveru
údržba konektoru SQL Serveru & řešení potíží