TDE (Transparent Data Encryption)

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen) JaAzure SQL-Datenbank JaVerwaltete Azure SQL-Instanz JaAzure Synapse Analytics JaParallel Data Warehouse

Transparente Datenverschlüsselung (Transparent Data Encryption, TDE) verschlüsselt SQL Server-, Azure SQL-Datenbank- und Azure Synapse Analytics-Datendateien. Diese Verschlüsselung ist auch als Verschlüsselung von ruhenden Daten bekannt.

Sie können die folgenden Vorkehrungen treffen, um eine Datenbank zu sichern:

  • Entwerfen eines sicheren Systems
  • Verschlüsseln vertraulicher Ressourcen
  • Erstellen einer Firewall für die Datenbankserver

Jedoch kann eine böswillige Partei, die physische Medien wie Datenträger oder Sicherungsbänder stiehlt, die Datenbank wiederherstellen oder anfügen und ihre Daten durchsuchen.

Eine Lösung dieses Problems besteht darin, die sensiblen Daten in einer Datenbank zu verschlüsseln und ein Zertifikat zum Schützen der Schlüssel zu verwenden, die die Daten verschlüsseln. Mit dieser Lösung wird verhindert, dass Personen ohne die Schlüssel die Daten verwenden können. Diese Art von Schutz müssen Sie jedoch im Voraus planen.

TDE führt die E/A-Verschlüsselung und -Entschlüsselung von Daten- und Protokolldateien in Echtzeit durch. Die Verschlüsselung nutzt einen DEK (Database Encryption Key, Datenbankverschlüsselungsschlüssel). Der Datenbankstartdatensatz speichert den Schlüssel, damit er für die Wiederherstellung verfügbar ist. Der DEK ist ein symmetrischer Schlüssel. Dieser wird von einem Zertifikat, das in der Masterdatenbank des Servers gespeichert wird, oder von einem asymmetrischen Schlüssel geschützt, der von einem EKM-Modul geschützt wird.

TDE schützt ruhende Daten, also die Daten- und Protokolldateien. Sie entspricht den in vielen Branchen etablierten Gesetzen, Bestimmungen und Richtlinien. Dadurch können Softwareentwickler Daten mithilfe der AES- und 3DES-Verschlüsselungsalgorithmen verschlüsseln, ohne vorhandene Anwendungen ändern zu müssen.

Informationen zu TDE

Die Verschlüsselung der Datenbankdatei erfolgt auf Seitenebene. In einer verschlüsselten Datenbank werden die Seiten verschlüsselt, bevor sie auf den Datenträger geschrieben werden, und entschlüsselt, wenn sie in den Arbeitsspeicher gelesen werden. TDE erhöht nicht die Größe der verschlüsselten Datenbank.

Informationen zu SQL-Datenbank

Wenn Sie TDE mit SQL-Datenbank V12 verwenden, erstellt SQL-Datenbank automatisch das Zertifikat auf Serverebene, das in der Masterdatenbank gespeichert wird. Beim Verschieben einer TDE-Datenbank nach SQL-Datenbank muss die Datenbank für den Verschiebevorgang nicht entschlüsselt werden. Weitere Informationen zur Verwendung von TDE mit SQL-Datenbank finden Sie unter Transparente Datenverschlüsselung in Azure SQL-Datenbank.

Informationen zu SQL Server

Nachdem Sie eine Datenbank gesichert haben, können Sie diese mithilfe des richtigen Zertifikats wiederherstellen. Weitere Informationen zu Zertifikaten finden Sie unter SQL Server Certificates and Asymmetric Keys.

Sobald Sie TDE aktiviert haben, sollten Sie umgehend das Zertifikat und den zugehörigen privaten Schlüssel sichern. Wenn das Zertifikat nicht mehr verfügbar ist oder Sie die Datenbank auf einem anderen Server wiederherstellen oder anfügen, benötigen Sie Sicherungen des Zertifikats und des privaten Schlüssels. Andernfalls können Sie die Datenbank nicht öffnen.

Behalten Sie das verschlüsselnde Zertifikat, selbst wenn Sie TDE für die Datenbank deaktiviert haben. Obwohl die Datenbank nicht verschlüsselt wird, werden Teile des Transaktionsprotokolls möglicherweise weiterhin geschützt. Möglicherweise benötigen Sie das Zertifikat auch für einige Vorgänge, bis Sie eine vollständige Datenbanksicherung durchgeführt haben.

