Sdílet prostřednictvím


Transparentní šifrování dat (TDE)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytický platformní systém (PDW)

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ů

Škodlivá strana, která ukradne fyzické médium, jako jsou jednotky nebo záložní pásky, ale 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.

Transparentní šifrování dat a souborů protokolů v reálném čase používá šifrování vstupně-výstupních operací a dešifrování dat a protokolů. Š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í.

Transparentní šifrování dat chrání neaktivní uložená data, což jsou soubory dat a protokolů. 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:

Transparentní šifrování dat není dostupné pro systémové databáze. Nedá se použít k šifrování master, modelnebo msdb. tempdb je automaticky šifrován, když uživatelská databáze povolila transparentní šifrování dat, ale není možné ho šifrovat přímo.

Transparentní šifrování dat neposkytuje šifrování mezi 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:

Informace o transparentním šifrování dat

Š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

Při použití transparentního šifrování dat se službou Azure SQL Database služba SQL Database automaticky vytvoří certifikát na úrovni serveru uložený v master databázi. Pokud chcete přesunout databázi transparentního šifrování dat ve službě SQL Database, nemusíte databázi pro operaci 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 ocertifikátch

Po povolení transparentního šifrování dat okamžitě zálohujte certifikát a jeho přidružený 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.

Zašifrovaný certifikát ponechte i v případě, že jste v databázi zakázali transparentní šifrování dat. 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, který překračuje datum vypršení platnosti k šifrování a dešifrování dat pomocí transparentního šifrování dat.

Hierarchie šifrování

Rozhraní API služby Windows Data Protection (DPAPI) je v kořenovém adresáři šifrovacího stromu, zabezpečuje hierarchii klíčů na úrovni počítače a slouží 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. Transparentní šifrování dat používá podobnou hierarchii až k certifikátu. Při použití transparentního master šifrování dat musí být dmk a certifikát uloženy v databázi. Nový klíč, který se používá pouze pro transparentní šifrování dat a označuje se jako šifrovací klíč databáze (DEK), se vytvoří a uloží do uživatelské databáze.

Následující obrázek znázorňuje architekturu šifrování transparentního šifrování dat. Při použití transparentního šifrování dat ve službě SQL Database se dají konfigurovat pouze položky na úrovni databáze (šifrovací klíč a ALTER DATABASE části databáze).

Diagram znázorňující architekturu transparentního šifrování dat

Povolení transparentního šifrování dat

Chcete-li použít transparentní šifrování dat, postupujte podle těchto kroků.

Platí pro: SQL Server.

  1. Vytvořte hlavní klíč.
  2. Vytvořte nebo získejte certifikát chráněný hlavním klíčem.
  3. Vytvořte šifrovací klíč databáze a chraňte ho pomocí certifikátu.
  4. 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

Operace šifrování a dešifrování jsou naplánovány na vlákna na pozadí sql Serverem. 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 pro databáze s povoleným transparentním šifrováním dat se také šifrují pomocí 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

Následující příkazy umožňují přijímat certifikáty transparentního šifrování dat pomocí hlavního klíče databáze k jejich šifrování. Pokud je zašifrujete jenom heslem, příkazy je zamítnou jako šifrátory.

Důležité

Pokud certifikáty po použití transparentního šifrování dat nastavíte jako chráněné heslem, stane se databáze po restartování nedostupná.

Následující tabulka obsahuje odkazy a vysvětlení příkazů a funkcí transparentního šifrování dat:

Příkaz nebo funkce Účel
VYTVOŘENÍ ŠIFROVACÍHO KLÍČE DATABÁZE Vytvoří klíč, který šifruje databázi.
ALTER DATABASE ENCRYPTION KEY (Změnit klíč šifrování databáze) Změní klíč, který šifruje databázi.
VYMAZAT ŠIFROVACÍ KLÍČ DATABÁZE Odebere klíč, který šifruje databázi.
Možnosti ALTER DATABASE SET Vysvětluje možnost, která se používá k povolení transparentního ALTER DATABASE šifrování dat.

Zobrazení katalogu a zobrazení dynamické správy

Následující tabulka ukazuje zobrazení katalogu transparentního šifrování dat 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 transparentního šifrování dat a příkaz mají jednotlivé požadavky na oprávnění, jak je popsáno v tabulkách uvedených výše.

Zobrazení metadat spojených s transparentním šifrováním dat vyžaduje VIEW DEFINITION oprávnění k certifikátu.

Úvahy

Zatímco probíhá kontrola opětovného šifrování operace šifrování databáze, operace údržby databáze jsou zakázané. 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 transparentním šifrování dat se šifrují 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 v zrcadlení databáze nebo přesouvání protokolů, obě databáze se šifrují. 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 ve stavu transparentního šifrování dat databáze, použijte audit SQL Serveru nebo auditování služby Azure SQL Database. U SQL Serveru se transparentní šifrování dat sleduje ve skupině DATABASE_OBJECT_CHANGE_GROUPakcí auditu, kterou najdete ve skupinách akcí a akcích auditování SQL Serveru.

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
  • Vyřazení databáze
  • Přechádí databázi do offline režimu
  • Odpojení databáze
  • Přechod databáze nebo skupiny souborů do READ ONLY stavu

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
  • Vyřazení databáze
  • Přechádí databázi do offline režimu
  • Odpojení databáze
  • Přechod databáze nebo skupiny souborů do READ ONLY stavu
  • ALTER DATABASE Použití příkazu
  • 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 zabraňují příkazům CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEYa ALTER DATABASE...SET ENCRYPTION příkazy:

  • Databáze je jen pro čtení nebo obsahuje skupiny souborů jen pro čtení.
  • Příkaz ALTER DATABASE je spuštěný.
  • Probíhá zálohování dat.
  • Databáze je v offline stavu nebo v podmínce obnovení.
  • 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í transparentního šifrování dat k dispozici 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

