SQL Server und Datenbankverschlüsselungs-Schlüssel (Datenbankmodul)

SQL Server verwendet Verschlüsselungsschlüssel, um Daten sowie Anmelde- und Verbindungsinformationen zu sichern, die in einer Serverdatenbank gespeichert sind. SQL Server besitzt zwei Arten von Schlüsseln, symmetrische und asymmetrische Schlüssel. Symmetrische Schlüssel verwenden das gleiche Kennwort, um Daten zu verschlüsseln und zu entschlüsseln. Asymmetrische Schlüssel verwenden ein Kennwort zum Verschlüsseln der Daten (den öffentlichen Schlüssel) und ein weiteres zum Entschlüsseln der Daten (den privaten Schlüssel).

Die Verschlüsselungsschlüssel in SQL Server bestehen aus einer Kombination von öffentlichen, privaten und symmetrischen Schlüsseln, die zum Schutz sensibler Daten verwendet werden. Der symmetrische Schlüssel wird während der SQL Server-Initialisierung erstellt, wenn Sie die SQL Server-Instanz zum ersten Mal starten. Der Schlüssel wird von SQL Server verwendet, um sensible Daten zu verschlüsseln, die in SQL Server gespeichert werden. Öffentliche und private Schlüssel werden vom Betriebssystem erstellt und zum Schutz des symmetrischen Schlüssels verwendet. Ein Paar aus einem privaten und einem öffentlichen Schlüssel wird für jede SQL Server-Instanz erstellt, die sensible Daten in einer Datenbank speichert.

Anwendungen für SQL Server- und Datenbankschlüssel

SQL Server hat zwei primäre Anwendungen für Schlüssel: einen Diensthauptschlüssel (Service Master Key, SMK), der auf einer und für eine SQL Server-Instanz generiert wird, sowie einen Datenbank-Hauptschlüssel (Database Master Key, DMK), der für eine Datenbank verwendet wird.

Der Diensthauptschlüssel wird automatisch generiert, wenn die SQL Server-Instanz zum ersten Mal gestartet wird. Er wird verwendet, um ein Kennwort für einen Verbindungsserver, Anmeldeinformationen und den Datenbank-Hauptschlüssel zu verschlüsseln. Der Diensthauptschlüssel wird mithilfe des auf dem lokalen Computer verwendeten Computerschlüssels unter Verwendung der Windows-Datenschutz-API (DPAPI) verschlüsselt. Die DPAPI verwendet einen Schlüssel, der von den Windows-Anmeldeinformationen des SQL Server-Dienstkontos und den Anmeldeinformationen des Computers abgeleitet ist. Der Diensthauptschlüssel kann nur von dem Dienstkonto entschlüsselt werden, unter dem er erstellt wurde, oder von einem Prinzipal, der auf die Anmeldeinformationen des Computers zugreifen kann.

Der Datenbank-Hauptschlüssel ist ein symmetrischer Schlüssel, der zum Schützen von privaten Schlüsseln der in der Datenbank vorhandenen Zertifikate und asymmetrischen Schlüssel verwendet wird. Er kann auch zum Verschlüsseln von Daten verwendet werden. Allerdings gelten für diesen Schlüssel Längenbeschränkungen, durch die er für Daten weniger praktisch ist als ein symmetrischer Schlüssel.

Beim Erstellen wird der Hauptschlüssel mithilfe des Triple DES-Algorithmus und eines vom Benutzer angegebenen Kennworts verschlüsselt. Um die automatische Entschlüsselung des Hauptschlüssels zu ermöglichen, wird eine Kopie des Schlüssels mit dem Diensthauptschlüssel verschlüsselt. Er wird sowohl in der Datenbank gespeichert, in der er verwendet wird, als auch in der master-Systemdatenbank.

