Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Běžné šifrovací aktivity SQL Server, které používají asymetrický klíč chráněný Azure Key Vault, spadají do následujících tří oblastí:
- Transparentní šifrování dat (TDE) pomocí asymetrického klíče z Azure Key Vault.
- Šifrování záloh pomocí asymetrického klíče z klíčového trezoru.
- Šifrování na úrovni sloupců pomocí asymetrického klíče z klíčového trezoru.
Dokončete kroky 1 až 4 v Nastavte transparentní šifrování dat s Azure Key Vault pro SQL Server, než budete postupovat podle kroků v tomto článku.
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ší. Stáhněte si aktuální verzi z Microsoft Download Center a postupujte podle pokynů v části „Upgrade of SQL Server Connector“ v Údržba a řešení problémů se službou SQL Server Connector.
Transparentní šifrování dat pomocí asymetrického klíče z Azure Key Vault
Po dokončení kroků 1 až 4 v Nastavení transparentní šifrování dat s Azure Key Vault pro SQL Server použijte klíč Azure Key Vault k zašifrování šifrovacího klíče databáze pomocí TDE. Pro více informací o rotaci klíčů pomocí PowerShellu viz Rotate the transparentní šifrování dat (TDE) protector using PowerShell.
Důležitý
Po přechodu neodstraňujte předchozí verze klíče. Když dojde k obměně klíčů, některá data jsou stále šifrována předchozími klíči, například starší databázové zálohy, zálohované soubory protokolů a soubory transakčních protokolů.
Musíte vytvořit přihlašovací údaje a přihlášení a vytvořit šifrovací klíč databáze, který šifruje data a transakční protokol v databázi. Šifrování databáze vyžaduje CONTROL oprávnění k přístupu k databázi. Následující grafika ukazuje hierarchii šifrovacího klíče při použití Azure Key Vault.
Vytvořte přihlašovací údaje SQL Serveru pro databázový stroj, který se použije pro Transparentní šifrování dat (TDE)
Database Engine používá přihlašovací údaje aplikace Microsoft Entra k přístupu k trezoru klíčů během načítání databáze. Pro omezení oprávnění ke skladu klíčů, která udělujete, vytvořte další Client ID a Secret, jak je popsáno v kroku 1: Nastavte autentizační model pro Database Engine.
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
IDENTITYargument názvem služby Azure Key Vault z kroku 2: Vytvoření trezoru klíčů. - Pokud používáte privátní cloud Azure, například Azure Government, Azure provozovaný společností 21Vianet nebo Azure (Německo), nahraďte argument
IDENTITYidentifikátorem URI trezoru vráceným v Vytvoření klíčového trezoru a klíče pomocí PowerShellu. Nezahrnujtehttps://do identifikátoru URI trezoru klíčů.
- Pokud používáte globální Azure, nahraďte
Nahraďte první část argumentu
SECRETidentifikátorem klienta aplikace Microsoft Entra z kroku 1: Nastavte autentizační model. V tomto příkladu je ID klientaEF5C8E094D2A4A769998D93440D8115D.Důležitý
Je nutné odebrat pomlčky z id klienta .
Dokončete druhou část argumentu
SECRETs klientským tajemstvím z kroku 1. V tomto příkladu je Client SecretReplaceWithAADClientSecret.Poslední řetězec argumentu
SECRETje dlouhá posloupnost písmen a čísel 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 ; GOVytvořte šifrovací klíč databáze (DEK)
DEK šifruje vaše data a logovací soubory v databázové instanci a je následně šifrován asymetrickým klíčem Azure Key Vault. DEK můžete vytvořit pomocí libovolného algoritmu nebo délky klíče, kterou SQL Server podporuje.
USE ContosoDatabase; GO CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY CONTOSO_KEY; GOZapněte TDE
-- Alter the database to enable transparent data encryption. ALTER DATABASE ContosoDatabase SET ENCRYPTION ON; GOPomocí Management Studio ověřte, že je TDE zapnuté, připojením k databázi pomocí Průzkumník objektů. Klikněte pravým tlačítkem na databázi, najeďte na Úlohy a poté vyberte Spravovat šifrování databáze.
snímek obrazovky zobrazující Průzkumníka objektů s vybranou možností Úlohy > 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
tempdbse automaticky šifruje, kdykoli je v jakékoli databázi povoleno TDE.
Šifrování záloh pomocí asymetrického klíče z klíčového trezoru
Šifrované zálohy se podporují od SQL Serveru 2014 (12.x). Následující příklad vytváří a obnovuje zálohu zašifrovanou klíčem pro šifrování dat, kterou chrání asymetrický klíč v trezoru klíčů.
Database Engine používá přihlašovací údaje aplikace Microsoft Entra k přístupu k trezoru klíčů během načítání databáze. Pro omezení oprávnění ke skladu klíčů, která udělujete, vytvořte další Client ID a Secret, jak je popsáno v kroku 1: Nastavte autentizační model pro Database Engine.
Vytvořte pověření SQL Server pro Database Engine pro použití pro šifrování záloh
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
IDENTITYargument názvem služby Azure Key Vault z kroku 2: Vytvoření trezoru klíčů. - Pokud používáte privátní Azure cloud, například Azure Government, Microsoft Azure provozovaný 21Vianet nebo Azure (Německo), nahraďte argument
IDENTITYidentifikátorem URI trezoru klíčů vráceným v Vytvoření klíčového trezoru a klíče pomocí PowerShellu. Nezahrnujtehttps://do identifikátoru URI trezoru klíčů.
- Pokud používáte globální Azure, nahraďte
Nahraďte první část argumentu
SECRETidentifikátorem klienta aplikace Microsoft Entra z kroku 1: Nastavte autentizační model. V tomto příkladu je ID klientaEF5C8E094D2A4A769998D93440D8115D.Důležitý
Je nutné odebrat pomlčky z id klienta .
Dokončete druhou část argumentu
SECRETs klientským tajemstvím z kroku 1. V tomto příkladu je Client SecretReplace-With-AAD-Client-Secret. Poslední řetězec argumentuSECRETje dlouhá posloupnost písmen a čísel, bez spojovníků.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 modul Database Engine pro šifrování záloh
Vytvořte přihlášení k SQL Serveru, které bude používat databázový stroj pro zálohování š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 záložní šifrování, pokud jste ho již použili pro TDE (předchozí příklad) nebo pro šifrování na úrovni sloupců (následující příklad).
Tento příklad používá asymetrický klíč uložený
CONTOSO_KEY_BACKUPv klíčovém trezoru, který můžete pro databázimasterimportovat nebo vytvořit dříve, jak je popsáno v kroku 2: Vytvořit klíčový trezor.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 ; GOZálohujte databázi
Zálohujte databázi a specifikujte š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 byla databáze již zašifrována pomocí TDE a asymetrický klíč
CONTOSO_KEY_BACKUPse liší od asymetrického klíče TDE, záloha je zašifrována jak asymetrickým klíčem TDE, takCONTOSO_KEY_BACKUP. Cílová instance SQL Server potřebuje oba klíče k dešifrování zálohy.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]); GOObnovit databázi
Pro obnovení zálohy databáze, která je zašifrovana pomocí TDE, musí cílová instance SQL Server nejprve mít kopii asymetrického klíče vaultu používaného pro šifrování. Chcete-li tuto kopii poskytnout:
Pokud původní asymetrický klíč použitý pro TDE již není v klíčovém trezoru, obnovte zálohu klíče z trezoru klíčů nebo jej znovu importujte z lokálního HSM. Aby otisk palce klíče odpovídal otisku zaznamenánému v databázové záloze, musí klíč používat stejný název klíče v trezoru klíčů, jaký měl původně.
Použijte kroky 1 a 2 na cílové instanci SQL Server.
Poté, co má cílová instance SQL Server 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; GODalší informace o možnostech zálohování najdete v tématu BACKUP (Transact-SQL).
Šifrování na úrovni sloupců pomocí asymetrického klíče z klíčového trezoru
Následující příklad vytvoří symetrický klíč chráněný asymetrickým klíčem v trezoru klíčů. Symetrický klíč pak šifruje data v databázi.
Důležitý
Nemůžete použít stejný asymetrický klíč pro šifrování na úrovni sloupců, pokud jste ho už použili pro šifrování záloh.
Tento příklad používá CONTOSO_KEY_COLUMNS asymetrický klíč uložený v trezoru klíčů, který můžete importovat nebo vytvořit dříve, jak je popsáno v kroku 2: Vytvořit trezor klíčů. Pro použití tohoto asymetrického klíče v databázi ContosoDatabase spusťte příkaz CREATE ASYMMETRIC KEY znovu, aby databáze ContosoDatabase získala odkaz 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;