SQL Server und Datenbankverschlüsselungsschlüssel (Datenbank-Engine)

Gilt für:SQL Server

SQL Server verwendet Verschlüsselungsschlüssel, um Anmeldeinformationen und Verbindungsinformationen zu schützen, die in einer Serverdatenbank gespeichert werden. SQL Server besitzt zwei Arten von Schlüsseln: symmetrische und asymmetrische. 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).

In SQL Server umfassen die Kodierungsschlüssel eine Kombination aus öffentlichen, privaten und symmetrischen Schlüsseln, die zum Schutz vertraulicher 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. SQL Server verwendet den Schlüssel, um sensible Daten zu verschlüsseln, die in SQL Server gespeichert sind. Das Betriebssystem erstellt den öffentlichen und privaten Schlüssel, und diese schützen den symmetrischen Schlüssel. 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 wurde, sowie einen Datenbank-Hauptschlüssel (Database Master Key; DMK), der für eine Datenbank verwendet wurde.

Diensthauptschlüssel

Der Diensthauptschlüssel ist der Stamm der SQL Server -Verschlüsselungshierarchie. SQL Server generiert das SMK beim ersten Start der Instanz und verwendet es, um verknüpfte Serverpasswörter, Zugangsdaten und den Datenbank-Masterschlüssel in jeder Datenbank zu verschlüsseln.

Das SMK wird mithilfe des lokalen Maschinenschlüssels oder der Windows Data Protection API (DPAPI) verschlüsselt. DPAPI verwendet einen Schlüssel, der aus den Windows-Zugangsdaten des SQL Server-Dienstkontos abgeleitet ist. Da der Schlüssel in beide Richtungen geschützt ist, kann der Service-Hauptschlüssel von dem Service-Konto geöffnet werden, unter dem er erstellt wurde, oder von einem Prinzipal, der Zugriff auf die Maschinenzugangsdaten hat.

SQL Server verwendet den AES-Verschlüsselungsalgorithmus, um den Service-Masterschlüssel und den Datenbank-Masterschlüssel zu schützen. AES ersetzte den 3DES-Algorithmus, der in Versionen vor SQL Server 2012 (11.x) verwendet wurde. Nachdem du eine Instanz der Datenbank-Engine von einer dieser früheren Versionen aufgerüstet hast, regeneriere SMK und DMK, um die Hauptschlüssel auf AES zu aktualisieren. Weitere Informationen zum Regenerieren der SMK finden Sie unter ALTER SERVICEALTER SERVICE MASTER KEY (Transact-SQL) und ALTER MASTER KEY (Transact-SQL).

Datenbank-Hauptschlüssel

Der Datenbank-Hauptschlüssel ist ein symmetrischer Schlüssel, der die privaten Schlüssel von Zertifikaten und asymmetrischen Schlüsseln schützt, die in der Datenbank vorhanden sind. Es kann auch Daten verschlüsseln, hat aber Längenbeschränkungen, die es für Daten weniger praktisch machen als die asymmetrische Verschlüsselung. Um die automatische Entschlüsselung des Datenbank-Hauptschlüssels zu ermöglichen, wird eine Kopie des Schlüssels mithilfe des SMK verschlüsselt. SQL Server speichert diese Kopie sowohl in der Datenbank, in der der Schlüssel verwendet wird, als auch in der master Systemdatenbank.

Die Kopie des DMK, die in der master Systemdatenbank gespeichert ist, wird lautlos aktualisiert, sobald sich das DMK ändert. Du kannst diese Standardeinstellung ändern, indem du die Option DROP ENCRYPTION BY SERVICE MASTER KEY von ALTER MASTER KEY (Transact-SQL) benutzt. Ein DMK, das nicht durch den Service-Hauptschlüssel verschlüsselt ist, muss mit OPEN MASTER KEYOPEN MASTER KEY (Transact-SQL) und einem Passwort geöffnet werden.

Verwaltung von SQL Server- und Datenbankschlüsseln

Die Verwaltung von Verschlüsselungsschlüsseln beinhaltet das Erstellen neuer Datenbankschlüssel, das Sichern der Server- und Datenbankschlüssel sowie das Wissen darüber, wann und wie man die Schlüssel wiederherstellt, löscht oder ändert.

Um symmetrische Schlüssel zu verwalten, verwenden Sie die im SQL Server enthaltenen Werkzeuge, um folgende Aufgaben auszuführen:

  • Sichern Sie eine Kopie der Server- und Datenbankschlüssel, damit Sie sie zur Wiederherstellung einer Serverinstallation oder als Teil einer geplanten Migration verwenden können.
  • Wiederherstellen eines zuvor gespeicherten Schlüssels in einer Datenbank. Das Wiederherstellen des Schlüssels ermöglicht es einer neuen Serverinstanz, auf bestehende Daten zuzugreifen, 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.
  • Schlüssel neu erstellen und Daten neu verschlüsseln, falls der Schlüssel kompromittiert wird. Als Sicherheitsbest-Practice sollte man die Schlüssel regelmäßig neu erstellen, zum Beispiel alle paar Monate, um den Server vor Angriffen zu schützen, die versuchen, die Schlüssel zu entschlüsseln.
  • Hinzufügen oder Entfernen einer Serverinstanz aus einer Serverbereitstellung für horizontales 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

Um auf Objekte zuzugreifen, die durch den Service-Masterschlüssel gesichert sind, benötigen Sie entweder das SQL Server-Servicekonto, das Sie zur Erstellung des Schlüssels verwendet haben, oder das Computer-(Maschinen-)Konto, das mit dem System verknüpft ist, in dem Sie den Schlüssel erstellt haben. Du kannst das SQL Server-Servicekonto oder das Computerkonto ändern, ohne den Zugriff auf den Schlüssel zu verlieren. Wenn du jedoch beide Konten änderst, verlierst du den Zugriff auf den Service-Hauptschlüssel. Wenn du ohne eines dieser beiden Elemente den Zugriff auf den Service-Masterschlüssel verlierst, kannst du keine Daten und Objekte entschlüsseln, die der ursprüngliche Schlüssel verschlüsselt hat.

Du kannst keine mit dem Service-Masterschlüssel gesicherten Verbindungen wiederherstellen, es sei denn, du hast diesen Schlüssel.

Um auf Objekte und Daten zuzugreifen, die mit dem Datenbank-Hauptschlüssel gesichert sind, benötigt man nur das Passwort, das den Schlüssel sichert.

Achtung

Wenn Sie den gesamten Zugriff auf die in diesem Artikel beschriebenen Schlüssel verlieren, verlieren Sie den Zugriff auf die durch diese Schlüssel gesicherten Objekte, Verbindungen und Daten. Du kannst den Service-Masterschlüssel wie in Restore the Service Master Key beschrieben wiederherstellen oder zum ursprünglichen Verschlüsselungssystem zurückkehren, um den Zugriff wiederherzustellen. Es gibt keine „Hintertür“ zum Wiederherstellen des Zugriffs.