Pokud chcete povolit transparentní šifrování dat v databázi, musí SQL Server provést kontrolu šifrování. Kontrola načte každou stránku z datových souborů do fondu vyrovnávací paměti a potom zapíše zašifrované stránky zpět na disk.

Sql Server 2019 (15.x) má větší kontrolu nad kontrolou šifrování dat, která má 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.

K pozastavení kontroly šifrování transparentního šifrování dat použijte následující syntaxi:

ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;

Podobně použijte následující syntaxi k obnovení kontroly šifrování transparentního šifrování dat:

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 označuje, že existující kontrola byla pozastavena.

Důležité

Funkce pozastavení a obnovení transparentního šifrování dat není v současné době dostupná ve službě Azure SQL Database, Azure SQL Managed Instance a Azure Synapse Analytics.

Transparentní šifrování dat a transakční protokoly

Transparentní šifrování dat chrání datové soubory a neaktivní uložená data. Šifrování celé databáze po povolení transparentního šifrování dat v nešifrované databázi je šifrovatelná datová operace a doba, kterou trvá, závisí na systémových prostředcích, na kterých je tato databáze spuštěná. K určení stavu šifrování databáze je možné použít sys.dm_database_encryption_keys zobrazení dynamické správy.

Když je transparentní šifrování dat zapnuté, databázový stroj vynutí vytvoření nového transakčního protokolu, který bude šifrovaný šifrovacím klíčem databáze. Všechny protokoly vygenerované předchozími transakcemi nebo aktuálními dlouhotrvajícími transakcemi prokládání mezi změnou stavu transparentního šifrování dat nejsou šifrované.

Protokoly transakcí je možné monitorovat pomocí zobrazení dynamické správy sys.dm_db_log_info , která také ukazuje, jestli je soubor protokolu šifrovaný nebo ne pomocí vlf_encryptor_thumbprint sloupce, který je k dispozici v Azure SQL, a 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.

Před změnou DEK předchozí klíč DEK zašifruje všechna data zapsaná do transakčního protokolu.

Pokud dvakrát změníte klíč DEK, musíte před opětovnou změnou klíče DEK provést zálohu protokolu.

Transparentní šifrování dat a systémová databáze tempdb

Systémová tempdb databáze je šifrovaná, pokud je jakákoli jiná databáze v instanci SQL Serveru šifrovaná pomocí transparentního šifrování dat. 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 naleznete v tempdb tématu databáze tempdb.

Transparentní šifrování dat a replikace

Replikace automaticky nereplikuje data z databáze s povoleným transparentním šifrováním dat v šifrované podobě. Pokud chcete chránit databáze distribuce a odběratele, povolte transparentní šifrování dat 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í distribuce dat pro transakční a slučovací replikaci může také. 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.

Transparentní šifrování dat 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 FILESTREAM nejsou šifrovaná, ani když povolíte transparentní šifrování dat.

Transparentní šifrování dat 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í s povoleným transparentním šifrováním dat 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.

Odebrání transparentního šifrování dat

Odeberte šifrování z databáze pomocí příkazu ALTER DATABASE .

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

Pokud chcete zobrazit stav databáze, použijte zobrazení sys.dm_database_encryption_keys dynamické správy.

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.

Před odebráním klíče DEK pomocí šifrovacího klíče DROP DATABASE počkejte na dokončení dešifrování.

Důležité

Zálohujte hlavní klíč a certifikát, které se používají pro transparentní šifrování dat do bezpečného umístění. 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.

Transparentní šifrování dat a rozšíření fondu vyrovnávací paměti

Při šifrování databáze pomocí transparentního šifrování dat se soubory související s rozšířením fondu vyrovnávací paměti (BPE) neš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

Transparentní šifrování dat můžete povolit u databáze, která obsahuje objekty OLTP In-Memory. Pokud povolíte transparentní šifrování dat, v SQL Serveru 2016 (13.x) a Azure SQL Database se In-Memory záznamy protokolů OLTP a data zašifrují. V SQL Serveru 2014 (12.x) se In-Memory záznamy protokolu OLTP šifrují, pokud povolíte transparentní šifrování dat, ale soubory v MEMORY_OPTIMIZED_DATA této skupině souborů nejsou zašifrované.

Pokyny ke správě certifikátů používaných v transparentním šifrování dat

Pokud je databáze povolená pro transparentní šifrování dat, musíte zálohovat certifikát a hlavní klíč databáze a použít ho při přesouvání protokolů nebo zrcadlení 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. Tím dojde k nedostupné šifrované databázi.

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 pvt_key_last_backup_datesloupec NULL , databáze odpovídající danému řádku byla povolena pro transparentní šifrování dat, ale certifikát použitý k ochraně jeho DEK nebyl zálohován. Další informace o zálohování certifikátu najdete v tématu ZÁLOHOVÁNÍ CERTIFIKÁTU.