TDE (Transparent Data Encryption)
Transparent Data Encryption (TDE) verschlüsselt SQL Server und Azure SQL Datenbankdatendateien, die als Verschlüsselung ruhender Daten bezeichnet werden. Sie können verschiedene Vorsichtsmaßnahmen zum Schützen der Datenbank treffen, z.B. Entwerfen eines sicheren Systems, Verschlüsseln vertraulicher Datenbestände und Erstellen einer Firewall für die Datenbankserver. Im Falle eines Diebstahls physischer Medien (Festplatten, Sicherungsbänder oder Ähnliches) kann eine böswillige Partei die Datenbank jedoch einfach wiederherstellen oder anfügen und die Daten durchsuchen. Eine Lösung dieses Problems besteht darin, die sensiblen Daten in der Datenbank zu verschlüsseln, und den für die Verschlüsselung der Daten verwendeten Schlüssel mit einem Zertifikat zu schützen. Dadurch kann niemand die Daten verwenden, der nicht im Besitz der Schlüssel ist. Diese Art des Schutzes muss jedoch im Voraus geplant werden.
TDE führt die E/A-Verschlüsselung und -Entschlüsselung der Daten- und Protokolldateien in Echtzeit durch. Die Verschlüsselung verwendet einen Datenbank-Verschlüsselungsschlüssel (DEK), der im Startdatensatz der Datenbank gespeichert wird und während der Wiederherstellung zur Verfügung steht. Der DEK ist ein symmetrischer Schlüssel, der durch ein in der Masterdatenbank des Servers gespeichertes Zertifikat gesichert wird, oder ein asymmetrischer Schlüssel, der von einem EKM-Modul geschützt wird. TDE schützt die "ruhenden" Daten, also die Daten- und die 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.
Wichtig
TDE stellt keine Verschlüsselung über Kommunikationskanäle bereit. Weitere Informationen zum Verschlüsseln von Daten über Kommunikationskanäle finden Sie unter Aktivieren von verschlüsselten Verbindungen für die Datenbank-Engine (SQL Server-Konfigurations-Manager).
Verwandte Themen:
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 einer verschlüsselten Datenbank.
Informationen zu SQL-Datenbank
Bei Verwendung von TDE mit SQL-Datenbank V12 V12 (Vorschau in einigen Regionen) wird das in der master Datenbank gespeicherte Zertifikat auf Serverebene automatisch von SQL-Datenbank für Sie erstellt. Zum Verschieben einer TDE-Datenbank auf SQL-Datenbank müssen Sie die Datenbank entschlüsseln, die Datenbank verschieben und dann TDE auf dem Ziel-SQL-Datenbank erneut aktivieren. Schritt-für-Schritt-Anweisungen für TDE auf SQL-Datenbank finden Sie unter Transparente Datenverschlüsselung mit Azure SQL-Datenbank.
Die Vorschauversion von status von TDE gilt auch in der Teilmenge der geografischen Regionen, in denen die V12-Version von SQL-Datenbank angekündigt wird, da sie jetzt status allgemein verfügbar ist. TDE für SQL-Datenbank ist erst für die Verwendung in Produktionsdatenbanken vorgesehen, bis Microsoft ankündigt, dass TDE von der Vorschauversion in die Allgemeine Verfügbarkeit (GA) höhergestuft wird. Weitere Informationen zu SQL-Datenbank V12 finden Sie unter Neuigkeiten in Azure SQL Datenbank.
Informationen zu SQL Server
Nachdem sie gesichert wurde, kann die Datenbank mit dem richtigen Zertifikat wiederhergestellt werden. Weitere Informationen zu Zertifikaten finden Sie unter SQL Server Certificates and Asymmetric Keys.
Wenn Sie TDE aktivieren, sollten Sie das Zertifikat und den privaten Schlüssel, der dem Zertifikat zugeordnet ist, unmittelbar danach sichern. Sollte das Zertifikat einmal nicht mehr verfügbar sein, oder sollten Sie die Datenbank auf einem anderen Server wiederherstellen oder anfügen müssen, müssen Sie über Sicherungen sowohl des Zertifikats als auch des privaten Schlüssels verfügen, da Sie andernfalls die Datenbank nicht öffnen können. Das zum Verschlüsseln verwendete Zertifikat sollte beibehalten werden, selbst wenn TDE für die Datenbank nicht mehr aktiviert ist. Selbst wenn die Datenbank nicht verschlüsselt ist, können Teile des Transaktionsprotokolls nach wie vor geschützt sein. Für bestimmte Vorgänge wird das Zertifikat ggf. weiterhin benötigt, bis eine vollständige Sicherung der Datenbank ausgeführt wurde. Ein abgelaufenes Zertifikat kann immer noch verwendet werden, um Daten mit TDE zu verschlüsseln und zu entschlüsseln.
Verschlüsselungshierarchie
Die folgende Abbildung zeigt die Architektur der TDE-Verschlüsselung. Nur die Elemente auf Datenbankebene (der Datenbankverschlüsselungsschlüssel und ALTER DATABASE-Teile sind benutzerkonfigurierbar, wenn TDE auf SQL-Datenbank verwendet wird.
Verwenden der transparenten Datenverschlüsselung
Führen Sie folgende Schritte aus, um TDE zu verwenden:
Gilt für: SQL Server. |
Erstellen Sie einen Hauptschlüssel
Erstellen oder beziehen Sie ein vom Hauptschlüssel geschütztes Zertifikat
Erstellen Sie einen Verschlüsselungsschlüssel für die Datenbank, und schützen Sie ihn durch das Zertifikat
Legen Sie fest, dass für die Datenbank Verschlüsselung verwendet wird
Im folgenden Beispiel wird die Verschlüsselung und Entschlüsselung der AdventureWorks2012
-Datenbank gezeigt, wobei ein auf dem Server MyServerCert
installiertes Zertifikat verwendet wird.
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 von SQL Server in geplanten Hintergrundthreads ausgeführt. Sie können den Status dieser Vorgänge mithilfe der in der Liste weiter unten in diesem Thema genannten Katalogsichten und dynamischen Verwaltungssichten anzeigen.
Achtung
Sicherungsdateien von Datenbanken, für die TDE aktiviert wurde, werden ebenfalls mithilfe des Verschlüsselungsschlüssels für die Datenbank 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. Dies bedeutet, dass Sie zusätzlich zur Sicherung der Datenbank auch Sicherungskopien der Serverzertifikate aufbewahren müssen, um einem Datenverlust vorzubeugen. Ist das Zertifikat nicht mehr verfügbar, kann es zu einem Datenverlust kommen. Weitere Informationen finden Sie unter SQL Server Certificates and Asymmetric Keys.
Befehle und Funktionen
Die für TDE verwendeten Zertifikate müssen mithilfe des Datenbank-Hauptschlüssels verschlüsselt sein, damit sie von den folgenden Anweisungen akzeptiert werden. Eine Verschlüsselung nur durch ein Kennwort lehnen die Anweisungen ab.
Wichtig
Wenn die Zertifikate nach der Verwendung durch TDE mit einem Kennwortschutz versehen werden, kann auf die Datenbank nach einem Neustart nicht mehr 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 verwendet wird, um eine Datenbank zu verschlüsseln. |
ALTER DATABASE ENCRYPTION KEY (Transact-SQL) | Ändert den Schlüssel, der verwendet wird, um eine Datenbank zu verschlüsseln. |
DROP DATABASE ENCRYPTION KEY (Transact-SQL) | Entfernt den Schlüssel, der verwendet wurde, um eine Datenbank zu verschlüsseln. |
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 in einer Datenbank verwendeten Verschlüsselungsschlüsseln und dem aktuellen Status der Verschlüsselung einer Datenbank bereitstellt. |
Berechtigungen
Jede Funktion und jeder Befehl von TDE erfordert bestimmte Berechtigungen, die in den zuvor gezeigten Tabellen beschrieben wurden.
Um die in Beziehung zu TDE stehenden Metadaten anzuzeigen, ist die VIEW DEFINITION-Berechtigung für das 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 einen Wartungsvorgang durchzuführen. Weitere Informationen finden Sie unter So legen Sie den Einzelbenutzermodus für eine Datenbank fest.
Der Verschlüsselungsstatus der Datenbank wird mit der dynamischen Verwaltungssicht sys.dm_database_encryption_keys angezeigt. Weitere Informationen finden Sie im Abschnitt „Katalogsichten und dynamische Verwaltungssichten“ weiter oben in diesem Thema.
Bei TDE werden alle Dateien und Dateigruppen in der Datenbank verschlüsselt. Wenn Dateigruppen in einer Datenbank als READ ONLY markiert sind, schlägt der Datenbankverschlüsselungsvorgang fehl.
Wenn eine Datenbank bei Datenbankspiegelung oder Protokollversand verwendet wird, werden beide Datenbanken verschlüsselt. Die Protokolltransaktionen werden für die Übertragung zwischen den Datenbanken verschlüsselt.
Wichtig
Alle neuen Volltextindizes werden verschlüsselt, wenn für eine Datenbank die Verschlüsselung festgelegt ist. Zuvor erstellte Volltextindizes werden während des Upgrades importiert und befinden sich in TDE, nachdem die Daten in SQL Server geladen wurden. Wenn Sie einen Volltextindex für eine Spalte aktivieren, werden die Daten in dieser Spalte während eines Volltextindizierungsscans möglicherweise als Nur-Text auf den Datenträger geschrieben. Es wird empfohlen, keinen Volltextindex für vertrauliche verschlüsselte Daten zu erstellen.
Verschlüsselte Daten lassen sich deutlich weniger komprimieren als entsprechende unverschlüsselte Daten. Wenn TDE zum Verschlüsseln einer Datenbank verwendet wird, wird der für die Sicherung benötigte Speicherplatz durch die Sicherungskomprimierung nicht wesentlich geringer. Daher wird davon abgeraten, TDE zusammen mit der Sicherungskomprimierung zu verwenden.
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 der Datenbank
Löschen der Datenbank
Offlineschalten der 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 oder ALTER DATABASE...SET ENCRYPTION nicht erlaubt:
Löschen einer Datei aus einer Dateigruppe in der Datenbank.
Löschen der Datenbank.
Offlineschalten der 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 oder ALTER DATABASE...SET ENCRYPTION.
Die Datenbank ist schreibgeschützt oder hat schreibgeschützte Dateigruppen.
Ein ALTER DATABASE-Befehl wird ausgeführt.
Eine Datensicherung wird ausgeführt.
Die Datenbank ist offline geschaltet oder wird wiederhergestellt.
Eine Momentaufnahme wird ausgeführt.
Datenbankwartungstasks
Beim Erstellen von Datenbankdateien ist die sofortige Dateiinitialisierung nicht verfügbar, wenn TDE aktiviert ist.
Um den Verschlüsselungsschlüssel für die Datenbank mit einem asymmetrischen Schlüssel zu verschlüsseln, muss sich der asymmetrische Schlüssel auf einem erweiterbaren Schlüsselverwaltungsanbieter befinden.
Transparente Datenverschlüsselung und Transaktionsprotokolle
Die Aktivierung einer Datenbank für die Verwendung von TDE führt dazu, dass der verbleibende Teil des virtuellen Transaktionsprotokolls auf 0 festgelegt wird. Dadurch wird ein neues virtuelles Transaktionsprotokoll erzwungen. Dies gewährleistet, dass in den Transaktionsprotokollen kein Klartext verbleibt, nachdem die Datenbank für die Verschlüsselung eingerichtet wurde. Sie können den Status der Protokolldateiverschlüsselung erkennen, wenn Sie die encryption_state
-Spalte in der sys.dm_database_encryption_keys
-Sicht anzeigen, wie in diesem Beispiel:
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 Architektur der SQL Server Protokolldatei finden Sie unter Das Transaktionsprotokoll (SQL Server).
Alle vor einer Änderung des Datenbank-Verschlüsselungsschlüssels in das Transaktionsprotokoll geschriebenen Daten werden mithilfe des vorherigen Verschlüsselungsschlüssels für die Datenbank verschlüsselt.
Nachdem ein Verschlüsselungsschlüssel für die Datenbank zweimal geändert wurde, muss eine Protokollsicherung ausgeführt werden, bevor der Verschlüsselungsschlüssel für die Datenbank wieder geändert werden kann.
Transparente Datenverschlüsselung und die tempdb-Systemdatenbank
Die tempdb-Systemdatenbank wird verschlüsselt, wenn eine andere Datenbank auf der instance von SQL Server mithilfe von TDE verschlüsselt wird. Dies kann sich bei unverschlüsselten Datenbanken auf demselben instance SQL Server auf die Leistung auswirken. Weitere Informationen über die tempdb-Systemdatenbank finden Sie unter tempdb-Datenbank.
Transparente Datenverschlüsselung 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. Bei der Snapshotreplikation sowie bei der ursprünglichen Verteilung von Daten für die Transaktions- und Mergereplikation können Daten in unverschlüsselten Zwischendateien gespeichert werden – dies sind z. B. die BCP-Dateien. Während der Transaktions- oder Mergereplikation kann die Verschlüsselung aktiviert werden, um den Kommunikationskanal zu schützen. Weitere Informationen finden Sie unter Aktivieren von verschlüsselten Verbindungen zur Datenbank-Engine (SQL Server-Konfigurations-Manager).
Transparente Datenverschlüsselung und FILESTREAM-Daten
FILESTREAM-Daten werden nicht verschlüsselt, auch dann nicht, wenn TDE aktiviert ist.
Transparente Datenverschlüsselung und Pufferpoolerweiterung
Dateien, die mit der Pufferpoolerweiterung (BPE, Buffer Pool Extension) zusammenhängen, werden bei der Verschlüsselung der Datenbank mit TDE nicht verschlüsselt. Für mit BPE zusammenhängende Dateien müssen Sie Verschlüsselungstools auf Dateisystemebene, wie Bitlocker oder EFS, verwenden.
Transparente Datenverschlüsselung und In-Memory OLTP
TDE kann auf einer Datenbank aktiviert werden, die über In-Memory OLTP-Objekte verfügt. In-Memory OLTP-Protokolldatensätze werden verschlüsselt, wenn TDE aktiviert ist. Daten in einer MEMORY_OPTIMIZED_DATA-Dateigruppe werden nicht verschlüsselt, wenn TDE aktiviert ist.
Weitere Informationen
Verschieben einer durch TDE geschützten Datenbank in eine andere SQL ServerEnable TDE mithilfe der transparenten EKM-Datenverschlüsselungmit Azure SQL DatenbankSQL Server VerschlüsselungSQL Server und Datenbankverschlüsselungsschlüsseln (Datenbank-Engine)Security Center für SQL Server-Datenbank Engine und Azure SQL DatabaseFILESTREAM (SQL Server)