CREATE SYMMETRIC KEY (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics SQL-Datenbank in Microsoft Fabric
Generiert einen symmetrischen Schlüssel und gibt seine Eigenschaften in SQL Server an.
Diese Funktion ist inkompatibel mit Datenbankexport über Data-Tier Application Framework (DACFx). Sie müssen alle symmetrischen Schlüssel vor dem Export löschen.
Transact-SQL-Syntaxkonventionen
Hinweis
Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.
Syntax
CREATE SYMMETRIC KEY key_name
[ AUTHORIZATION owner_name ]
[ FROM PROVIDER provider_name ]
WITH
[
<key_options> [ , ... n ]
| ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
]
<key_options> ::=
KEY_SOURCE = 'pass_phrase'
| ALGORITHM = <algorithm>
| IDENTITY_VALUE = 'identity_phrase'
| PROVIDER_KEY_NAME = 'key_name_in_provider'
| CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
| DESX | AES_128 | AES_192 | AES_256
<encrypting_mechanism> ::=
CERTIFICATE certificate_name
| PASSWORD = 'password'
| SYMMETRIC KEY symmetric_key_name
| ASYMMETRIC KEY asym_key_name
Argumente
key_name
Gibt den eindeutigen Namen an, unter dem der symmetrische Schlüssel in der Datenbank bekannt ist. Dies ist ein erforderlicher Parameter. Temporäre Schlüssel werden festgelegt, wenn der key_name mit einem Nummernzeichen (#
) beginnt. Beispiel: #temporaryKey900007
. Das Erstellen eines symmetrischen Schlüssels, dessen Name mit mehreren #
beginnt, ist nicht möglich. Sie können keinen temporären symmetrischen Schlüssel mit einem EKM-Anbieter erstellen.
AUTHORIZATION owner_name
Gibt den Namen des Datenbankbenutzers oder der Anwendungsrolle an, der bzw. die diesen Schlüssel besitzt.
FROM PROVIDER provider_name
Gibt einen Anbieter für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) und einen Namen an. Der Schlüssel wird nicht vom EKM-Gerät exportiert. Der Anbieter muss zuerst mit der CREATE PROVIDER
-Anweisung definiert werden. Weitere Informationen zum Erstellen von externen Schlüsselanbietern finden Sie unter Erweiterbare Schlüsselverwaltung (EKM).
Hinweis
Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.
KEY_SOURCE = 'pass_phrase'
Gibt eine Passphrase an, aus dem der Schlüssel abgeleitet werden soll.
IDENTITY_VALUE = 'identity_phrase'
Gibt einen Identity-Ausdruck an, aus dem ein GUID zum Kennzeichnen von Daten generiert wird, die mit einem temporären Schlüssel verschlüsselt werden.
PROVIDER_KEY_NAME = 'key_name_in_provider'
Gibt den Namen an, auf den der Anbieter für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) verweist.
Hinweis
Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.
CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
Erzeugt einen symmetrischen Schlüssel oder ordnet ihn einem Extensible Key Management Gerät zu.
CREATE_NEW
Erstellt einen neuen Schlüssel auf dem Extensible Key Management-Gerät. Wenn bereits ein Schlüssel auf dem Gerät vorhanden ist, gibt die Anweisung eine Fehlermeldung zurück.
OPEN_EXISTING
Ordnet einen symmetrischen Schlüssel von SQL Server einem vorhandenen EKM-Schlüssel zu. Wenn
CREATION_DISPOSITION = OPEN_EXISTING
nicht angegeben wird, wird er standardmäßig aufCREATE_NEW
festgelegt.
certificate_name
Gibt den Namen des Zertifikats an, das zum Verschlüsseln des symmetrischen Schlüssels verwendet wird. Das Zertifikat muss bereits in der Datenbank vorhanden sein.
'password'
Gibt ein Kennwort an, von dem ein TRIPLE_DES-Schlüssel zum Sichern des symmetrischen Schlüssels abgeleitet wird. password muss den Anforderungen der Windows-Kennwortrichtlinien des Computers entsprechen, auf dem die Instanz von SQL Server ausgeführt wird. Verwenden Sie immer sichere Kennwörter.
symmetric_key_name
Gibt einen symmetrischen Schlüssel an, der zum Verschlüsseln des erstellten Schlüssels verwendet wird. Der angegebene Schlüssel muss bereits in der Datenbank vorhanden und geöffnet sein.
Asym_Key_Name
Gibt einen asymmetrischen Schlüssel an, der zum Verschlüsseln des erstellten Schlüssels verwendet wird. Dieser asymmetrische Schlüssel muss bereits in der Datenbank vorhanden sein.
<algorithm>
Geben Sie den Verschlüsselungsalgorithmus an.
Warnung
Ab SQL Server 2016 (13.x)gelten alle anderen Algorithmen als AES_128, AES_192 und AES_256 als veraltet. Sie müssen den Kompatibilitätsgrad zwischen Datenbanken auf maximal 120 festlegen, um ältere Algorithmen zu verwenden (nicht empfohlen).
Hinweise
Wenn ein symmetrischer Schlüssel erstellt wird, muss der symmetrische Schlüssel mit mindestens einer der folgenden Optionen verschlüsselt werden:
- Zertifikat
- Kennwort
- symmetrischer Schlüssel
- asymmetrischer Schlüssel
- AUSWÄHLEN
Der Schlüssel kann mehrere Verschlüsselungen jedes Typs aufweisen. Ein einzelner symmetrischer Schlüssel kann demnach mit mehreren Zertifikaten, Kennwörtern, symmetrischen Schlüsseln und asymmetrischen Schlüsseln gleichzeitig verschlüsselt sein.
Achtung
Wenn ein symmetrischer Schlüssel mit einem Kennwort anstatt mit einem Zertifikat (oder einem anderen Schlüssel) verschlüsselt ist, wird der TRIPLE_DES-Verschlüsselungsalgorithmus verwendet, um das Kennwort zu verschlüsseln. Daher werden Schlüssel, die mit einem starken Verschlüsselungsalgorithmus wie z. B. AES erstellt werden, selbst mit einem schwächeren Algorithmus verschlüsselt.
Mit dem optionalen Kennwort kann der symmetrische Schlüssel verschlüsselt werden, bevor der Schlüssel an mehrere Benutzer verteilt wird.
Temporäre Schlüssel befinden sich im Besitz des Benutzers, der sie erstellt. Temporäre Schlüssel gelten nur für die aktuelle Sitzung.
IDENTITY_VALUE
erzeugt eine GUID, mit der Daten gekennzeichnet werden, die mit dem neuen symmetrischen Schlüssel verschlüsselt sind. Mithilfe dieser Kennzeichnung können Schlüssel den verschlüsselten Daten zugeordnet werden. Von einem spezifischen Ausdruck wird immer dieselbe GUID generiert. Nachdem eine Phrase zur Erzeugung einer GUID verwendet wurde, kann die Phrase nicht wiederverwendet werden, solange es mindestens einen symmetrischen Schlüssel in dieser Datenbank gibt, der die Phrase aktiv verwendet. IDENTITY_VALUE
ist eine optionale Klausel. Die Verwendung dieser Klausel wird jedoch empfohlen, wenn Sie mit einem temporären Schlüssel verschlüsselte Daten speichern.
Es gibt keinen Standardverschlüsselungsalgorithmus.
Wichtig
Die Verwendung der RC4- und RC4_128-Datenstromchiffren wird zum Schutz vertraulicher Daten nicht empfohlen. Die Verschlüsselung mit solchen Schlüsseln wird von SQL Server nicht weiter codiert.
Informationen zu symmetrischen Schlüsseln werden in der sys.symmetric_keys-Katalogsicht angezeigt.
Symmetrische Schlüssel können nicht mit symmetrischen Schlüsseln, die mit dem Verschlüsselungsanbieter erstellt wurden, verschlüsselt werden.
Erläuterung der DES-Algorithmen
- DESX wurde falsch benannt. Symmetrische Schlüssel, die mit ALGORITHM = DESX erstellt sind, verwenden eigentlich die TRIPLE DES-Chiffre mit einem 192-Bit-Schlüssel. Der DESX-Algorithmus wird nicht bereitgestellt. Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.
- Symmetrische Schlüssel, die mit ALGORITHM = TRIPLE_DES_3KEY erstellt sind, verwenden die TRIPLE DES-Chiffre mit einem 192-Bit-Schlüssel.
- Symmetrische Schlüssel, die mit ALGORITHM = TRIPLE_DES erstellt sind, verwenden die TRIPLE DES-Chiffre mit einem 128-Bit-Schlüssel.
Veraltung des RC4-Algorithmus:
Die wiederholte Verwendung der gleichen RC4- oder RC4_128-KEY_GUID für unterschiedliche Datenblöcke führt zum gleichen RC4-Schlüssel, da SQL Server nicht automatisch eine Salt bereitstellt. Die wiederholte Verwendung des gleichen RC4-Schlüssels stellt einen bekannter Fehler dar, der zu einer sehr schwachen Verschlüsselung führt. Deshalb wurden das RC4-Schlüsselwort und das RC4_128-Schlüsselwort als veraltet festgelegt. Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.
Warnung
Der RC4-Algorithmus wird nur aus Gründen der Abwärtskompatibilität unterstützt. Neues Material kann nur mit RC4 oder RC4_128 verschlüsselt werden, wenn die Datenbank den Kompatibilitätsgrad 90 oder 100 besitzt. (Nicht empfohlen.) Verwenden Sie stattdessen einen neueren Algorithmus, z. B. einen der AES-Algorithmen. In SQL Server kann mit RC4 oder RC4_128 verschlüsseltes Material in jedem Kompatibilitätsgrad entschlüsselt werden.
Berechtigungen
Erfordert die ALTER ANY SYMMETRIC KEY-Berechtigung in der Datenbank. Wenn AUTHORIZATION
angegeben ist, ist die IMPERSONATE-Berechtigung für den Datenbankbenutzer oder die ALTER-Berechtigung für die Anwendungsrolle erforderlich. Falls die Verschlüsselung mit einem Zertifikat oder asymmetrischen Schlüssel erfolgt, ist die VIEW DEFINITION-Berechtigung für das Zertifikat oder den asymmetrischen Schlüssel erforderlich. Nur Windows-Anmeldungen, SQL Server -Anmeldungen und Anwendungsrollen können symmetrische Schlüssel besitzen. Gruppen und Rollen können keine symmetrischen Schlüssel besitzen.
Beispiele
A. Einen symmetrischen Schlüssel erstellen
Im folgenden Beispiel wird ein symmetrischer Schlüssel mit Namen JanainaKey09
erstellt, wobei der AES 256
-Algorithmus verwendet wird. Anschließend wird der neue Schlüssel mit dem Zertifikat Shipping04
verschlüsselt.
CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
B. Einen temporären symmetrischen Schlüssel erstellen
Im folgenden Beispiel wird ein temporärer symmetrischer Schlüssel mit Namen #MarketingXXV
aus der folgenden Passphrase erstellt: The square of the hypotenuse is equal to the sum of the squares of the sides
. Der Schlüssel wird mit einem GUID bereitgestellt, der aus der Zeichenfolge Pythagoras
generiert und mit dem Zertifikat Marketing25
verschlüsselt wird.
CREATE SYMMETRIC KEY #MarketingXXV
WITH ALGORITHM = AES_128,
KEY_SOURCE
= 'The square of the hypotenuse is equal to the sum of the squares of the sides',
IDENTITY_VALUE = 'Pythagoras'
ENCRYPTION BY CERTIFICATE Marketing25;
GO
C. Erstellen eines symmetrischen Schlüssels mit einem Extensible Key Management (EKM)-Gerät
Im folgenden Beispiel wird ein symmetrischer Schlüssel mit der Bezeichnung MySymKey
erstellt, indem ein Anbieter mit dem Namen MyEKMProvider
und ein Schlüssel mit der Bezeichnung KeyForSensitiveData
verwendet werden. User1
wird autorisiert, und es wird davon ausgegangen, dass der Systemadministrator den Anbieter MyEKMProvider
bereits in SQL Server registriert hat.
CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO
Siehe auch
- Auswählen eines Verschlüsselungsalgorithmus
- ALTER SYMMETRIC KEY (Transact-SQL)
- DROP SYMMETRIC KEY (Transact-SQL)
- Verschlüsselungshierarchie
- sys.symmetric_keys (Transact-SQL)
- Erweiterbare Schlüsselverwaltung (Extensible Key Management, EKM)
- Erweiterbare Schlüsselverwaltung mit Azure Key Vault (SQL Server)