Otočení klíčů Always Encrypted pomocí aplikace SQL Server Management Studio
platí pro:SQL Server
Azure SQL Database
azure SQL Managed Instance
Tento článek popisuje úlohy rotace hlavních klíčů sloupců Always Encrypted a šifrovacích klíčů sloupců pomocí SQL Server Management Studio (SSMS).
Přehled správy klíčů Always Encrypted, včetně doporučení osvědčených postupů a důležitých aspektů zabezpečení, najdete v tématu Přehled správy klíčů pro funkci Always Encrypted.
Poznámka
Použití hlavních klíčů sloupců uložených v spravovaných HSM ve službě Azure Key Vault vyžaduje SSMS 18.9 nebo novější verzi.
Otočte hlavní klíče sloupců
Otočení hlavního klíče sloupce je proces nahrazení existujícího hlavního klíče sloupce novým hlavním klíčem sloupce. Pokud byl klíč kompromitován, může být nutné jej obměnit, nebo v souladu se zásadami vaší organizace či s požadavky na dodržování předpisů, které stanoví, že kryptografické klíče musí být pravidelně obměňovány. Obměny hlavního klíče sloupce zahrnují dešifrování šifrovacích klíčů sloupců, které jsou chráněné aktuálním hlavním klíčem sloupce, jejich opětovné šifrování pomocí nového hlavního klíče sloupce a aktualizace metadat klíče.
Krok 1: Zřízení nového primárního klíče sloupců
Postupujte podle kroků v Nastavení hlavních klíčů sloupců pomocí dialogu Hlavní klíč nového sloupce.
Krok 2: Šifrování šifrovacích klíčů sloupců pomocí nového hlavního klíče sloupce
Hlavní klíč sloupce obvykle chrání jeden nebo více šifrovacích klíčů sloupců. Každý šifrovací klíč sloupce má zašifrovanou hodnotu uloženou v databázi, která je produktem šifrování šifrovacího klíče sloupce pomocí hlavního klíče sloupce. V tomto kroku zašifrujte všechny šifrovací klíče sloupce, které jsou chráněné hlavním klíčem sloupce, který rotujete, pomocí nového hlavního klíče sloupce a uložte novou zašifrovanou hodnotu do databáze. V důsledku toho bude mít každý šifrovací klíč sloupce ovlivněný rotací dvě šifrované hodnoty: jednu hodnotu zašifrovanou stávajícím hlavním klíčem sloupce a novou hodnotu zašifrovanou pomocí nového hlavního klíče sloupce.
- Pomocí Průzkumníka objektůpřejděte do složky Zabezpečení>Always Encrypted klíče>sloupcové hlavní klíče a vyhledejte hlavní klíč sloupce, který měníte.
- Klikněte pravým tlačítkem myši na hlavní klávesu sloupce a vyberte Otočit.
- V dialogovém okně Rotace hlavního klíče sloupce vyberte název nového hlavního klíče sloupce, který jste vytvořili v kroku 1, v poli Cíl .
- Projděte si seznam šifrovacích klíčů sloupců chráněných stávajícími hlavními klíči sloupců. Tyto klíče budou ovlivněny otočením.
- Klepněte na tlačítko OK.
SQL Server Management Studio získá metadata šifrovacích klíčů sloupců, které jsou chráněny starým hlavním klíčem sloupce, a metadata starých a nových hlavních klíčů sloupců. Potom SSMS použije metadata hlavního klíče sloupce pro přístup k úložišti klíčů obsahujícímu starý hlavní klíč sloupce a dešifruje šifrovací klíče sloupců. Následně SSMS získá přístup k úložišti klíčů, které obsahuje nový hlavní klíč sloupce, s cílem vytvořit novou sadu šifrovaných hodnot pro šifrovací klíče sloupce, a poté přidá nové hodnoty do metadat (ke generování a vydávání příkazů ALTER COLUMN ENCRYPTION KEY (Transact-SQL)).
Poznámka
Ujistěte se, že každý šifrovací klíč sloupce šifrovaný pomocí původního hlavního klíče sloupce není šifrovaný s žádným jiným hlavním klíčem sloupce. Jinými slovy, každý šifrovací klíč sloupce, ovlivněný rotací, musí mít v databázi přesně jednu zašifrovanou hodnotu. Pokud některý šifrovací klíč sloupce má více než jednu zašifrovanou hodnotu, musíte tuto hodnotu odebrat, abyste mohli pokračovat v obměně (viz krok 4, jak odebrat šifrovanou hodnotu šifrovacího klíče sloupce).
Krok 3: Konfigurace aplikací pomocí nového hlavního klíče sloupce
V tomto kroku je potřeba zajistit, aby všechny klientské aplikace, které dotazují databázové sloupce chráněné hlavním klíčem sloupce, který obměňujete, získaly přístup k novému hlavnímu klíči sloupce (to znamená, že databázové sloupce šifrované šifrovacím klíčem sloupce, který je šifrovaný pomocí hlavního klíče sloupce, který se obměňuje). Tento krok závisí na typu úložiště klíčů, ve kterém je váš nový klíč hlavního sloupce. Například:
- Pokud je hlavním klíčem nového sloupce certifikát uložený v úložišti certifikátů Windows, musíte certifikát nasadit do stejného umístění úložiště certifikátů (aktuální uživatel nebo místní počítač) jako umístění zadané v cestě vašeho sloupcového hlavního klíče v databázi. Aplikace musí mít přístup k certifikátu:
- Pokud je certifikát uložený v umístění úložiště certifikátů aktuálního uživatele, musí se certifikát importovat do úložiště aktuálního uživatele identity (uživatele) aplikace.
- Pokud je certifikát uložen v umístění úložiště certifikátů místní počítač, musí mít identita aplikace systému Windows oprávnění pro přístup k certifikátu.
- Pokud je nový hlavní klíč sloupce uložený ve službě Microsoft Azure Key Vault, musí být aplikace implementována, aby se ověřila v Azure a má oprávnění pro přístup k klíči.
Podrobnosti najdete v tématu Vytvoření a uložení hlavních klíčů sloupců pro funkci Always Encrypted.
Poznámka
V tomto okamžiku rotace platí jak starý hlavní klíč sloupce, tak nový hlavní klíč sloupce a lze ho použít pro přístup k datům.
Krok 4: Vyčištění hodnot šifrovacího klíče sloupce zašifrovaných starým hlavním klíčem sloupce
Jakmile nakonfigurujete všechny aplikace tak, aby používaly nový hlavní klíč sloupce, odeberte z databáze hodnoty šifrovacích klíčů sloupců, které jsou šifrované pomocí starého hlavního klíče sloupce. Odebrání starých hodnot zajistí, že jste připraveni na další otočení (nezapomeňte, že každý šifrovací klíč sloupce chráněný hlavním klíčem sloupce, který se má otočit, musí mít přesně jednu zašifrovanou hodnotu).
Dalším důvodem pro vyčištění staré hodnoty před archivací nebo odebráním původního hlavního klíče sloupce je výkon: při dotazování na šifrovaný sloupec může být potřeba, aby se ovladač klienta s podporou Always Encrypted pokusil dešifrovat dvě hodnoty: starou a novou. Ovladač neví, které ze dvou hlavních klíčů sloupců jsou platné v prostředí aplikace, takže ovladač načte obě šifrované hodnoty ze serveru. Pokud dešifrování jedné z hodnot selže, protože je chráněna hlavním klíčem sloupce, který není k dispozici (například, pokud byl starý hlavní klíč sloupce odebrán z úložiště), pokusí se ovladač dešifrovat jinou hodnotu pomocí nového hlavního klíče sloupce.
Varování
Pokud odeberete hodnotu šifrovacího klíče sloupce před zpřístupněním příslušného hlavního klíče sloupce pro aplikaci, nebude už aplikace moct dešifrovat sloupec databáze.
- Pomocí Průzkumníka objektůpřejděte do složky Security>Always Encrypted Keys a vyhledejte existující hlavní klíč sloupce, který chcete nahradit.
- Klikněte pravým tlačítkem myši na stávající hlavní klíč sloupce a vyberte Vyčistit .
- Zkontrolujte seznam hodnot šifrovacího klíče sloupce, které se mají odebrat.
- Klepněte na tlačítko OK.
SQL Server Management Studio vydá příkazy ALTER COLUMN ENCRYPTION KEY (Transact-SQL) k odstranění zašifrovaných hodnot klíčů pro šifrování sloupců, které jsou zašifrované pomocí původního hlavního klíče sloupce.
Krok 5: Odstranění metadat pro starý hlavní klíč sloupce
Pokud se rozhodnete odebrat definici starého hlavního klíče sloupce z databáze, použijte následující postup.
- Pomocí Průzkumníka objektůpřejděte do složky Security>Always Encrypted Keys>Column Master Keys a vyhledejte původní hlavní klíč sloupce, který se má z databáze odebrat.
- Klikněte pravým tlačítkem myši na starý hlavní klíč sloupce a vyberte Odstranit. (Tím se vygeneruje a vystaví příkaz DROP COLUMN MASTER KEY (Transact-SQL) k odebrání metadat hlavního klíče sloupce.)
- Klepněte na tlačítko OK.
Poznámka
Po procesu otočení důrazně doporučujeme trvale neodstraňovat starý hlavní klíč sloupce. Místo toho byste měli zachovat původní hlavní klíč sloupce v aktuálním úložišti klíčů nebo ho archivovat na jiném zabezpečeném místě. Pokud obnovíte databázi ze záložního souboru k určitému bodu v čase před konfigurací nového hlavního klíče sloupce, budete potřebovat starý klíč pro přístup k datům.
Oprávnění pro otáčení hlavního klíče sloupce
Obměna hlavního klíče sloupce vyžaduje následující oprávnění databáze:
- ALTER ANY COLUMN MASTER KEY – vyžaduje se vytvoření metadat pro nový hlavní klíč sloupce a odstranění metadat pro starý hlavní klíč sloupce.
- ALTER ANY COLUMN ENCRYPTION KEY – vyžaduje se úprava metadat šifrovacího klíče sloupce (přidání nových šifrovaných hodnot).
Potřebujete také oprávnění k úložišti klíčů, abyste měli přístup ke starému hlavnímu klíči sloupce i novému hlavnímu klíči sloupce v úložištích klíčů. Podrobné informace o oprávněních k úložišti klíčů vyžadovaných pro operace správy klíčů najdete v tématu Vytvoření a uložení hlavních klíčů sloupců pro Always Encrypted a vyhledejte část, která je relevantní pro vaše úložiště klíčů.
Otočení šifrovacích klíčů sloupců
Obměna šifrovacího klíče sloupce zahrnuje dešifrování dat ve všech sloupcích, které jsou šifrované pomocí klíče, který se má vyměnit, a následné opětovné šifrování těchto dat pomocí nového šifrovacího klíče sloupce.
Poznámka
Obměna šifrovacího klíče sloupce může trvat velmi dlouho, pokud jsou tabulky obsahující sloupce zašifrované pomocí obměňovaného klíče velké. Zatímco se data znovu šifrují, aplikace nemůžou zapisovat do ovlivněných tabulek. Proto vaše organizace potřebuje naplánovat rotaci šifrovacího klíče sloupce velmi pečlivě. Chcete-li otočit šifrovací klíč sloupce, použijte Průvodce funkcí Always Encrypted.
- Otevřete průvodce pro vaši databázi: klikněte pravým tlačítkem myši na vaši databázi, přejděte na Úkolya potom klikněte na Zašifrovat sloupce.
- Zkontrolujte stránku Úvod a klepněte na tlačítko Další.
- Na stránce Výběr sloupce rozbalte tabulky a vyhledejte všechny sloupce, které chcete nahradit aktuálně šifrovaným starým šifrovacím klíčem sloupce.
- Pro každý sloupec zašifrovaný starým šifrovacím klíčem sloupce nastavte šifrovací klíč na nový automaticky vygenerovaný klíč. Poznámka: Alternativně můžete před spuštěním průvodce vytvořit nový šifrovací klíč sloupce – viz Zřízení šifrovacích klíčů sloupců pomocí dialogového okna Nový šifrovací klíč sloupce.
- Na stránce Konfigurace hlavního klíče vyberte umístění pro uložení nového klíče a vyberte zdroj hlavního klíče a klikněte na Další. Poznámka: Pokud používáte existující šifrovací klíč sloupce (ne automaticky vygenerovaný), není na této stránce žádná akce.
- Na stránce ověření zvolte, zda se má skript spustit okamžitě, nebo vytvořit skript PowerShellu, a potom klikněte na Další.
- Na stránce Souhrn zkontrolujte možnosti, které jste vybrali, poté klikněte na Dokončit a zavřete průvodce.
- Pomocí Průzkumníka objektůpřejděte do složky Zabezpečení/Always Encrypted klíče/Šifrovací klíče sloupce a vyhledejte starý šifrovací klíč sloupce, který chcete z databáze odebrat. Klikněte pravým tlačítkem myši na klíč a vyberte Odstranit.
Oprávnění pro obměně šifrovacích klíčů sloupců
Rotace šifrovacího klíče sloupce vyžaduje následující oprávnění databáze: ALTER ANY COLUMN MASTER KEY – vyžaduje se, pokud použijete nový automaticky vygenerovaný šifrovací klíč sloupce (nový hlavní klíč sloupce a jeho nová metadata se vygenerují). ALTER ANY COLUMN ENCRYPTION KEY -required pro přidání metadat pro nový šifrovací klíč sloupce.
Potřebujete také oprávnění k úložišti klíčů, abyste měli přístup k hlavním klíčům sloupců pro nový i starý šifrovací klíč sloupce. Podrobné informace o oprávněních k úložišti klíčů vyžadovaných pro operace správy klíčů najdete v tématu Vytvoření a uložení hlavních klíčů sloupců pro Always Encrypted a vyhledejte část, která je relevantní pro vaše úložiště klíčů.
Další kroky
- dotazování sloupců pomocí technologie Always Encrypted s nástrojem SQL Server Management Studio
- Vývoj aplikací pomocí funkce Always Encrypted
Viz také
- funkce Always Encrypted
- Přehled správy klíčů pro funkci Always Encrypted
- konfigurace funkce Always Encrypted pomocí aplikace SQL Server Management Studio
- Konfigurace Always Encrypted pomocí PowerShell
- CREATE COLUMN MASTER KEY (Transact-SQL)
- DROP COLUMN MASTER KEY (Transact-SQL)
- VYTVOŘIT ŠIFROVACÍ KLÍČ SLOUPCE (Transact-SQL)
- ALTER COLUMN ENCRYPTION KEY (Transact-SQL)
- ŠIFROVACÍ KLÍČ DROP COLUMN (Transact-SQL)
- sys.column_master_keys (Transact-SQL)
- sys.column_encryption_keys (Transact-SQL)