Blog
Wednesday, 27. September 2023

Aktivieren von TDE in SQL Server

Simon
IT-Consultant

Einleitung

Es gibt eine ganze Reihe guter Gründe, private Daten zu Schützen. Das Gute ist, dass SQL Server eine Vielzahl an unterschiedlichen Möglichkeiten bietet, sensible Daten zu verschlüsseln. Zu diesem Zweck wollen wir uns in diesem Beitrag die Transparent Date Encryption (TDE) und das Extensible Key Management (EKM) genauer ansehen. Genauer soll es hier um das Zusammenspiel dieser beiden Komponenten gehen, denn obwohl beide im Einzelnen schon sehr gut Funktionieren, so sind sie gemeinsam unschlagbar.

Die ersten Versionen von TDE und EKM wurden 2008 für die SQL Server Enterprise Edition vorgestellt und seitdem kontinuierlich weiterentwickelt. Ziel war es damals, Unternehmen die Möglichkeit zu geben, sogenannte “ruhenden Daten” zu schützen, ohne dabei die Geschäftsanwendungen ändern zu müssen.

Leider machen viele Unternehmen den Fehler, anzunehmen, dass mit dem einfachen Verschlüsseln der Datenbank die Arbeit erledigt und die Sicherheit der Daten nun gewährleistet sei. Dies ist allerdings nur die halbe Miete.

Was ist denn, wenn eine Datenbank verschlüsselt ist, der Schlüssel zum entschlüsseln allerdings einfach, am besten noch lokal, zugänglich ist? Das wäre äquivalent dazu, ein teures Sicherheitsschloss einzubauen, den Schlüssel aber unter der Fußmatte liegen zu lassen.

In der Welt der IT-Sicherheit wird hier von einer lokalen Speicherung von Verschlüsselungsschlüsseln gesprochen.
Während beim Thema Verschlüsselung in fast jedem Beitrag der Begriff TDE auftaucht, so wird EKM vergleichsweise stark vernachlässigt. Dabei verdient EKM mindestens die selbe Aufmerksamkeit wie TDE.

TDE verschlüsselt den Speicher einer gesamten Datenbank mithilfe eines symmetrischen Schlüssel namens Data Encryption Key (DEK), der im Datenbank-Boot-Datensatz gespeichert wird, damit er während der Wiederherstellung verfügbar ist. Doch gerade diese lokale Speicherung des Datenbankverschlüsselungsschlüssels stellt ein erhebliches Sicherheitsrisiko für die verschlüsselten Daten dar.

Und genau hier kommt nun EKM ins Spiel. Mit der EKM-Architektur ist es möglich, die DEK-Schlüssel mithilfe eines asymmetrischen Schlüssels zu schützen, welcher außerhalb von SQL Server in einem externen Schlüsselmanager gespeichert wird.
So wird eine eine zusätzliche Sicherheitsebene geschaffen, welche die Verwaltung von Schlüsseln und Daten voneinander trennt.

Die EKM-Provider-Software führt Verschlüsselungs- und Schlüsselverwaltungsaufgaben als Erweiterung der SQL Server Datenbank aus und bietet die Möglichkeit, die Verschlüsselung um eine ordnungsgemäße Verwaltung von Verschlüsselungsschlüsseln zu erweitern.

Transparent Date Encryption im Überblick

Die Transparent Date Encryption (TDE) ist ein - Enterprise exklusives - Feature, welches Datenbankdateien sowie Datenbankprotokolle in SQL Server verschlüsselt. Hierbei ist es allerdings nicht möglich, einzelne Tabellen zu verschlüsseln. Jede Seite aus denen eine gewählte Datenbank besteht, wird durch TDE verschlüsselt. Werden Daten von der Festplatte gelesen, entschlüsselt SQL Server den gesamten Block und macht die Daten für das Datenbanken Modul sichtbar. Bei aktualisierten oder neu hinzugefügten Werten, verschlüsselt die Datenbank den gesamten, auf die Festplatte geschriebenen, Block.

Da mit TDE alle Daten innerhalb einer Datenbank verschlüsselt werden, betrifft dies sowohl sensible wie auch nicht sensible Daten. Dies hat sowohl Vor- wie auch Nachteile. So werden beispielsweise Rechenressourcen für das Verschlüsseln von möglicherweise nicht sensiblen Daten “verschwendet”, gleichzeitig aber Fehler bei der Identifizierung von tatsächlich sensibler Daten vermieden. So kann es nicht vorkommen, dass wichtige Daten übersehen oder gar vergessen werden.

Encryption Key Management im Überblick