Sie können ein Zertifikat, dessen Ablaufdatum überschritten wurde, weiterhin zum Verschlüsseln und Entschlüsseln von Daten mit TDE verwenden.

Verschlüsselungshierarchie

Die folgende Abbildung zeigt die Architektur der TDE-Verschlüsselung. Nur die Datenbankebenenelemente (der Datenbankverschlüsselungsschlüssel und die ALTER DATABASE-Teile) können bei der Verwendung von TDE in SQL-Datenbank vom Benutzer konfiguriert werden.

TDE-Architektur

Aktivieren von TDE

Führen Sie folgende Schritte aus, um TDE zu verwenden:

Gilt für: SQL Server.

  1. Erstellen Sie einen Hautschlüssel.

  2. Erstellen oder beziehen Sie ein vom Hauptschlüssel geschütztes Zertifikat.

  3. Erstellen Sie einen Verschlüsselungsschlüssel für die Datenbank, und schützen Sie ihn mithilfe des Zertifikats.

  4. Legen Sie die Verschlüsselung für die Datenbank fest.

Im folgenden Beispiel wird die Verschlüsselung und Entschlüsselung der AdventureWorks2012-Datenbank mithilfe eines Zertifikats namens MyServerCert veranschaulicht, das auf dem Server installiert ist.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
SET ENCRYPTION ON;
GO

Die Verschlüsselungs- und Entschlüsselungsvorgänge werden in von SQL Servergeplanten Hintergrundthreads ausgeführt. Verwenden Sie die Katalogsichten und dynamischen Verwaltungssichten der Tabelle, die im späteren Verlauf dieses Artikels gezeigt wird, um den Status dieser Vorgänge anzuzeigen.

Achtung

Sicherungsdateien für Datenbanken, für die TDE aktiviert wurde, werden ebenfalls mit dem Datenbankverschlüsselungsschlüssel verschlüsselt. Darum muss bei der Wiederherstellung dieser Sicherungen das Zertifikat, das zum Verschlüsseln des Verschlüsselungsschlüssels für die Datenbank verwendet wurde, verfügbar sein. Stellen Sie daher zusätzlich zum Sichern der Datenbank sicher, dass Sie Sicherungen der Serverzertifikate anlegen. Wenn die Zertifikate nicht mehr verfügbar sind, kann es zu Datenverlust kommen.

Weitere Informationen finden Sie unter SQL Server Certificates and Asymmetric Keys.

Befehle und Funktionen

Damit die folgenden Anweisungen TDE-Zertifikate akzeptieren, verwenden Sie einen Datenbankhauptschlüssel, um sie zu verschlüsseln. Wenn Sie diese nur mit einem Kennwort verschlüsseln, lehnen die Anweisungen die Verschlüsselungen ab.

Wichtig

Wenn Sie das Zertifikatkennwort schützen, nachdem es von TDE verwendet wird, kann nach einem Neustart nicht auf die Datenbank zugegriffen werden.

Die folgende Tabelle bietet Links und Erläuterungen zu den Befehlen und Funktionen von TDE:

Befehl oder Funktion Zweck
CREATE DATABASE ENCRYPTION KEY (Transact-SQL) Erstellt einen Schlüssel, der die Datenbank verschlüsselt
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) Ändert den Schlüssel, der die Datenbank verschlüsselt
DROP DATABASE ENCRYPTION KEY (Transact-SQL) Entfernt den Schlüssel, der die Datenbank verschlüsselt
ALTER DATABASE SET-Optionen (Transact-SQL) Erklärt die ALTER DATABASE-Option, mit der TDE aktiviert wird

Katalogsichten und dynamische Verwaltungssichten

In der folgenden Tabelle werden die Katalogsichten und die dynamischen Verwaltungssichten von TDE erläutert.

Katalogsicht oder dynamische Verwaltungssicht Zweck
sys.databases (Transact-SQL) Katalogsicht, die Datenbankinformationen anzeigt
sys.certificates (Transact-SQL) Katalogsicht, die die Zertifikate in einer Datenbank anzeigt
sys.dm_database_encryption_keys (Transact-SQL) Dynamische Verwaltungssicht, die Informationen zu den Verschlüsselungsschlüsseln einer Datenbank und dem Zustand der Verschlüsselung bereitstellt