Die in der master-Systemdatenbank gespeicherte Kopie des Datenbank-Hauptschlüssels wird im Hintergrund aktualisiert, sobald der Datenbank-Hauptschlüssel geändert wird. Diese Standardeinstellung kann jedoch mit der DROP ENCRYPTION BY SERVICE MASTER KEY-Option der ALTER MASTER KEY-Anweisung geändert werden. Ein Datenbank-Hauptschlüssel, der nicht mit dem Diensthauptschlüssel verschlüsselt ist, muss mithilfe der OPEN MASTER KEY-Anweisung und eines Kennworts geöffnet werden.

Verwalten von SQL Server- und Datenbankschlüsseln

Zur Verwaltung der Verschlüsselungsschlüssel gehört das Erstellen neuer Datenbankschlüssel, das Erstellen einer Sicherung der Server- und Datenbankschlüssel und das Wissen darüber, wann und wie die Schlüssel wiederhergestellt, gelöscht oder geändert werden müssen.

Zum Verwalten symmetrischer Schlüssel können Sie die in SQL Server bereitgestellten Tools für folgende Aufgaben verwenden:

  • Erstellen einer Sicherungskopie der Server- und Datenbankschlüssel, sodass sie zum Wiederherstellen einer Serverinstallation oder im Rahmen einer geplanten Migration verwendet werden können.

  • Wiederherstellen eines zuvor gespeicherten Schlüssels in einer Datenbank. Dadurch kann eine neue Serverinstanz auf vorhandene Daten zugreifen, die sie ursprünglich nicht verschlüsselt hat.

  • Löschen der verschlüsselten Daten in einer Datenbank in dem unwahrscheinlichen Fall, dass Sie nicht mehr auf die verschlüsselten Daten zugreifen können.

  • Erneutes Erstellen von Schlüsseln und erneutes Verschlüsseln von Daten in dem unwahrscheinlichen Fall, dass der Schlüssel nicht mehr sicher ist. Eine bewährte Sicherheitsmethode ist die regelmäßige Neuerstellung der Schlüssel (z. B. alle paar Monate), um den Server vor Angriffen zu schützen, bei denen versucht wird, die Schlüssel zu entschlüsseln.

  • Hinzufügen oder Entfernen einer Serverinstanz aus einer Serverbereitstellung für dezentrales Skalieren, bei der mehrere Server eine einzige Datenbank und den Schlüssel, der für diese Datenbank die umkehrbare Verschlüsselung bereitstellt, gemeinsam nutzen.

Wichtige Sicherheitsinformationen

Der Zugriff auf Objekte, die durch den Diensthauptschlüssel gesichert sind, erfordert entweder das SQL Server-Dienstkonto, das zum Erstellen des Schlüssels verwendet wurde, oder das Computerkonto. Das heißt, dass der Computer an das System gebunden ist, auf dem der Schlüssel erstellt wurde. Sie können das SQL Server-Dienstkonto oder das Computerkonto ändern, ohne den Zugriff auf den Schlüssel zu verlieren. Wenn Sie jedoch beides ändern, verlieren Sie den Zugriff auf den Diensthauptschlüssel. Wenn Sie den Zugriff auf den Diensthauptschlüssel ohne eines der beiden Elemente verlieren, können Sie keine Daten und Objekte mehr entschlüsseln, die mit dem ursprünglichen Schlüssel verschlüsselt wurden.

Verbindungen, die mit dem Diensthauptschlüssel gesichert wurden, können nicht ohne den Diensthauptschlüssel wiederhergestellt werden.

Für den Zugriff auf Objekte und Daten, die mit dem Datenbank-Hauptschlüssel gesichert wurden, ist nur das Kennwort erforderlich, das zum Sichern des Schlüssels verwendet wird.

VorsichtshinweisVorsicht

Wenn Sie den gesamten Zugriff auf die oben beschriebenen Schlüssel verlieren, verlieren Sie den Zugriff auf die Objekte, Verbindungen und Daten, die mit diesen Schlüsseln gesichert wurden. Sie können den Diensthauptschlüssel wie unter den hier angegebenen Links beschrieben wiederherstellen, oder Sie können den Zugriff mit dem ursprünglichen Verschlüsselungssystem wiederherstellen. Es gibt keine "Hintertür" zum Wiederherstellen des Zugriffs.

In diesem Abschnitt