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
Azure SQL Database
azure SQL Managed Instance
azure Synapse Analytics
Transparentní šifrování dat (TDE) šifruje SQL Server, Azure SQL Database a datové soubory Azure Synapse Analytics. Toto šifrování se označuje jako šifrování neaktivních uložených dat.
Pokud chcete pomoct zabezpečit uživatelskou databázi, můžete provést preventivní opatření, jako jsou:
- Návrh zabezpečeného systému
- Šifrování důvěrných prostředků
- Vytvoření brány firewall kolem databázových serverů
Nicméně zlovolná osoba, která odcizí fyzická média, jako jsou disky nebo záložní pásky, může databázi obnovit nebo připojit a procházet její data.
Jedním z řešení je šifrování citlivých dat v databázi a použití certifikátu k ochraně klíčů, které data šifrují. Toto řešení zabrání použití dat komukoli bez klíčů. Ale musíte naplánovat tento druh ochrany předem.
TDE provádí šifrování a dešifrování vstupně-výstupních operací datových souborů a souborů protokolu v reálném čase. Šifrování používá šifrovací klíč databáze (DEK). Spouštěcí záznam databáze ukládá klíč pro dostupnost během obnovení. DEK je symetrický klíč a je zabezpečený certifikátem, který databáze serveru master ukládá, nebo asymetrickým klíčem, který modul EKM chrání.
TDE chrání neaktivní data, tedy datové soubory a soubory protokolu. Umožňuje dodržovat mnoho zákonů, předpisů a pokynů stanovených v různých odvětvích. Tato schopnost umožňuje vývojářům softwaru šifrovat data pomocí šifrovacích algoritmů AES a 3DES beze změny stávajících aplikací.
Poznámka:
TDE není k dispozici pro systémové databáze. Nedá se použít k šifrování master, modelnebo msdb.
tempdb se automaticky zašifruje, když má uživatelská databáze povolené TDE, ale nelze ho zašifrovat přímo.
TDE neposkytuje šifrování napříč komunikačními kanály. Další informace o šifrování dat mezi komunikačními kanály najdete v tématu Šifrování připojení k SQL Serveru importem certifikátu.
Související témata:
- Transparentní šifrování dat pro SQL Database, SQL Managed Instance a Azure Synapse Analytics
- Začínáme s transparentním šifrováním dat (TDE) ve službě Azure Synapse Analytics
- Přesun databáze chráněné transparentním šifrováním dat na jiný SQL Server
- Povolit TDE v SQL Serveru pomocí EKM
- Použití konektoru SQL Serveru s funkcemi šifrování SQL
- Blog zabezpečení SQL Serveru o TDE a FAQ
O TDE
Šifrování souboru databáze se provádí na úrovni stránky. Stránky v šifrované databázi jsou před zápisem na disk zašifrovány a při čtení do paměti se dešifrují. Transparentní šifrování dat nezvětšuje velikost šifrované databáze.
Informace použitelné pro SLUŽBU SQL Database
Když používáte TDE s Azure SQL Database, služba SQL Database automaticky vytvoří certifikát na úrovni serveru uložený v databázi master. Pokud chcete přesunout databázi chráněnou pomocí TDE v SQL Database, nemusíte ji kvůli přesunu dešifrovat. Další informace o použití transparentního šifrování dat se službou SQL Database najdete v tématu Transparentní šifrování dat ve službě Azure SQL Database.
Informace použitelné pro SQL Server
Po zabezpečení databáze ji můžete obnovit pomocí správného certifikátu. Další informace o certifikátech naleznete v tématu Certifikáty a asymetrické klíče v SQL Serveru.
Po povolení TDE okamžitě zálohujte certifikát a jeho odpovídající privátní klíč. Pokud certifikát přestane být dostupný nebo pokud databázi obnovíte nebo připojíte na jiném serveru, budete potřebovat zálohy certifikátu a privátního klíče. V opačném případě nemůžete databázi otevřít. Certifikáty uložené v obsažené systémové databázi by se také měly zálohovat.
Ponechte certifikát používaný k šifrování, i když jste u databáze zakázali transparentní šifrování dat (TDE). I když databáze není šifrovaná, části transakčního protokolu můžou zůstat chráněné. Můžete také potřebovat certifikát pro některé operace, dokud neproděláte úplné zálohování databáze.
Stále můžete použít certifikát, jehož platnost již vypršela, k šifrování a dešifrování dat pomocí TDE.
Hierarchie šifrování
Rozhraní Windows Data Protection API (DPAPI) je u kořene hierarchie šifrování, zabezpečuje hierarchii klíčů na úrovni počítače a používá se k ochraně hlavního klíče služby (SMK) pro instanci databázového serveru. SMK chrání hlavní klíč databáze (DMK), který je uložený na úrovni uživatelské databáze a chrání certifikáty a asymetrické klíče. Tyto klíče zase chrání symetrické klíče, které chrání data. TDE používá podobnou hierarchii až k certifikátu. Když používáte TDE, musí být DMK a certifikát uloženy v databázi master. Nový klíč, používaný pouze pro TDE a označovaný jako šifrovací klíč databáze (DEK), je vytvořen a uložen v uživatelské databázi.
Následující obrázek znázorňuje architekturu šifrování TDE. Při použití TDE ve službě SQL Database lze nakonfigurovat pouze položky na úrovni databáze (šifrovací klíč databáze a části ALTER DATABASE), které může konfigurovat uživatel.
Povolte TDE
Chcete-li použít TDE, postupujte podle těchto kroků.
Platí pro: SQL Server.
- Vytvořte hlavní klíč.
- Vytvořte nebo získejte certifikát chráněný hlavním klíčem.
- Vytvořte šifrovací klíč databáze a chraňte ho pomocí certifikátu.
- Nastavte databázi tak, aby používala šifrování.
Následující příklad ukazuje šifrování a dešifrování AdventureWorks2025 databáze pomocí certifikátu MyServerCert , který je nainstalován na serveru.
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE CERTIFICATE MyServerCert
WITH SUBJECT = 'My DEK Certificate';
GO
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION ON;
GO
Šifrovací a dešifrovací operace jsou SQL Serverem plánovány na vláknech na pozadí. Pokud chcete zobrazit stav těchto operací, použijte zobrazení katalogu a zobrazení dynamické správy v tabulce, která se zobrazí dále v tomto článku.
Upozornění
Záložní soubory databází s povoleným transparentním šifrováním dat jsou rovněž zašifrovány pomocí klíče DEK. V důsledku toho musí být při obnovení těchto záloh k dispozici certifikát, který chrání klíč DEK. Proto kromě zálohování databáze nezapomeňte udržovat zálohy certifikátů serveru. Pokud už certifikáty nejsou k dispozici, dojde ke ztrátě dat.
Další informace najdete v tématu Certifikáty SQL Serveru a asymetrické klíče.
Příkazy a funkce
Aby následující příkazy přijímaly certifikáty TDE, použijte k jejich zašifrování hlavní klíč databáze. Pokud je zašifrujete jenom heslem, příkazy je zamítnou jako šifrátory.
Důležité
Pokud certifikáty poté, co je použije TDE, nastavíte jako chráněné heslem, databáze bude po restartu nedostupná.
Následující tabulka uvádí odkazy a vysvětlení příkazů a funkcí TDE:
| Příkaz nebo funkce | Účel |
|---|---|
| CREATE DATABASE ENCRYPTION KEY | Vytvoří klíč, který šifruje databázi. |
| ALTER DATABASE ENCRYPTION KEY | Změní klíč, který šifruje databázi. |
| DROP DATABASE ENCRYPTION KEY | Odebere klíč, který šifruje databázi. |
| ALTER DATABASE SET možnosti | Vysvětluje možnost ALTER DATABASE, která se používá k povolení TDE. |
Zobrazení katalogu a zobrazení dynamické správy
Následující tabulka zobrazuje zobrazení katalogu TDE a zobrazení dynamické správy (DMV).
| Zobrazení katalogu nebo zobrazení dynamické správy | Účel |
|---|---|
| sys.databases | Zobrazení katalogu zobrazující informace o databázi |
| sys.certificates | Zobrazení katalogu, které zobrazuje certifikáty v databázi |
| sys.dm_database_encryption_keys | Zobrazení dynamické správy, které poskytuje informace o šifrovacích klíčích a stavu šifrování databáze |
Povolení
Každá funkce TDE i každý příkaz má vlastní požadavky na oprávnění, jak je popsáno v tabulkách uvedených výše.
Zobrazení metadat souvisejících s TDE vyžaduje oprávnění VIEW DEFINITION k certifikátu.
Úvahy
Během kontroly opětovného zašifrování v rámci operace šifrování databáze jsou operace údržby databáze zakázány. K provádění operací údržby můžete použít nastavení režimu jednoho uživatele pro databázi. Další informace naleznete v tématu Nastavení databáze na režim jednoho uživatele.
sys.dm_database_encryption_keys Pomocí zobrazení dynamické správy vyhledejte stav šifrování databáze. Další informace najdete v části Zobrazení katalogu a zobrazení dynamické správy dříve v tomto článku.
V TDE jsou šifrovány všechny soubory a skupiny souborů v databázi. Pokud je v databázi označena READ ONLYnějaká skupina souborů, operace šifrování databáze selže.
Pokud používáte databázi při zrcadlení databáze nebo přenášení protokolů transakcí, jsou obě databáze zašifrované. Transakce protokolu se při odesílání mezi nimi šifrují.
Důležité
Fulltextové indexy se šifrují, když je databáze nastavená pro šifrování. Tyto indexy vytvořené v SYSTÉMU SQL Server 2005 (9.x) a starších verzích se importují do databáze sql Serverem 2008 (10.0.x) a novějšími verzemi a jsou šifrované transparentním šifrováním dat.
Návod
Pokud chcete monitorovat změny stavu TDE databáze, použijte Audit SQL Serveru nebo auditování Azure SQL Database. U SQL Serveru je transparentní šifrování dat (TDE) evidováno ve skupině akcí auditu DATABASE_OBJECT_CHANGE_GROUP, kterou najdete v části Skupiny akcí auditu a akce v SQL Server Auditu.
Omezení
Během počátečního šifrování databáze, změny klíče nebo dešifrování databáze jsou zakázány následující operace:
- Vyřazení souboru ze skupiny souborů v databázi
- Odstranění databáze
- Přechádí databázi do offline režimu
- Odpojení databáze
- Přechod databáze nebo skupiny souborů do
READ ONLYstavu
Následující operace jsou zakázány během CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEYa ALTER DATABASE...SET ENCRYPTION příkazy:
- Vyřazení souboru ze skupiny souborů v databázi
- Odstranění databáze
- Přechádí databázi do offline režimu
- Odpojení databáze
- Přechod databáze nebo skupiny souborů do
READ ONLYstavu - Použití příkazu
ALTER DATABASE - Spuštění zálohy databáze nebo databázového souboru
- Spuštění obnovení databáze nebo souboru databáze
- Vytvoření snímku
Následující operace nebo podmínky znemožňují použití příkazů CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY a ALTER DATABASE...SET ENCRYPTION:
- Databáze je jen pro čtení nebo obsahuje skupiny souborů jen pro čtení.
- Příkaz
ALTER DATABASEje spuštěný. - Probíhá zálohování dat.
- Databáze je ve stavu offline nebo ve stavu obnovy.
- Probíhá snímek.
- Úlohy údržby databáze jsou spuštěné.
Při vytváření databázových souborů není při povoleném transparentním šifrování dat (TDE) dostupná okamžitá inicializace souborů.
Pokud chcete klíč DEK zašifrovat asymetrickým klíčem, musí být asymetrický klíč na rozšiřitelném poskytovateli správy klíčů.
Kontrola transparentního šifrování dat (TDE)
Aby bylo možné v databázi povolit transparentní šifrování dat (TDE), musí SQL Server provést skenování šifrování. Skenování načte všechny stránky z datových souborů do vyrovnávací paměti a potom zapíše zašifrované stránky zpět na disk.
Abyste měli větší kontrolu nad kontrolou šifrování, zavádí SQL Server 2019 (15.x) kontrolu TDE, která podporuje syntaxi pozastavení a obnovení. Kontrolu můžete pozastavit, když je zatížení v systému náročné nebo během důležitých obchodních hodin, a pak kontrolu obnovit později.
Pomocí následující syntaxe pozastavíte kontrolu šifrování TDE:
ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;
Podobně použijte následující syntaxi k pokračování v kontrole šifrování TDE:
ALTER DATABASE <db_name> SET ENCRYPTION RESUME;
Sloupec encryption_scan_state byl přidán do sys.dm_database_encryption_keys zobrazení dynamické správy. Zobrazuje aktuální stav kontroly šifrování. Existuje také nový sloupec s názvem encryption_scan_modify_date, který obsahuje datum a čas poslední změny stavu kontroly šifrování.
Pokud se instance SQL Serveru restartuje, když je pozastavena jeho kontrola šifrování, zaprotokoluje se zpráva v protokolu chyb během spuštění. Zpráva znamená, že existující skenování bylo pozastaveno.
Důležité
Funkce pozastavení a obnovení kontroly TDE není v současné době dostupná ve službách Azure SQL Database, Azure SQL Managed Instance a Azure Synapse Analytics.
TDE a protokoly transakcí
TDE chrání datové soubory a soubory protokolu v klidovém stavu. Zašifrování celé databáze po povolení TDE u nešifrované databáze je rozsáhlá datová operace a doba potřebná k jeho dokončení závisí na systémových prostředcích, na nichž tato databáze běží. K určení stavu šifrování databáze je možné použít sys.dm_database_encryption_keys zobrazení dynamické správy.
Když je zapnuto TDE, Databázový stroj vynutí vytvoření nového protokolu transakcí, který bude zašifrován pomocí šifrovacího klíče databáze. Jakýkoli záznam protokolu vygenerovaný předchozími transakcemi nebo aktuálními dlouho běžícími transakcemi probíhajícími během změny stavu TDE není zašifrován.
Protokoly transakcí lze monitorovat pomocí DMV sys.dm_db_log_info, které také zobrazuje, zda je soubor protokolu šifrovaný, a to pomocí sloupce vlf_encryptor_thumbprint, který je k dispozici v Azure SQL a v SQL Serveru 2019 (15.x) a novějších verzích. Pokud chcete zjistit stav šifrování souboru protokolu pomocí encryption_state sloupce v sys.dm_database_encryption_keys zobrazení, tady je ukázkový dotaz:
USE AdventureWorks2022;
GO
/* The value 3 represents an encrypted state
on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO
Další informace o architektuře protokolu SQL Serveru naleznete v transakčním protokolu.
Než dojde ke změně klíče DEK, předchozí klíč DEK zašifruje všechna data zapsaná do transakčního logu.
Pokud dvakrát změníte klíč DEK, musíte před opětovnou změnou klíče DEK provést zálohu protokolu.
TDE a systémová databáze tempdb
Databáze systému tempdb je zašifrovaná, pokud je pomocí TDE zašifrovaná jakákoli jiná databáze v instanci SQL Serveru. Toto šifrování může mít vliv na výkon pro nešifrované databáze ve stejné instanci SQL Serveru. Další informace o systémové databázi tempdb naleznete v tématu Databáze tempdb.
TDE a replikace
Replikace automaticky nereplikuje data z databáze s povoleným TDE v zašifrované podobě. Pokud chcete chránit distribuční databázi a databáze odběratelů, povolte TDE samostatně.
Replikace snímků může ukládat data do nešifrovaných zprostředkujících souborů, jako jsou soubory BCP. Počáteční distribuci dat lze také použít pro transakční a slučovací replikaci. Během této replikace můžete povolit šifrování pro ochranu komunikačního kanálu.
Další informace naleznete v tématu Šifrování připojení k SQL Serveru importem certifikátu.
TDE a skupiny dostupnosti
Do skupiny dostupnosti AlwaysOn můžete přidat šifrovanou databázi.
Pokud chcete šifrovat databáze, které jsou součástí skupiny dostupnosti, vytvořte hlavní klíč a certifikáty nebo asymetrický klíč (EKM) na všech sekundárních replikách před vytvořením šifrovacího klíče databáze na primární replice.
Pokud se certifikát používá k ochraně klíče DEK, zálohujte certifikát vytvořený na primární replice a pak vytvořte certifikát ze souboru na všech sekundárních replikách před vytvořením klíče DEK na primární replice.
Transparentní šifrování dat a FILESTREAM
Data typu FILESTREAM nejsou šifrována, ani když povolíte transparentní šifrování dat (TDE).
TDE a zálohy
Certifikáty se běžně používají v transparentním šifrování dat k ochraně DEK. Certifikát musí být vytvořen v master databázi. Záložní soubory databází, které mají povolené TDE, se také šifrují pomocí DEK. V důsledku toho musí být při obnovení z těchto záloh k dispozici certifikát, který chrání klíč DEK. To znamená, že kromě zálohování databáze musíte udržovat zálohy certifikátů serveru, abyste zabránili ztrátě dat. K ztrátě dat dochází, pokud už certifikát není k dispozici.
Odebrat TDE
Odeberte šifrování z databáze pomocí příkazu ALTER DATABASE .
ALTER DATABASE <db_name> SET ENCRYPTION OFF;
K zobrazení stavu databáze použijte zobrazení dynamické správy sys.dm_database_encryption_keys.
Poznámka:
Zatímco probíhá proces šifrování, ALTER DATABASE příkazy nejsou v databázi povolené. Dokud se proces šifrování nedokončí, nemůžete zahájit dešifrování databáze.
Než pomocí DROP DATABASE ENCRYPTION KEY odeberete klíč DEK, počkejte na dokončení dešifrování.
Důležité
Zálohujte hlavní klíč a certifikát používané pro transparentní šifrování dat (TDE) na bezpečné místo. Hlavní klíč a certifikát jsou potřeba k obnovení záloh, které byly pořízeny při šifrování databáze transparentním šifrováním dat. Po odebrání DEK proveďte zálohu protokolu následovanou čerstvou úplnou zálohou dešifrované databáze.
TDE a rozšíření vyrovnávací paměti
Při šifrování databáze pomocí TDE se soubory související s rozšířením fondu vyrovnávací paměti (BPE) nezašifrují. U těchto souborů použijte nástroje pro šifrování, jako je BitLocker nebo EFS, na úrovni systému souborů.
Transparentní šifrování dat a In-Memory OLTP
TDE (transparentní šifrování dat) můžete povolit pro databázi, která obsahuje objekty technologie In-Memory OLTP. V SQL Serveru 2016 (13.x) a Azure SQL Database jsou záznamy protokolu a data technologie In-Memory OLTP šifrovány, pokud povolíte TDE. V SQL Serveru 2014 (12.x) jsou záznamy protokolu technologie In-Memory OLTP šifrovány, pokud povolíte TDE, ale soubory ve skupině souborů MEMORY_OPTIMIZED_DATA nejsou šifrované.
Pokyny pro správu certifikátů používaných v TDE
Pokud má databáze povoleno TDE a používá se pro log shipping nebo zrcadlení databáze, musíte zálohovat certifikát a hlavní klíč databáze. Certifikáty uložené v obsažené systémové databázi by se také měly zálohovat.
Certifikát použitý k ochraně DEK by se nikdy neměl vyhodit z master databáze. To způsobí, že šifrovaná databáze bude nepřístupná.
Zpráva podobná následující (chyba 33091) se vyvolá po spuštění CREATE DATABASE ENCRYPTION KEY , pokud se certifikát použitý v příkazu ještě nezazálohoval.
Výstraha
Certifikát použitý k šifrování šifrovacího klíče databáze nebyl zálohován. Certifikát a privátní klíč přidružený k certifikátu byste měli okamžitě zálohovat. Pokud se certifikát někdy stane nedostupným nebo pokud je nutné databázi obnovit nebo připojit na jiném serveru, musíte mít zálohy certifikátu i privátního klíče nebo databázi nebudete moct otevřít.
Následující dotaz se dá použít k identifikaci certifikátů používaných v transparentním šifrování dat, které nebyly zálohovány od okamžiku vytvoření.
SELECT pvt_key_last_backup_date,
Db_name(dek.database_id) AS encrypteddatabase,
c.name AS Certificate_Name
FROM sys.certificates AS c
INNER JOIN sys.dm_database_encryption_keys AS dek
ON c.thumbprint = dek.encryptor_thumbprint;
Pokud je sloupec pvt_key_last_backup_dateNULL, databáze odpovídající tomuto řádku má povolené TDE, ale certifikát použitý k ochraně jejího klíče DEK nebyl zazálohován. Další informace o zálohování certifikátu naleznete v tématu BACKUP CERTIFICATE.