Berechtigungen

Jede Funktion und jeder Befehl von TDE erfordert bestimmte Berechtigungen, die in den zuvor gezeigten Tabellen beschrieben wurden.

Zum Anzeigen der Metadaten, die im Zusammenhang mit TDE stehen, ist die VIEW DEFINITION-Berechtigung für ein Zertifikat erforderlich.

Überlegungen

Während eine erneute Verschlüsselungsprüfung für einen Datenbankverschlüsselungsvorgang ausgeführt wird, sind Wartungsvorgänge für die Datenbank deaktiviert. Sie können den Einzelbenutzermodus für die Datenbank verwenden, um Wartungsvorgänge durchzuführen. Weitere Informationen finden Sie unter So legen Sie den Einzelbenutzermodus für eine Datenbank fest.

Verwenden Sie die dynamische Verwaltungssicht „sys.dm_database_encryption_keys“, um den Zustand der Datenbankverschlüsselung zu ermitteln. Weitere Informationen finden Sie im Abschnitt „Katalogsichten und dynamische Verwaltungssichten“ weiter oben in diesem Artikel.

Bei TDE werden alle Dateien und Dateigruppen in einer Datenbank verschlüsselt. Wenn eine Dateigruppe in einer Datenbank als READ ONLY gekennzeichnet ist, schlägt der Datenbankverschlüsselungsvorgang fehl.

Wenn Sie eine Datenbank bei der Datenbankspiegelung oder beim Protokollversand verwenden, werden beide Datenbanken verschlüsselt. Die Protokolltransaktionen werden für die Übertragung zwischen den Datenbanken verschlüsselt.

Wichtig

Volltextindizes werden verschlüsselt, wenn für eine Datenbank die Verschlüsselung festgelegt ist. Solche Indizes, die in einer SQL Server-Version vor SQL Server 2008 erstellt wurden, werden von SQL Server 2008 oder höher in die Datenbank importiert und von TDE verschlüsselt.

Tipp

Verwenden Sie SQL Server Audit oder SQL-Datenbanküberwachung, um die Veränderungen im TDE-Status einer Datenbank zu überwachen. Bei SQL Server wird TDE unter der Überwachungsaktionsgruppe DATABASE_CHANGE_GROUP nachverfolgt, die Sie in SQL Server Audit-Aktionsgruppen und -Aktionen finden können.

Beschränkungen

Die folgende Vorgänge sind während der ersten Datenbankverschlüsselung, einer Schlüsseländerung oder der Datenbankentschlüsselung nicht erlaubt:

  • Löschen einer Datei aus einer Dateigruppe in einer Datenbank

  • Löschen einer Datenbank

  • Offlineschalten einer Datenbank

  • Trennen einer Datenbank

  • Versetzen einer Datenbank oder einer Dateigruppe in den READ ONLY-Zustand

Die folgenden Vorgänge sind während der Ausführung der Anweisungen CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY und ALTER DATABASE...SET ENCRYPTION nicht erlaubt:

  • Löschen einer Datei aus einer Dateigruppe in einer Datenbank

  • Löschen einer Datenbank

  • Offlineschalten einer Datenbank

  • Trennen einer Datenbank

  • Versetzen einer Datenbank oder einer Dateigruppe in den READ ONLY-Zustand

  • Verwenden eines ALTER DATABASE-Befehls

  • Starten einer Datenbank- oder Datenbankdateisicherung

  • Starten einer Datenbank- oder Datenbankdateiwiederherstellung

  • Erstellen einer Momentaufnahme

Die folgenden Vorgänge oder Bedingungen verhindern die Anweisungen CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY und ALTER DATABASE...SET ENCRYPTION:

  • Eine Datenbank ist schreibgeschützt oder enthält schreibgeschützte Dateigruppen.

  • Ein ALTER DATABASE-Befehl wird ausgeführt.

  • Eine Datensicherung wird ausgeführt.

  • Eine Datenbank ist offline geschaltet oder wird wiederhergestellt.

  • Eine Momentaufnahme wird ausgeführt.

  • Es werden Datenbankwartungstasks ausgeführt.

