Grundlegendes zur transparenten Datenverschlüsselung (TDE)

Sie können verschiedene Vorsichtsmaßnahmen treffen, um eine Datenbank abzusichern, beispielsweise ein sicheres System entwerfen, vertrauliche Datenbestände verschlüsseln oder eine Firewall für die Datenbankserver einrichten. Wenn jedoch physische Medien (etwa Laufwerke oder Sicherungsbänder) gestohlen werden, muss ein böswilliger Benutzer die Datenbank einfach nur wieder herstellen und kann dann 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.

Die transparente Datenverschlüsselung (TDE) führt die E/A-Verschlüsselung und -Entschlüsselung der Daten und der Protokolldateien in Echtzeit durch. Die Verschlüsselung verwendet einen Verschlüsselungsschlüssel für die Datenbank (Database Encryption Key, DEK), der in der Datenbankstartseite gespeichert wird, damit er während der Wiederherstellung verfügbar ist. 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.

Wichtiger HinweisWichtig

TDE stellt keine Verschlüsselung über Kommunikationskanäle bereit. Weitere Informationen zum Verschlüsseln von Daten über Kommunikationskanäle finden Sie unter Verschlüsseln von Verbindungen 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-Zertifikate und asymmetrische Schlüssel.

HinweisHinweis

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 oder der asymmetrische Schlüssel sollten beibehalten werden, selbst wenn TDE für die Datenbank nicht mehr aktiviert ist. Selbst wenn die Datenbank nicht verschlüsselt ist, kann der Verschlüsselungsschlüssel für die Datenbank in der Datenbank beibehalten werden, da für einige Vorgänge ggf. auf ihn zugegriffen werden muss. Ein Zertifikat, dessen Ablaufdatum überschritten wurde, kann weiterhin zum Ver- und Entschlüsseln von Daten mit TDE verwendet werden.

Die Verschlüsselung der Datenbankdatei wird auf Seitenebene ausgeführt. 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. Weitere Informationen zu Datenbankseiten finden Sie unter Grundlegendes zu Seiten und Blöcken.

Die folgende Abbildung zeigt die Architektur der TDE-Verschlüsselung:

Zeigt die im Thema beschriebene Hierarchie an

Verwenden der transparenten Datenverschlüsselung

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

  • 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 AdventureWorks2008R2-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 AdventureWorks2008R2;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2008R2
SET ENCRYPTION ON;
GO

Die Verschlüsselungs- und Entschlüsselungsvorgänge werden in von SQL Server 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.

VorsichtshinweisVorsicht

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-Zertifikate und asymmetrische Schlüssel.

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.

Wichtiger HinweisWichtig

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. Weitere Informationen finden Sie unter VIEW DEFINITION-Berechtigung.

Weitere Ü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 Vorgehensweise: Festlegen des Einzelbenutzermodus für eine Datenbank (SQL Server Management Studio).

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.

Wichtiger HinweisWichtig

Alle neuen Volltextindizes werden verschlüsselt, wenn für eine Datenbank die Verschlüsselung festgelegt ist. Zuvor erstellte Volltextindizes werden während der Aktualisierung 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.

Einschrä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.

Wenn der Datenbankverschlüsselungsschlüssel mit einem asymmetrischen Schlüssel verschlüsselt werden soll, muss sich der asymmetrische Schlüssel auf einem Anbieter für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) 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 AdventureWorks2008R2;
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 Physische Architektur des Transaktionsprotokolls.

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 beliebige andere Datenbank in der SQL Server-Instanz mithilfe von TDE verschlüsselt ist. Dies könnte sich auf die Leistung unverschlüsselter Datenbanken der gleichen Instanz von SQL Server 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 Vorgehensweise: Aktivieren von verschlüsselten Verbindungen zum Datenbankmodul (SQL Server-Konfigurations-Manager)..

Transparente Datenverschlüsselung und FILESTREAM-Daten

FILESTREAM-Daten werden nicht verschlüsselt, auch dann nicht, wenn TDE aktiviert ist.