CREATE MASTER KEY (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) SQL-Datenbank in Microsoft Fabric
Erstellt einen Datenbank-Hauptschlüssel in der Datenbank.
Wichtig
- Sie sollten mithilfe von BACKUP MASTER KEY eine Sicherung des Hauptschlüssels erstellen und sie an einem sicheren externen Ort aufbewahren.
- Außerdem sollten Sie in SQL Server mit BACKUP MASTER KEY auch eine Sicherung des Diensthauptschlüssels erstellen und sie an einem sicheren externen Ort aufbewahren.
Transact-SQL-Syntaxkonventionen
Syntax
CREATE MASTER KEY [ ENCRYPTION BY PASSWORD ='password' ]
[ ; ]
Argumente
PASSWORD ='password'
Das Kennwort ist das zum Verschlüsseln des Hauptschlüssels in der Datenbank verwendete Kennwort. password muss den Anforderungen der Windows-Kennwortrichtlinien des Computers entsprechen, auf dem die Instanz von SQL Server ausgeführt wird. password ist in SQL-Datenbank und Azure Synapse Analytics optional.
Hinweise
Der Datenbankmasterschlüssel ist ein symmetrischer Schlüssel, der zum Schutz der privaten Schlüssel von Zertifikaten und asymmetrischen Schlüsseln verwendet wird, die in der Datenbank und geheimen Schlüsseln in anmeldeinformationen mit Datenbankbereich vorhanden sind. Beim Erstellen wird der Hauptschlüssel mithilfe des AES_256-Algorithmus und eines vom Benutzer angegebenen Kennworts verschlüsselt. In SQL Server 2008 (10.0.x) und SQL Server 2008 R2 (10.50.x) wird der Triple DES-Algorithmus verwendet. Die automatische Entschlüsselung für den Hauptschlüssel kann aktiviert werden, indem eine Kopie des Schlüssels mit dem Diensthauptschlüssel verschlüsselt und sowohl in der Datenbank als auch in master
gespeichert wird. In der Regel wird die in master
gespeicherte Kopie im Hintergrund aktualisiert, sobald der Hauptschlüssel geändert wird. Dieses Standardverhalten kann mithilfe der DROP ENCRYPTION BY SERVICE MASTER KEY-Option von ALTER MASTER KEY geändert werden. Ein Masterschlüssel, der nicht vom Dienstmasterschlüssel verschlüsselt ist, muss mithilfe der OPEN MASTER KEY-Anweisung und eines Kennworts geöffnet werden.
In der is_master_key_encrypted_by_server
-Spalte der sys.databases
-Katalogsicht in master
wird angezeigt, ob der Datenbank-Hauptschlüssel mit dem Diensthauptschlüssel verschlüsselt ist.
Informationen zum Datenbank-Hauptschlüssel werden in der sys.symmetric_keys
-Katalogsicht angezeigt.
Für SQL Server und Parallel Data Warehouse wird der Hauptschlüssel in der Regel durch den Diensthauptschlüssel und mindestens ein Kennwort geschützt. Wenn die Datenbank physisch auf einen anderen Server verschoben wird (z. B. beim Protokollversand oder der Wiederherstellung einer Sicherungskopie), enthält sie eine Kopie des Hauptschlüssels, die mit dem ursprünglichen Diensthauptschlüssel des Servers verschlüsselt wurde, falls diese Verschlüsselung nicht explizit durch ALTER MASTER KEY DDL
entfernt wurde. Außerdem enthält die Datenbank eine Kopie des Hauptschlüssels, die mit allen Kennwörtern verschlüsselt wurde, die entweder während des CREATE MASTER KEY
-Vorgangs oder bei nachfolgenden ALTER MASTER KEY DDL
-Vorgängen angegeben wurden. Wenn Benutzer den Hauptschlüssel und alle verschlüsselten Daten wiederherstellen möchten, die nach dem Verschieben der Datenbank durch den Hauptschlüssel als Stamm in der Schlüsselhierarchie verschlüsselt wurden, haben sie dazu drei Möglichkeiten: Sie können die OPEN MASTER KEY
-Anweisung mit einem der Kennwörter nutzen, die zum Schutz des Hauptschlüssels verwendet wurden, die Sicherung des Hauptschlüssels wiederherstellen oder aber die Sicherung des ursprünglichen Diensthauptschlüssels auf dem neuen Server wiederherstellen.
Für SQL-Datenbank und Azure Synapse Analytics gilt der Kennwortschutz nicht als Sicherheitsmechanismus, um ein Datenverlustszenario in Situationen zu verhindern, in denen die Datenbank von einem Server in einen anderen verschoben werden kann, da der Dienstmasterschlüsselschutz auf dem Masterschlüssel von der Microsoft Azure-Plattform verwaltet wird. Das Kennwort für den Hauptschlüssel ist daher in SQL-Datenbank und Azure Synapse Analytics optional.
Für SQL-Datenbank kann der Datenbankmasterschlüssel automatisch erstellt werden, um die geheimen Schlüssel in Anmeldeinformationen im Datenbankbereich zu schützen, die für die Überwachung und andere Features verwendet werden, die eine Datenbank mit Anmeldeinformationen für die Authentifizierung bei einer externen Ressource erfordern, z. B. ein Azure Storage-Konto. Der Hauptschlüssel wird mit einem stark zufällig ausgewählten Kennwort erstellt. Benutzer können den Hauptschlüssel nicht in einer logischen master
Datenbank erstellen. Das Hauptschlüsselkennwort ist microsoft unbekannt und kann nach der Erstellung nicht gefunden werden. Aus diesem Grund wird das Erstellen eines Datenbankmasterschlüssels vor dem Erstellen von Anmeldeinformationen mit Datenbankbereich empfohlen.
Der Diensthauptschlüssel und die Datenbank-Hauptschlüssel werden mit dem AES-256-Algorithmus geschützt.
Berechtigungen
Erfordert die CONTROL-Berechtigung für die Datenbank.
Beispiele
Im folgenden Beispiel wird ein Datenbank-Hauptschlüssel in einer Datenbank erstellt. Der Schlüssel wird mit einem Kennwort verschlüsselt.
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';
GO
Überprüfen Sie, ob der neue Schlüssel ##MS_DatabaseMasterKey##
vorhanden ist:
SELECT * FROM sys.symmetric_keys;
GO