Wenn TDE aktiviert ist, ist die Dateiinitialisierung beim Erstellen von Datenbankdateien nicht verfügbar.

Der asymmetrische Schlüssel muss sich auf einem erweiterbaren Schlüsselverwaltungsanbieter befinden, um einen Datenbankverschlüsselungsschlüssel mit einem asymmetrischen Schlüssel zu verschlüsseln.

TDE-Überprüfung

SQL Server muss einen Verschlüsselungsscan durchführen, damit TDE auf einer Datenbank aktiviert werden kann. Der Scan liest alle Seiten der Datendateien in den Pufferpool und schreib die verschlüsselten Seiten dann wieder auf den Datenträger.

Damit Sie über mehr Kontrolle über den Verschlüsselungsscan verfügen, wurde mit SQL Server 2019 (15.x) der TDE-Scan eingeführt, der über eine Syntax zum Anhalten und Fortsetzen verfügt. Wenn die Arbeitsauslastung des Systems sehr hoch ist oder während geschäftskritischen Zeiten, können Sie den Scan pausieren und später fortsetzen.

Verwenden Sie die folgende Syntax, um den TDE-Verschlüsselungsscan anzuhalten:

ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;

Auf ähnliche Weise können Sie den TDE-Verschlüsselungsscan mithilfe der folgenden Syntax fortsetzen:

ALTER DATABASE <db_name> SET ENCRYPTION RESUME;

Die Spalte „encryption_scan_state“ wurde zur dynamischen Verwaltungssicht „sys.dm_database_encryption_keys“ hinzugefügt. Diese zeigt den aktuellen Zustand des Verschlüsselungsscans an. Außerdem wurde eine neue Spalte namens „encryption_scan_modify_date“ hinzugefügt, die das Datum und die Uhrzeit der letzten Änderung des Status des Verschlüsselungsscans enthält.

Wenn die SQL Server-Instanz neu gestartet wird, während ihr Verschlüsselungsscan angehalten ist, wird beim Start eine Meldung im Fehlerprotokoll protokolliert. Die Meldung gibt an, dass ein bestehender Scan angehalten wurde.

Wichtig

Das Feature zum Anhalten und Fortsetzen der TDE-Überprüfung ist derzeit in Azure SQL-Datenbank, Azure SQL Managed Instance und Azure Synapse Analytics nicht verfügbar.

TDE und Transaktionsprotokolle

Wenn eine Datenbank TDE verwendet, wird der restliche Teil des aktuellen virtuellen Transaktionsprotokolls entfernt. Die Entfernung erzwingt die Erstellung des nächsten Transaktionsprotokolls. Dieses Verhalten gewährleistet, dass kein Klartext in en Protokollen verbleibt, nachdem die Datenbank für die Verschlüsselung eingerichtet wurde.

Den Status der Protokolldateiverschlüsselung finden Sie wie im folgenden Beispiel gezeigt in der encryption_state-Spalte der sys.dm_database_encryption_keys-Sicht:

USE AdventureWorks2012;
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

Weitere Informationen zur SQL Server-Protokolldateiarchitektur finden Sie unter Das Transaktionsprotokoll (SQL Server).

Bevor ein Datenbankverschlüsselungsschlüssel geändert wird, verschlüsselt der vorherige Datenbankverschlüsselungsschlüssel alle Daten, die in das Transaktionsprotokoll geschrieben werden.

Wenn Sie einen Datenbankverschlüsselungsschlüssel zweimal ändern, müssen Sie eine Protokollsicherung anlegen, bevor Sie den Datenbankverschlüsselungsschlüssel wieder ändern können.

TDE und die tempdb-Systemdatenbank

Die tempdb-Systemdatenbank wird verschlüsselt, wenn eine beliebige andere Datenbank in der SQL Server-Instanz mithilfe von TDE verschlüsselt wird. Diese Verschlüsselung kann sich auf die Leistung unverschlüsselter Datenbanken der gleichen SQL Server-Instanz auswirken. Weitere Informationen über die tempdb-Systemdatenbank finden Sie unter tempdb-Datenbank.

TDE und Replikation

Daten aus einer TDE-aktivierten Datenbank werden bei der Replikation nicht automatisch in einer verschlüsselten Form repliziert. Sie müssen TDE separat aktivieren, wenn Sie die Verteilungs- und Abonnentendatenbanken schützen möchten.