Jede Verschlüsselungsstrategie ist nur so gut, wie die Methode zum Schutz der Verschlüsselungsschlüssel. Dieser ist der Kern der Sicherheit der verschlüsselten Daten. So kann der Verlust des Verschlüsselungsschlüssels als gleichbedeutend mit dem Verlust der digitalen Vermögenswerte angesehen werden. Sobald ein potentieller Angreifer den Verschlüsselungsschlüssel an sich gerissen hat, hat der die Möglichkeit, einfach die Daten zu entschlüsseln und zu stehlen.

Im Laufe der Jahre sind einige Standards und Best Practices für die Verwaltung von Verschlüsselungsschlüsseln entstanden, welche in speziellen Sicherheitsanwendungen, sogenannten Key Management Systems (KMS) oder Enterprise Key Management Systems (EKMS), umgesetzt wurden.

Um sensible SQL Server Daten mit TDE und EKM zu Schützen ist es wichtig, dass der verwendete externe Schlüsselmanager folgende Best Practices erlaubt:

  • Verschlüsselungsschlüsse werden stets getrennt von den Daten, welche durch sie geschützt werden, gespeichert. Im besten Fall auf speziell entwickelten Sicherheitsgeräten oder dedizierten, virtuellen Diensten.
  • Verschlüsselungsschlüssel sollten ausschließlich von Personen verwaltet werden, welche keinen Zugriff auf die in der SQL Server Datenbank gespeicherten Daten haben.
  • Für die Verwaltung von Verschlüsselungsschlüsseln muss sich mehr als ein Sicherheitsadministrator authentifizieren, bevor kritische Arbeiten an Schlüsseln durchgeführt werden.
  • Die Verschlüsselungsverwaltung sowie die Schlüsselnutzung werden in Echtzeit protokolliert und Protokolle werden auf sicheren Protokollsammelservern gespeichert.

TDE und EKM im Zusammenspiel

Da wir nun einen besseren Überblick darüber haben, welche Funktionen die Komponenten TDE und EKM einnehmen, wollen wir uns einmal ansehen, wie diese im Zusammenspiel miteinander arbeiten.

Sobald TDE in einer SQL Server Datenbank aktiviert ist, generiert die Datenbank einen symmetrischen Verschlüsselungsschlüssel, welcher im Anschluss durch die EKM-Provider Software eines beliebigen externen Schlüsselmanagers geschützt wird. Diese sendet den symmetrischen Schlüssel an den Schlüsselserver, wo er danach, mithilfe eines asymmetrischen Schlüssels, verschlüsselt wird.
Der verschlüsselte Datenbankschlüssel wird dann lokal auf der Festplatte innerhalb des SQL Server Kontext gespeichert.

Beim Start einer SQL Server Instanz, ruft die verschlüsselte Datenbank die EKM-Provider-Software auf, um den symmetrischen Datenbankschlüssel zu entschlüsseln, damit er für die Ver- und Entschlüsselungsvorgänge verwendet werden kann. Der nun entschlüsselte Schlüssel wird im geschützten Speicherbereich gespeichert und von der Datenbank verwendet, während die verschlüsselte Version des Datenbankschlüssels auf der Festplatte verbleibt. Sollte das System nun beispielsweise unerwartet abstürzen oder anders beendet werden, so würde lediglich die verschlüsselte Version des Datenbankschlüssels übrig bleiben.

Mainzer Datenfabrik - Aktivieren von TDE in SQL Server

Aktivieren von TDE unter der Verwendung von EKM

Mit dem Wissen, wie TDE, EKM sowie das Zusammenspiel der Komponenten funktioniert, soll es nun in diesem Abschnitt darum gehen, TDE unter der Verwendung von EKM zu aktivieren.

Für EKM gibt es eine Vielzahl unterschiedlicher Drittanbieter wie beispielsweise Luna EKM oder Vault EKM. Allerdings bietet Microsoft Azure auch eine Möglichkeit, mithilfe von Azure KeyVaults eine EKM Lösung zu Implementieren.

Für unser Beispiel verwenden wir die Azure Variante. Wie man mittels Azure KeyVault EKM aufsetzt und konfiguriert, sehen wir uns in diesem Beitrag genauer an: [Beitrag Azure KeyVault EKM]

Nachdem wir nun also unserem EKM Provider in Azure aufgesetzt haben, können wir mit der Aktivierung in SQL Server Beginnen.

Als ersten Schritt müssen wir den EKM Provider in SQL Server aktivieren. Dies geht nur über die Fortgeschrittenen Optionen, welche wir vorher aktivieren müssen. Mit folgendem T-SQL Code können wir sowohl die fortgeschrittenen Optionen, wie auch den EKM Provider Aktivieren:

CREATE ASYMMETRIC KEY EKMSampleASYKey
FROM PROVIDER [AzureKeyVault_EKM]
WITH PROVIDER_KEY_NAME = 'ContosoRSAKey0',
CREATION_DISPOSITION = OPEN_EXISTING;

Anschließen müssen wir den SQL Server Connector, welchen wir mitsamt unserem EKM Provider konfiguriert haben registrieren. Dies erfolgt mit folgendem Code:

CREATE CRYPTOGRAPHIC PROVIDER EKMDemo
FROM FILE = 'C:\Program Files\SQL Server Connector for Microsoft Azure Key Vault\Microsoft.AzureKeyVaultService.EKM.dll';
GO

Nun müssen wir die SQL Server Anmeldeinformationen für eine SQL Server-Anmeldung Einrichten, damit wir unser erstellten KeyVault, welcher als unser EKM Provider fungiert, verwenden können:

USE master;
CREATE CREDENTIAL sysadmin_ekm_cred
    WITH IDENTITY = 'ContosoEKMKeyVault',                           
    SECRET = '83d8624c17544ce9a7ac3bcc4e710e7c28865c03bdbd43df93d2b2062b774f1c'
FOR CRYPTOGRAPHIC PROVIDER EKMDemo;

ALTER LOGIN [WIN-L15G2LLATPO\Administrator]
ADD CREDENTIAL sysadmin_ekm_cred;

Nachdem wir unseren EKM-Provider eingerichtet haben, müssen wir diesen von unserer SQL Server Instanz aus Aufrufen und einen asymmetrischen Schlüssel erstellen:

CREATE ASYMMETRIC KEY EKMDemoKey
FROM PROVIDER [EKMDemo]
WITH PROVIDER_KEY_NAME = 'EKMDemo',
CREATION_DISPOSITION = OPEN_EXISTING;

Mithilfe des neu erstellten asymmetrischen Schlüssels erstellen wir nun eine neue Anmeldung:

CREATE LOGIN TDE_Login
FROM ASYMMETRIC KEY EKMDemoKey;

Diese Anmeldung bilden wir nun auf unseren SQL Server Benutzer:

ALTER LOGIN [WIN-L15G2LLATPO\Administrator]
DROP CREDENTIAL sysadmin_ekm_cred;

Somit haben wir EKM erfolgreich aktiviert.

Verschlüsseln einer Datenbank

Als letztes wollen wir uns nun anschauen, wie wir mit unserer frisch eingerichteten Verschlüsselung eine Datenbank Verschlüsseln können. In diesem Beispiel verwenden wir die AdventureWorks2022 Datenbank von Microsoft.

Um diese nun zu Verschlüsseln, müssen wir zunächst einen Verschlüsselungsschlüssel erstellen. Dies kann mit folgendem Skript erfolgen:

USE <AdventureWorks2022>;
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER ASYMMETRIC KEY EKMDemoKey;

Wenn wir nun die Verschlüsselung für unsere Datenbank aktivieren, wird diese durch TDE verschlüsselt:

--Enable TDE by setting ENCRYPTION ON
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION ON;

Und damit haben wir erfolgreich eine Datenbank mit TDE Verschlüsselt und hierbei den EKM Service von Azure KeyVault genutzt, um unsere Verschlüsselungsschlüssel sicher zu Verwalten und vor Angreifern zu schützen.

Fazit

Wenn Sie mehr über den Einsatz von TDE und EKM erfahren möchten, stehen Ihnen unsere Expert:innen gerne mit Rat und Tat zur Verfügung.
Kontaktieren Sie uns dafür gerne unverbindlich über unser Kontaktformular. Wir freuen uns von Ihnen zu hören.

Interesse geweckt?

Unsere Expert:innen stehen Ihnen bei allen Fragen rund um Ihre IT Infrastruktur zur Seite.

Kontaktieren Sie uns gerne über das Kontaktformular und vereinbaren ein unverbindliches Beratungsgespräch mit unseren Berater:innen zur Bedarfsevaluierung. Gemeinsam optimieren wir Ihre Umgebung und steigern Ihre Performance!
Wir freuen uns auf Ihre Kontaktaufnahme!

Taunusstraße 72
55118 Mainz
info@madafa.de
+49 6131 3331612
Bürozeiten
Montag bis Donnerstag:
9:00 - 17:00 Uhr MEZ

Freitags:
9:30 - 14:00 Uhr MEZ
Wir sind Ihre SQL Expert:innen!
Noch Fragen? - Wir haben immer die passende Antwort für Sie!