Sdílet prostřednictvím


Nastavení rozšiřitelné správy klíčů transparentního šifrování dat (TDE) na serveru SQL pomocí služby Azure Key Vault

platí pro:SQL Server

V tomto článku nainstalujete a nakonfigurujete konektor SQL Serveru pro Azure Key Vault.

Poznámka

Microsoft Entra ID se dříve označovala jako Azure Active Directory (Azure AD).

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:

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.

  1. Přihlaste se k webu Azure portala proveďte některou z následujících akcí.

    • Vyberte tlačítko Microsoft Entra ID.

      snímek obrazovky podokna služeb Azure

    • Vyberte Další služby a potom v podokně Všechny služby zadejte ID Microsoft Entra.

  2. 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.

    1. V části Spravovat ve vašem prostředku Microsoft Entra ID vyberte Registrace aplikací.

      snímek obrazovky se stránkou Přehled ID Microsoft Entra na webu Azure Portal

    2. Na stránce Registrace aplikací vyberte Nová registrace.

      snímek obrazovky s podoknem Registrace aplikací na webu Azure Portal

    3. V podokně Zaregistrovat aplikaci zadejte uživatelské jméno aplikace a pak vyberte Zaregistrovat.

      Snímek obrazovky podokna registrace aplikace

    4. V levém podokně vyberte Certifikáty & tajných kódů > Tajné kódy klienta > Nový tajný klíč klienta.

      snímek obrazovky s podoknem Certifikáty & tajných kódů aplikace na webu Azure Portal

    5. 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.

      Snímek obrazovky sekce Přidání tajného klíče klienta v Azure portálu pro aplikaci.

    6. 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.

      snímek obrazovky s hodnotou tajného kódu na webu Azure Portal

    7. 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.

      snímek obrazovky s hodnotou ID aplikace (klienta) v podokně Přehled

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.

  1. 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.

    snímek obrazovky s podoknem Vytvořit skupinu prostředků na webu Azure Portal

  2. 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.

    snímek obrazovky s podoknem Vytvořit trezor klíčů na webu Azure Portal

  3. 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.

    snímek obrazovky s podoknem Vytvořit trezor klíčů a kartou Konfigurace accessu na webu Azure Portal

  4. 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.

  5. 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.

  1. Přejděte k prostředku trezoru klíčů, který jste vytvořili, a vyberte nastavení řízení přístupu (IAM).

  2. Vyberte a poté přidejte,>,a přiřaďte roli.

    snímek obrazovky s tlačítkem Přidat přiřazení role v podokně Řízení přístupu (IAM) na webu Azure Portal

  3. 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ší.

    snímek obrazovky s výběrem přiřazení role na webu Azure Portal

  4. 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.

    snímek obrazovky s podoknem Vybrat členy pro přiřazení role na portálu Azure

  5. Vyberte , zkontrolujte a přiřaďte dvakrát, abyste dokončili přiřazení role.

  6. 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ší.

  7. 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.

  1. 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.

  2. 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ší

    Snímek obrazovky s odkazem Přidat Zásady Přístupu v podokně Zásady Přístupu

  3. Na kartě Objekt zabezpečení vyberte aplikaci vytvořenou v kroku 1.

    Snímek obrazovky s vyhledávacím polem aplikace v podokně Hlavní

  4. Vyberte Další a pak Vytvořit.

Vytvoření klíče

  1. 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ů.

  2. 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.

    snímek obrazovky s podoknem Vytvořit klíč

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:

  1. 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 .

  2. 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.

  3. 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.

  4. 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.

snímek obrazovky s průvodcem instalací konektoru SYSTÉMU SQL Server

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.

  1. Ujistěte se, že je SQL Server nainstalovaný a spuštěný.

  2. Spuštěním regedit otevřete Editor registru.

  3. V HKEY_LOCAL_MACHINE\SOFTWARE\Microsoftvytvořte klíč registru SQL Server Cryptographic Provider . Úplná cesta je HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQL Server Cryptographic Provider.

  4. Klepněte pravým tlačítkem myši na klíč registru SQL Server Cryptographic Provider a potom vyberte Oprávnění.

  5. 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.

    snímek obrazovky s klíčem registru EKM v Editoru registru

  6. Vyberte Použít a pak OK.

  7. 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

  1. Spusťte sqlcmd nebo otevřete SQL Server Management Studio.

  2. 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;
    
  3. 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ů.

  4. 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. Nezahrnujte https:// do identifikátoru URI trezoru klíčů.
    • 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 klienta d956f6b9xxxxxxx.

      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íč klienta yrA8X~PldtMCvUZPxxxxxxxx. Konečný řetězec argumentu SECRET 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.

  5. 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.

  6. 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;
    
  7. 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;
    
  8. 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á.

  1. 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;
    
  2. 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;
    
  3. 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

  1. 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>
    
  2. 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

  1. 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.

  2. 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íč registru SQL Server Cryptographic Provider na HKEY_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íč.

  1. Aktualizace tajného kódu původně vytvořeného v kroku 1: Nastavení instančního objektu Microsoft Entra.

  2. 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>';
    
  3. 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í.

  1. 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;
    
  2. Přidejte přihlašovací údaje do objektu zabezpečení:

    ALTER LOGIN [domain\userName];
    ADD CREDENTIAL <new_credential_name>;
    
  3. 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 kde 1a4d3b9b393c4678831ccc60def75379 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;
    
  4. 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>;
    
  5. Odstraňte přihlašovací údaje z hlavní entity:

    ALTER LOGIN [domain\username]
    DROP CREDENTIAL <new_credential_name>;
    
  6. Namapujte přihlašovací údaje AKV na nové přihlášení:

    ALTER LOGIN <new_login_name>;
    ADD CREDENTIAL <new_credential_name>;
    
  7. 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>;
    
  8. 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ám KeyUri 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.