Die Momentaufnahmereplikation kann Daten in nicht verschlüsselten Zwischendateien wie BCP-Dateien speichern. Dies gilt auch für die erste Datenverteilung für Transaktionsdaten und die Mergereplikation. Während einer solchen Replikation können Sie die Verschlüsselung aktivieren, um den Kommunikationskanal zu schützen.

Weitere Informationen finden Sie unter Aktivieren von verschlüsselten Verbindungen zur Datenbank-Engine (SQL Server-Konfigurations-Manager).

TDE und Always On

Sie können einer Always On-Verfügbarkeitsgruppe eine verschlüsselte Datenbank hinzufügen.

Erstellen Sie den Hauptschlüssel und Zertifikate oder einen asymmetrischen Schlüssel (EKM) auf allen sekundären Replikaten, um die Datenbanken zu verschlüsseln, die Mitglied einer Verfügbarkeitsgruppe sind, bevor Sie den Datenbankverschlüsselungsschlüssel auf dem primären Replikat erstellen.

Wenn zum Schutz des Datenbankverschlüsselungsschlüssels (DEK) ein Zertifikat verwendet wird, sichern Sie das auf dem primären Replikat erstellte Zertifikat, und erstellen Sie dann das Zertifikat aus einer Datei auf allen sekundären Replikaten, bevor Sie den Datenbankverschlüsselungsschlüssel auf dem primären Replikat erstellen.

TDE und FILESTREAM-Daten

FILESTREAM-Daten werden nicht verschlüsselt, selbst wenn Sie TDE aktivieren.

Entfernen von TDE

Mithilfe der ALTER DATABASE-Anweisung können Sie die Verschlüsselung einer Datenbank entfernen.

ALTER DATABASE <db_name> SET ENCRYPTION OFF;

Der Status der Datenbank wird mit der dynamischen Verwaltungssicht sys.dm_database_encryption_keys angezeigt.

Warten Sie, bis die Entschlüsselung abgeschlossen ist, bevor Sie den Datenbankverschlüsselungsschlüssel mithilfe von DROP DATABASE ENCRYPTION KEY entfernen.

Wichtig

Sichern Sie Hauptschlüssel und Zertifikat, die für TDE verwendet werden, an einem sicheren Speicherort. Der Hauptschlüssel und das Zertifikat sind erforderlich, um Sicherungen wiederherzustellen, die erstellt wurden, solange die Datenbank mit TDE verschlüsselt war. Nach Entfernung des Datenbankverschlüsselungsschlüssels erstellen Sie eine Protokollsicherung und dann eine neue vollständige Sicherung der verschlüsselten Datenbank.

TDE und Pufferpoolerweiterung

Wenn Sie eine Datenbank mit TDE verschlüsseln, werden Dateien, die mit der Pufferpoolerweiterung zusammenhängen, nicht verschlüsselt. Verwenden Sie für diese Dateien Verschlüsselungstools wie BitLocker oder EFS auf Dateisystemebene.

TDE und In-Memory-OLTP

Sie können TDE für eine Datenbank aktivieren, die über In-Memory OLTP-Objekte verfügt. In-Memory-OLTP-Protokolldatensätze in SQL Server 2016 (13.x) und Azure SQL-Datenbank werden verschlüsselt, wenn Sie TDE aktivieren. In-Memory-OLTP-Protokolldatensätze in SQL Server 2014 (12.x) werden verschlüsselt, wenn Sie TDE aktivieren, Dateien in der MEMORY_OPTIMIZED_DATA-Dateigruppe werden jedoch nicht verschlüsselt.

Verschieben einer TDE-geschützten Datenbank auf einen anderen SQL-Server
Aktivieren von TDE in SQL Server mithilfe von EKM
Erweiterbare Schlüsselverwaltung mit Azure Key Vault (SQL Server)

Transparent Data Encryption mit Azure SQL-Datenbank
Erste Schritte mit Transparent Data Encryption (TDE) in Azure Synapse Analytics
SQL Server-Verschlüsselung
Verschlüsselungsschlüssel für SQL Server und SQL-Datenbank (Datenbank-Engine)

Weitere Informationen

Sicherheitscenter für SQL Server-Datenbank-Engine und Azure SQL-Datenbank
FILESTREAM (SQL Server)