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
V tomto článku nainstalujete a nakonfigurujete konektor SQL Serveru pro Azure Key Vault.
Rozšiřitelná správa klíčů pomocí služby Azure Key Vault (AKV) je k dispozici pro SQL Server v linuxových prostředích počínaje kumulativní aktualizací SQL Serveru 2022 (16.x). Postupujte podle stejných pokynů, ale přeskočte kroky 3 a 4.
Požadavky
Než začnete používat službu Azure Key Vault s vaší instancí SQL Serveru, ujistěte se, že splňujete následující požadavky:
Musíte mít předplatné Azure.
Nainstalujte Azure PowerShell verze 5.2.0 nebo novější.
Vytvořte tenanta Microsoft Entra.
Seznamte se s principy úložiště EKM (Extensible Key Management) pomocí služby Azure Key Vault prostřednictvím přezkoumání Rozšiřitelné správy klíčů pomocí služby Azure Key Vault (SQL Server).
Je možné upravit registr na počítači s SQL Serverem.
Nainstalujte verzi redistribuovatelných balíčků Visual Studio C++, která je založena na verzi SQL Serveru, který používáte:
Verze SQL Serveru Distribuovatelná verze sady Visual Studio C++ 2008, 2008 R2, 2012, 2014 Redistribuovatelné balíčky Visual C++ pro Visual Studio 2013 2016, 2017, 2019, 2022 Distribuovatelné součásti Visual C++ pro Visual Studio 2015 Seznamte se s Přístup ke službě Azure Key Vault za bránou firewall, pokud plánujete používat konektor SQL Serveru pro Azure Key Vault za bránou firewall nebo proxy serverem.
Poznámka
V SQL Serveru 2022 (16.x) CU 14 a novějších verzích SQL Server v Linuxu podporuje TDE Extensible Key Management se službou Azure Key Vault. Kroky 3 a 4 v této příručce se pro SQL Server v Linuxu nevyžadují.
Krok 1: Nastavení služebního principu Microsoft Entra
Pokud chcete SQL serveru udělit oprávnění k přístupu k trezoru klíčů Azure, potřebujete účet hlavní služby v Microsoft Entra ID.
Přihlaste se k webu Azure portala proveďte některou z následujících akcí.
Vyberte tlačítko Microsoft Entra ID.
Vyberte Další služby a potom v podokně Všechny služby zadejte ID Microsoft Entra.
Pomocí následujícího příkazu zaregistrujte aplikaci v Microsoft Entra ID. Podrobné pokyny najdete v části Získání identity pro aplikaci v blogovém příspěvku služby Azure Key Vault Azure Key Vault – krok za krokem.
V části Spravovat ve vašem prostředku Microsoft Entra ID vyberte Registrace aplikací.
Na stránce Registrace aplikací vyberte Nová registrace.
V podokně Zaregistrovat aplikaci zadejte uživatelské jméno aplikace a pak vyberte Zaregistrovat.
V levém podokně vyberte Certifikáty & tajných kódů > Tajné kódy klienta > Nový tajný klíč klienta.
V části Přidat tajný klíč klientanejprve zadejte popis a nastavte odpovídající vypršení platnosti, a poté vyberte Přidat. Nemůžete zvolit období vypršení platnosti delší než 24 měsíců. Další informace najdete v tématu Přidání tajného klíče klienta.
V podokně Certifikáty & tajných kódů v části Hodnotavyberte tlačítko Kopírovat vedle hodnoty tajného klíče klienta, který se má použít k vytvoření asymetrického klíče na SQL Serveru.
V levém podokně vyberte Přehled a potom v poli ID aplikace (klienta) zkopírujte hodnotu, která se má použít k vytvoření asymetrického klíče na SQL Serveru.
Krok 2: Vytvoření trezoru klíčů
Vyberte metodu, kterou chcete použít k vytvoření trezoru klíčů.
Vytvoření trezoru klíčů pomocí webu Azure Portal
Pomocí portálu Azure můžete vytvořit klíčové úložiště a pak do něj přidat entitu Microsoft Entra.
Vytvořte skupinu prostředků.
Všechny prostředky Azure, které vytvoříte prostřednictvím webu Azure Portal, musí být obsažené ve skupině prostředků, kterou vytvoříte pro umístění trezoru klíčů. Název prostředku v tomto příkladu je docsSampleRG. Zvolte vlastní skupinu prostředků a název trezoru klíčů, protože všechny názvy trezorů klíčů musí být globálně jedinečné.
V podokně Vytvořit skupinu prostředků, v části Podrobnosti projektuzadejte hodnoty a pak vyberte Zkontrolovat a vytvořit.
V Azure portálu vyhledejte nebo vyberte službu Trezory klíčů a vytvořte trezor klíčů. Vyberte Vytvořit.
V podokně Vytvořit trezor klíčů vyberte kartu Základy. Zadejte příslušné hodnoty pro kartu. Doporučujeme také povolit ochranu před vyprázdněním.
Na kartě konfigurace Accessu máte možnost vybrat řízení přístupu na základě role Azure nebo zásady přístupu trezoru. Projdeme obě možnosti, ale doporučujeme řízení přístupu založené na rolích v Azure. Další informace najdete v tématu Přehled modelu Accessu.
Kartu Sítě můžete ponechat jako výchozí nebo můžete nakonfigurovat nastavení sítě pro trezor klíčů. Pokud používáte bránu firewall s trezorem klíčů, musí být povolena možnost Povolit důvěryhodným službám Microsoftu obejití brány firewall, pokud nepoužíváte připojení privátních koncových bodů. Další informace viz Konfigurace brán firewall a virtuálních sítí Azure Key Vault.
Vyberte Zkontrolovat a vytvořit a vytvořte úložiště klíčů.
Řízení přístupu na základě role v Azure
Doporučenou metodou je použít řízení přístupu na základě rolí (RBAC) Azure pro přiřazení oprávnění k trezoru klíčů. Tato metoda umožňuje přiřadit oprávnění uživatelům, skupinám a aplikacím na podrobnější úrovni. K trezoru klíčů můžete přiřadit oprávnění v rovině správy (přiřazení rolí Azure) a v rovině dat (zásady přístupu trezoru klíčů). Pokud můžete použít pouze zásady přístupu, můžete tuto část přeskočit a přejít do části Zásady přístupu do trezoru. Další informace o oprávněních RBAC služby Azure Key Vault najdete v tématu předdefinované role Azure pro operace roviny dat služby Key Vault.
Přejděte k prostředku trezoru klíčů, který jste vytvořili, a vyberte nastavení řízení přístupu (IAM).
Vyberte a poté přidejte,>,a přiřaďte roli.
Aplikace EKM potřebuje k provádění operací zabalení a rozbalení roli uživatele šifrování kryptografických služeb služby Key Vault. Vyhledejte uživatele šifrování kryptografických služeb key vaultu a vyberte roli. Vyberte Další.
Na kartě Členové vyberte možnost Vybrat členy a vyhledejte aplikaci Microsoft Entra, kterou jste vytvořili v kroku 1. Vyberte aplikaci a poté stiskněte tlačítko Vyberte.
Vyberte , zkontrolujte a přiřaďte dvakrát, abyste dokončili přiřazení role.
Uživatel, který klíč vytváří, potřebuje roli správce služby Key Vault. Vyhledejte správce služby Key Vault a vyberte roli. Vyberte Další.
Stejně jako v předchozích krocích přidejte člena, který vytváří klíč, a přiřaďte roli.
Zásady přístupu k trezoru
Poznámka
Pokud používáte možnost řízení přístupu na základě role v Azure, můžete tuto část přeskočit. Pokud měníte model oprávnění, můžete to udělat tak, že přejdete do nabídky konfigurace Accessu trezoru klíčů. Ujistěte se, že máte správná oprávnění ke správě trezoru klíčů. Další informace najdete v tématu Povolení oprávnění Azure RBAC ve službě Key Vault.
Na kartě konfigurace přístupu vyberte zásady přístupu k trezoru. Pokud používáte existující trezor klíčů, můžete v prostředku trezoru klíčů vybrat nabídku zásady přístupu a vybrat Vytvořit.
V podokně Vytvořit zásadu přístupu vyberte Získat a Seznam oprávnění z možností Operace správy klíčů. V možnostech Kryptografické operace vyberte Rozbalit klíč a Zabalit klíč. Výběr Další
Na kartě Objekt zabezpečení vyberte aplikaci vytvořenou v kroku 1.
Vyberte Další a pak Vytvořit.
Vytvoření klíče
V podokně Key Vault vyberte Klíče a pak vyberte možnost Generovat nebo importovat. Tím se otevře podokno Vytvořit klíč. Zadejte název trezoru klíčů. Vyberte možnost Generovat a zadejte název klíče. Konektor SQL Serveru vyžaduje, aby název klíče používal pouze znaky "a-z", "A-Z", "0-9" a "-" s limitem 26 znaků.
Použijte typ klíče RSA a velikost klíče RSA jako 2048. EKM v současné době podporuje pouze klíč RSA. Podle potřeby nastavte data aktivace a vypršení platnosti, a dále nastavte Povoleno jako Ano.
Osvědčené postupy
Pokud chcete zajistit rychlé obnovení klíče a mít přístup k datům mimo Azure, doporučujeme následující osvědčené postupy:
Vytvořte šifrovací klíč místně na místním zařízení modulu hardwarového zabezpečení (HSM). Nezapomeňte použít asymetrický klíč RSA 2048 nebo 3072, aby ho SQL Server podporoval.
Naimportujte šifrovací klíč do trezoru klíčů Azure. Tento proces je popsaný v dalších částech.
Před prvním použitím klíče v trezoru klíčů Azure proveďte zálohu klíče trezoru klíčů Azure pomocí rutiny
Backup-AzureKeyVaultKey
PowerShellu.Vždy, když provedete jakékoli změny klíče (například přidání seznamů ACL, značek nebo atributů klíčů), nezapomeňte provést další zálohování klíčů trezoru klíčů Azure.
Poznámka
Zálohování klíče je operace klíče služby Azure Key Vault, která vrací soubor, který se dá uložit kamkoli.
Použití konektoru SQL Serveru pro Azure Key Vault za firewallem nebo proxy serverem může ovlivnit výkon, pokud je provoz zpožděný nebo blokovaný. Seznamte se s přístupem ke službě Azure Key Vault chráněné branou firewall, abyste se ujistili, že jsou nastavena správná pravidla.
Volitelné – Konfigurace spravovaného HSM služby Azure Key Vault (modul hardwarového zabezpečení)
Azure Key Vault Managed HSM (Hardware Security Module) je podporováno pro SQL Server a SQL Server na virtuálních počítačích Azure při použití nejnovější verze konektoru SQL Server, stejně jako Azure SQL. Spravovaný HSM je plně spravovaná vysoce dostupná služba HSM s jedním tenantem. Spravovaný HSM poskytuje bezpečný základ pro kryptografické operace a úložiště klíčů. Spravovaný HSM je navržený tak, aby splňoval nejvyšší požadavky na zabezpečení a dodržování předpisů.
V kroku 2jsme se naučili vytvořit trezor klíčů a klíč ve službě Azure Key Vault. Volitelně můžete použít spravovaný HSM služby Azure Key Vault k uložení nebo vytvoření klíče, který se má použít s konektorem SQL Serveru. Tady jsou kroky:
Vytvořte spravovaný HSM služby Azure Key Vault. Můžete to provést pomocí portálu Azure vyhledáním služby Managed HSM služby Azure Key Vault a vytvořením nového prostředku, nebo pomocí Azure CLI, PowerShellunebo šablony ARM .
Aktivujte spravovaný HSM. K aktivaci HSM mohou pouze určení správci, kteří byli přiřazeni během vytváření spravovaného HSM. Můžete to provést tak, že v Azure Portal vyberete spravovaný prostředek HSM a následně v nabídce Přehled prostředku vyberete Stáhnout doménu zabezpečení. Potom postupujte podle některého z rychlých návodů a aktivujte váš spravovaný HSM.
Udělte oprávnění pro aplikaci Microsoft Entra pro přístup ke spravovanému HSM. Role správce spravovaného HSM neuděluje oprávnění k vytvoření klíče. Podobně jako krok 2, aplikace EKM potřebuje k provádění operací zabalení a rozbalení roli Managed HSM Crypto User nebo Managed HSM Crypto Service Encryption User. Při přidávání objektu zabezpečení pro přiřazení role zvolte typ podnikové aplikace . Další informace naleznete v části vestavěné role místního RBAC pro spravované HSM.
V nabídce služby Spravované HSM služby Azure Key Vault v části Nastavenívyberte Klíče. V okně Klíče vyberte Generovat/Importovat/Obnovit zálohu pro vytvoření klíče nebo importování existujícího klíče.
Poznámka
Při vytváření přihlašovacích údajů pro přístup ke spravovanému HSM se identita
<name of Managed HSM>.managedhsm.azure.net
, kterou najdete v Přehled spravovaného HSM služby Azure Key Vault jako identifikátor URI HSM na webu Azure Portal.Automatická rotace klíčů je podporována ve spravovaném HSM systému Azure Key Vault. Další informace najdete v tématu Konfigurace automatické rotace klíčů služby Azure Managed HSM.
Ke správě HSM služby Azure Key Vault je vyžadován konektor SQL Serveru verze 15.0.2000.440 nebo novější.
Managed HSM podporuje připojení privátních koncových bodů. Další informace najdete v tématu Integrace spravovaného HSM se službou Azure Private Link. V této konfiguraci musí být možnost obejit í důvěryhodné služby Microsoftu povolená pro nastavení sítě spravované službou Azure Key Vault Sítě.
Krok 3: Instalace konektoru SQL Serveru
Stáhněte konektor SQL Server z webu Microsoft Download Center. Stahování by měl provést správce počítače s SQL Serverem.
Poznámka
- Konektor SQL Server verze 1.0.0.440 a starší byly nahrazeny a již nejsou podporovány v produkčních prostředích a pomocí pokynů na stránce Údržba konektoru SQL Serveru & Řešení potíží stránce v části Upgrade konektoru SQL Serveru.
- Počínaje verzí 1.0.3.0 hlásí konektor SQL Serveru relevantní chybové zprávy do protokolů událostí Systému Windows pro účely řešení potíží.
- Počínaje verzí 1.0.4.0 existuje podpora privátních cloudů Azure, včetně Azure provozovaných společností 21Vianet, Azure Germany a Azure Government.
- Ve verzi 1.0.5.0 došlo k zásadní změně z hlediska algoritmu kryptografického otisku. Po upgradu na verzi 1.0.5.0 může dojít k selhání obnovení databáze. Další informace naleznete v článku znalostní báze 447099.
- Od verze 1.0.5.0 (časové razítko: září 2020) konektor SQL Serveru podporuje filtrování zpráv a logiky opakování síťových požadavků.
- Od aktualizace verze 1.0.5.0 (časové razítko: listopad 2020) podporuje konektor SQL Serveru RSA 2048, RSA 3072, RSA-HSM 2048 a RSA-HSM 3072.
- Počínaje aktualizovanou verzí 1.0.5.0 (časové razítko: listopad 2020) můžete odkazovat na konkrétní verzi klíče ve službě Azure Key Vault.
Ve výchozím nastavení je konektor nainstalován v C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault
. Toto umístění lze během instalace změnit. Pokud ho změníte, upravte skripty v další části.
Konektor nemá žádné rozhraní, ale pokud je úspěšně nainstalovaný, Microsoft.AzureKeyVaultService.EKM.dll
se na počítač nainstaluje. Toto sestavení je knihovna DLL pro kryptografického poskytovatele EKM, kterou je nutné zaregistrovat v SQL Serveru pomocí příkazu CREATE CRYPTOGRAPHIC PROVIDER
.
Instalace konektoru SQL Serveru také umožňuje volitelně stáhnout ukázkové skripty pro šifrování SQL Serveru.
Vysvětlení kódu chyby, nastavení konfigurace nebo úlohy údržby konektoru SQL Serveru najdete tady:
Krok 4: Přidání klíče registru pro podporu poskytovatele EKM
Varování
Úpravy registru by měly provádět uživatelé, kteří přesně vědí, co dělají. Pokud registr upravíte nesprávně, může dojít k vážným problémům. Pro přidání ochrany zálohujte registr před úpravou. Pokud dojde k problému, můžete registr obnovit.
Úpravu registru by měl provést správce počítače s SQL Serverem.
Ujistěte se, že je SQL Server nainstalovaný a spuštěný.
Spuštěním regedit otevřete Editor registru.
V
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
vytvořte klíč registruSQL Server Cryptographic Provider
. Úplná cesta jeHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
.Klepněte pravým tlačítkem myši na klíč registru
SQL Server Cryptographic Provider
a potom vyberte Oprávnění.Udělte oprávnění k úplnému řízení klíči registru
SQL Server Cryptographic Provider
uživatelskému účtu, na kterém běží služba SQL Serveru.Vyberte Použít a pak OK.
Zavřete Editor registru a restartujte službu SQL Serveru.
Poznámka
Pokud používáte transparentní šifrování dat s EKM nebo Azure Key Vault v instanci clusteru s podporou převzetí služeb, musíte dokončit další krok pro přidání
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
do rutiny kontrolního bodu registru clusteru, aby se registr mohl synchronizovat mezi uzly. Synchronizace usnadňuje obnovení databáze po selhání a rotaci klíčů.Pokud chcete přidat klíč registru do rutiny kontrolního bodu registru clusteru, spusťte v PowerShellu následující příkaz:
Add-ClusterCheckpoint -RegistryCheckpoint "SOFTWARE\Microsoft\SQL Server Cryptographic Provider" -Resourcename "SQL Server"
Krok 5: Konfigurace SQL Serveru
Poznámku o minimálních úrovních oprávnění potřebných pro každou akci v této části najdete v tématu B. Nejčastější dotazy.
Konfigurace databáze master
Spusťte sqlcmd nebo otevřete SQL Server Management Studio.
Nakonfigurujte SQL Server tak, aby používal EKM spuštěním následujícího skriptu Transact-SQL:
-- Enable advanced options. USE master; GO EXEC sp_configure 'show advanced options', 1; GO RECONFIGURE; GO -- Enable EKM provider EXEC sp_configure 'EKM provider enabled', 1; GO RECONFIGURE;
Zaregistrujte konektor SQL Serveru jako poskytovatele EKM pro SQL Server.
Vytvořte kryptografického zprostředkovatele pomocí konektoru SQL Server, což je poskytovatel EKM pro Azure Key Vault. V tomto příkladu je název zprostředkovatele
AzureKeyVault_EKM
.CREATE CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll'; GO
Poznámka
Délka cesty k souboru nesmí překročit 256 znaků.
Nastavte přihlašovací údaje SQL Serveru pro přihlášení k SQL Serveru pro použití trezoru klíčů.
Přihlašovací údaje musí být přidány do každého přihlášení, které bude provádět šifrování pomocí klíče z trezoru klíčů. Může to zahrnovat:
Přihlašovací jméno správce SQL Serveru, které používá trezor klíčů k nastavení a správě scénářů šifrování SQL Serveru.
Jiná přihlášení SQL Serveru, která můžou povolit transparentní šifrování dat (TDE) nebo jiné funkce šifrování SQL Serveru.
Mezi přihlašovacími údaji a přihlášeními je mapování 1:1. To znamená, že každé přihlášení musí mít jedinečné přihlašovací údaje.
Upravte tento Transact-SQL skript následujícími způsoby:
Upravte argument
IDENTITY
(DocsSampleEKMKeyVault
) 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 kroku 2: Vytvořenítrezoru klíčů . - Pokud používáte privátní cloud Azure (například Azure Government, Microsoft Azure provozovaný společností 21Vianet nebo Azure Germany), nahraďte argument
IDENTITY
identifikátorem URI trezoru vráceným v kroku 3 Vytvoření trezoru klíčů a klíče pomocí oddílu PowerShellu. Nezahrnujtehttps://
do identifikátoru URI trezoru klíčů.
- Pokud používáte globálníAzure, nahraďte argument
Nahraďte první část argumentu
SECRET
správcovským ID klienta Microsoft Entra ze kroku 1: Nastavte instanční objekt Microsoft Entra. V tomto příkladu je ID klientad956f6b9xxxxxxx
.Důležitý
Nezapomeňte odebrat pomlčky z ID aplikace (klienta).
Dokončete druhou část argumentu
SECRET
pomocí tajného klíče klienta z Krok 1: Nastavení instančního objektu služby Microsoft Entra. V tomto příkladu je tajný klíč klientayrA8X~PldtMCvUZPxxxxxxxx
. Konečný řetězec argumentuSECRET
bude dlouhá posloupnost písmen a číslic bez pomlček (s výjimkou oddílu Tajný klíč klienta v případě, že tajný klíč klienta obsahuje pomlčky).USE master; CREATE CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'DocsSampleEKMKeyVault', -- for public Azure -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.usgovcloudapi.net', -- for Azure Government -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.azure.cn', -- for Microsoft Azure operated by 21Vianet -- WITH IDENTITY = 'DocsSampleEKMKeyVault.vault.microsoftazure.de', -- for Azure Germany -- WITH IDENTITY = '<name of Managed HSM>.managedhsm.azure.net', -- for Managed HSM (HSM URI in the Azure portal resource) --<----Application (Client) ID ---><--Microsoft Entra app (Client) ID secret--> SECRET = 'd956f6b9xxxxxxxyrA8X~PldtMCvUZPxxxxxxxx' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM; -- Add the credential to the SQL Server administrator's domain login ALTER LOGIN [<domain>\<login>] ADD CREDENTIAL sysadmin_ekm_cred;
Příklad použití proměnných pro argument
CREATE CREDENTIAL
a programové odebrání pomlček z ID klienta najdete v tématu CREATE CREDENTIAL.Otevřete klíč služby Azure Key Vault v instanci SQL Serveru.
Bez ohledu na to, jestli jste vytvořili nový klíč nebo importovali asymetrický klíč, jak je popsáno v kroku 2: Vytvoření trezoru klíčů, musíte klíč otevřít. Otevřete ho zadáním názvu klíče v následujícím skriptu Transact-SQL.
Důležitý
Nezapomeňte nejprve dokončit požadavky registru pro tento krok.
- Nahraďte
EKMSampleASYKey
názvem, který má mít klíč na SQL Serveru. - Nahraďte
ContosoRSAKey0
názvem vašeho klíče ve službě Azure Key Vault nebo spravovaném HSM. Níže je příklad klíče bez verze.
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0', CREATION_DISPOSITION = OPEN_EXISTING;
Počínaje aktualizovanou verzí 1.0.5.0 konektoru SQL Serveru můžete odkazovat na konkrétní verzi klíče ve službě Azure Key Vault:
CREATE ASYMMETRIC KEY EKMSampleASYKey FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379', CREATION_DISPOSITION = OPEN_EXISTING;
V předchozím ukázkovém skriptu
1a4d3b9b393c4678831ccc60def75379
představuje konkrétní verzi klíče, který se použije. Pokud tento skript použijete, nezáleží na tom, jestli klíč aktualizujete novou verzí. Verze klíče (například)1a4d3b9b393c4678831ccc60def75379
se vždy použije pro databázové operace.- Nahraďte
Vytvořte nové přihlášení pomocí asymetrického klíče na SQL Serveru, který jste vytvořili v předchozím kroku.
--Create a Login that will associate the asymmetric key to this login CREATE LOGIN TDE_Login FROM ASYMMETRIC KEY EKMSampleASYKey;
Vytvořte nové přihlášení z asymetrického klíče na SQL Serveru. Odstraňte mapování přihlašovacích údajů v kroku 5 : Konfigurace SQL Serveru, aby bylo možné namapovat přihlašovací údaje na nové přihlášení.
--Now drop the credential mapping from the original association ALTER LOGIN [<domain>\<login>] DROP CREDENTIAL sysadmin_ekm_cred;
Upravte nové přihlášení a přiřaďte přihlašovací údaje EKM k novému přihlášení.
--Now add the credential mapping to the new Login ALTER LOGIN TDE_Login ADD CREDENTIAL sysadmin_ekm_cred;
Nakonfigurujte uživatelskou databázi tak, aby byla šifrovaná.
Vytvořte testovací databázi, která se bude šifrovat pomocí klíče služby Azure Key Vault.
--Create a test database that will be encrypted with the Azure Key Vault key CREATE DATABASE TestTDE;
Vytvořte šifrovací klíč databáze pomocí
ASYMMETRIC KEY
(EKMSampleASYKey
).USE <DB Name>; --Create an ENCRYPTION KEY using the ASYMMETRIC KEY (EKMSampleASYKey) CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256 ENCRYPTION BY SERVER ASYMMETRIC KEY EKMSampleASYKey;
Zašifrujte testovací databázi. Povolte TDE (transparentní šifrování dat) nastavením
ENCRYPTION ON
.--Enable TDE by setting ENCRYPTION ON ALTER DATABASE TestTDE SET ENCRYPTION ON;
Podrobnosti registru
Spuštěním následujícího dotazu Transact-SQL v databázi
master
zobrazte asymetrický klíč použitý.SELECT name, algorithm_desc, thumbprint FROM sys.asymmetric_keys;
Příkaz vrátí:
name algorithm_desc thumbprint EKMSampleASYKey RSA_2048 <key thumbprint>
V uživatelské databázi (
TestTDE
) spusťte následující Transact-SQL dotaz, který zobrazí použitý šifrovací klíč.SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('TestTDE');
Příkaz vrátí:
encryptor_type encryption_state_desc encryptor_thumbprint ASYMMETRIC KEY ENCRYPTED <key thumbprint>
Odklidit
Vyčistěte testovací objekty. Odstraňte všechny objekty vytvořené v tomto testovacím skriptu.
-- CLEAN UP USE master; GO ALTER DATABASE [TestTDE] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [TestTDE]; GO ALTER LOGIN [TDE_Login] DROP CREDENTIAL [sysadmin_ekm_cred]; DROP LOGIN [TDE_Login]; GO DROP CREDENTIAL [sysadmin_ekm_cred]; GO USE master; GO DROP ASYMMETRIC KEY [EKMSampleASYKey]; DROP CRYPTOGRAPHIC PROVIDER [AzureKeyVault_EKM]; GO
Ukázkové skripty najdete v blogu na transparentním šifrování dat SQL Serveru a rozšiřitelné správě klíčů pomocí služby Azure Key Vault.
Klíč registru
SQL Server Cryptographic Provider
se po odstranění tohoto klíče nebo po odstranění všech klíčů EKM automaticky nevymaže. Musí se vyčistit ručně. Čištění klíče registru by mělo být provedeno s extrémní opatrností, protože čištění registru může předčasně přerušit funkčnost EKM. Pokud chcete klíč registru vyčistit, odstraňte klíč registruSQL Server Cryptographic Provider
naHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft
.
Řešení problémů
Pokud se klíč registru HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider
nevytvořil nebo nejsou udělena požadovaná oprávnění, následující příkaz DDL selže:
CREATE ASYMMETRIC KEY EKMSampleASYKey
FROM PROVIDER [AzureKeyVault_EKM]
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
CREATION_DISPOSITION = OPEN_EXISTING;
Msg 33049, Level 16, State 2, Line 65
Key with name 'ContosoRSAKey0' does not exist in the provider or access is denied. Provider error code: 2058. (Provider Error - No explanation is available, consult EKM Provider for details)
Tajemství klientů, která brzy vyprší
Pokud přihlašovací údaje mají tajný klíč klienta, jehož platnost brzy vyprší, můžete k přihlašovacím údajům přiřadit nový tajný klíč.
Aktualizace tajného kódu původně vytvořeného v kroku 1: Nastavení instančního objektu Microsoft Entra.
Pomocí následujícího kódu upravte přihlašovací údaje pomocí stejné identity a nového tajného kódu. Nahraďte
<New Secret>
novým tajným kódem:ALTER CREDENTIAL sysadmin_ekm_cred WITH IDENTITY = 'DocsSampleEKMKeyVault', SECRET = '<New Secret>';
Restartujte službu SQL Serveru.
Poznámka
Pokud používáte EKM ve skupině dostupnosti ,budete muset změnit přihlašovací údaje a restartovat službu SQL Serveru na všech uzlech skupiny dostupnosti.
Otočení asymetrického klíče pomocí nového klíče AKV nebo nové verze klíče AKV
Poznámka
- Při ruční obměně klíče AKV, SQL Server podporuje jak klíče AKV bez verze, tak i klíče s verzí, a není nutné používat jiný klíč AKV.
- Původní klíč AKV lze otočit vytvořením nové verze, která může nahradit předchozí klíč vytvořený na SQL Serveru.
- Pro ruční rotaci klíčů musí být vytvořen nový asymetrický klíč SQL Serveru, který odkazuje na klíč bez verze nebo na verzovaný klíč, který byl rotován v AKV. Pro nový asymetrický klíč SQL Serveru se klíč AKV bez verze automaticky zvolí pomocí nejvyšší verze klíče v AKV. Pro klíč s konkrétní verzí je nutné uvést nejvyšší verzi v AKV pomocí syntaxe
WITH PROVIDER_KEY_NAME = <key_name>/<version>
. Šifrovací klíč databáze můžete změnit tak, aby se znovu zašifruje pomocí nového asymetrického klíče. Stejný název klíče (verzovaný nebo bez verze) lze použít se zásadami rotace AKV. Pro verzi klíče musí být přidána aktuální verze. Pro klíč bez verze použijte vždy stejný název klíče.
SQL Server nemá mechanismus pro automatickou obměnu asymetrického klíče používaného pro transparentní šifrování dat. Postup ručního otočení asymetrického klíče je následující.
Přihlašovací údaje použité v počátečním nastavení (
sysadmin_ekm_cred
) je možné znovu použít také pro obměně klíčů. Volitelně můžete vytvořit nové přihlašovací údaje pro nový asymetrický klíč.CREATE CREDENTIAL <new_credential_name> WITH IDENTITY = <key vault>, SECRET = 'existing/new secret' FOR CRYPTOGRAPHIC PROVIDER AzureKeyVault_EKM;
Přidejte přihlašovací údaje do objektu zabezpečení:
ALTER LOGIN [domain\userName]; ADD CREDENTIAL <new_credential_name>;
Vytvořte nový asymetrický klíč na základě nového klíče (po otočení klíče). Nový klíč může být klíč bez verze (
ContosoRSAKey0
v našem příkladu) nebo klíč s verzí (ContosoRSAKey0/1a4d3b9b393c4678831ccc60def75379
kde1a4d3b9b393c4678831ccc60def75379
je verze aktualizovaného klíče v AKV):CREATE ASYMMETRIC KEY <new_ekm_key_name> FROM PROVIDER [AzureKeyVault_EKM] WITH PROVIDER_KEY_NAME = <new_key_from_key_vault>, CREATION_DISPOSITION = OPEN_EXISTING;
Vytvořte nové přihlášení z nového asymetrického klíče:
CREATE LOGIN <new_login_name> FROM ASYMMETRIC KEY <new_ekm_key_name>;
Odstraňte přihlašovací údaje z hlavní entity:
ALTER LOGIN [domain\username] DROP CREDENTIAL <new_credential_name>;
Namapujte přihlašovací údaje AKV na nové přihlášení:
ALTER LOGIN <new_login_name>; ADD CREDENTIAL <new_credential_name>;
Upravte šifrovací klíč databáze (DEK) a přešifrujte ho pomocí nového asymetrického klíče:
USE [databaseName]; GO ALTER DATABASE ENCRYPTION KEY ENCRYPTION BY SERVER ASYMMETRIC KEY <new_ekm_key_name>;
Můžete ověřit nový asymetrický klíč a šifrovací klíč použitý v databázi:
SELECT encryptor_type, encryption_state_desc, encryptor_thumbprint FROM sys.dm_database_encryption_keys WHERE database_id = DB_ID('databaseName');
Tento kryptografický otisk by měl odpovídat klíči registru v cestě
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider\Azure Key Vault\<key_vault_url>\<thumbprint>
a poskytnout vámKeyUri
pro otočený klíč.
Důležitý
Obměna logické ochrany TDE serveru znamená přepnutí na nový asymetrický klíč nebo certifikát, který chrání klíč pro šifrování databáze (DEK). Obměny klíčů je online operace a dokončení by mělo trvat jenom několik sekund, protože se tím dešifruje a znovu zašifruje klíč DEK a ne celá databáze.
Po rotaci neodstraňovat předchozí verze klíče. Při obměně klíčů se některá data stále šifrují pomocí předchozích klíčů, jako jsou starší zálohy databáze, zálohované soubory protokolů, soubory virtuálních protokolů (VLF) a soubory transakčních protokolů. Pro obnovení databáze nebo obnovení databáze se můžou vyžadovat i předchozí klíče.