CREATE SYMMETRIC KEY (Transact-SQL)CREATE SYMMETRIC KEY (Transact-SQL)

Anwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL DatabaseAnwendungsbereich:Applies to: JaSQL ServerSQL Server (alle unterstützten Versionen) yesSQL ServerSQL Server (all supported versions) JaAzure SQL-DatenbankAzure SQL DatabaseYesAzure SQL-DatenbankAzure SQL Database

Generiert einen symmetrischen Schlüssel und gibt seine Eigenschaften in SQL ServerSQL Server an.Generates a symmetric key and specifies its properties in SQL ServerSQL Server.

Diese Funktion ist inkompatibel mit Datenbankexport über Data-Tier Application Framework (DACFx).This feature is incompatible with database export using Data Tier Application Framework (DACFx). Sie müssen alle symmetrischen Schlüssel vor dem Export löschen.You must drop all symmetric keys before exporting.

Symbol für Themenlink Transact-SQL-SyntaxkonventionenTopic link icon Transact-SQL Syntax Conventions

SyntaxSyntax

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  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 oder früher finden Sie unter Dokumentation zu früheren Versionen.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumenteArguments

Key_nameKey_name
Gibt den eindeutigen Namen an, unter dem der symmetrische Schlüssel in der Datenbank bekannt ist.Specifies the unique name by which the symmetric key is known in the database. Temporäre Schlüssel werden festgelegt, wenn der key_name mit einem Nummernzeichen (#) beginnt.Temporary keys are designated when the key_name begins with one number (#) sign. Ein Beispiel: #temporaryKey900007.For example, #temporaryKey900007. Das Erstellen eines symmetrischen Schlüssels, dessen Name mit mehreren Nummernzeichen (#) beginnt, ist nicht möglich.You cannot create a symmetric key that has a name that starts with more than one #. Sie können keinen temporären symmetrischen Schlüssel mit einem EKM-Anbieter erstellen.You cannot create a temporary symmetric key using an EKM provider.

AUTHORIZATION owner_nameAUTHORIZATION owner_name
Gibt den Namen des Datenbankbenutzers oder der Anwendungsrolle an, der bzw. die diesen Schlüssel besitzen wird.Specifies the name of the database user or application role that will own this key.

FROM PROVIDER provider_nameFROM PROVIDER provider_name
Gibt einen Anbieter für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) und einen Namen an.Specifies an Extensible Key Management (EKM) provider and name. Der Schlüssel wird nicht vom EKM-Gerät exportiert.The key is not exported from the EKM device. Der Anbieter muss zuerst mit der CREATE PROVIDER-Anweisung definiert werden.The provider must be defined first using the CREATE PROVIDER statement. Weitere Informationen zum Erstellen von externen Schlüsselanbietern finden Sie unter Erweiterbare Schlüsselverwaltung (EKM).For more information about creating external key providers, see Extensible Key Management (EKM).

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

KEY_SOURCE =' pass_phrase 'KEY_SOURCE ='pass_phrase'
Gibt einen Passphrase an, aus dem der Schlüssel abgeleitet werden soll.Specifies a pass phrase from which to derive the key.

IDENTITY_VALUE =' identity_phrase '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.Specifies an identity phrase from which to generate a GUID for tagging data that is encrypted with a temporary key.

PROVIDER_KEY_NAME =' key_name_in_provider '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.Specifies the name referenced in the Extensible Key Management provider.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.This option is not available in a contained database.

CREATION_DISPOSITION = CREATE_NEWCREATION_DISPOSITION = CREATE_NEW
Erstellt einen neuen Schlüssel auf dem Extensible Key Management-Gerät.Creates a new key on the Extensible Key Management device. Wenn bereits ein Schlüssel auf dem Gerät vorhanden ist, gibt die Anweisung eine Fehlermeldung zurück.If a key already exists on the device, the statement fails with error.

CREATION_DISPOSITION = OPEN_EXISTINGCREATION_DISPOSITION = OPEN_EXISTING
Ordnet einen symmetrischen Schlüssel von SQL ServerSQL Server einem vorhandenen Extensible Key Management-Schlüssel zu.Maps a SQL ServerSQL Server symmetric key to an existing Extensible Key Management key. Wenn CREATION_DISPOSITION = OPEN_EXISTING nicht bereitgestellt wird, wird der Standardwert CREATE_NEW angenommen.If CREATION_DISPOSITION = OPEN_EXISTING is not provided, this defaults to CREATE_NEW.

certificate_namecertificate_name
Gibt den Namen des Zertifikats an, das zum Verschlüsseln des symmetrischen Schlüssels verwendet wird.Specifies the name of the certificate that will be used to encrypt the symmetric key. Das Zertifikat muss bereits in der Datenbank vorhanden sein.The certificate must already exist in the database.

' password '' password '
Gibt ein Kennwort an, von dem ein TRIPLE_DES-Schlüssel zum Sichern des symmetrischen Schlüssels abgeleitet wird.Specifies a password from which to derive a TRIPLE_DES key with which to secure the symmetric key. password muss den Anforderungen der Windows-Kennwortrichtlinien des Computers entsprechen, auf dem die Instanz von SQL ServerSQL Server ausgeführt wird.password must meet the Windows password policy requirements of the computer that is running the instance of SQL ServerSQL Server. Verwenden Sie immer sichere Kennwörter.Always use strong passwords.

symmetric_key_namesymmetric_key_name
Gibt einen symmetrischen Schlüssel an, der zum Verschlüsseln des erstellten Schlüssels verwendet wird.Specifies a symmetric key, used to encrypt the key that is being created. Der angegebene Schlüssel muss bereits in der Datenbank vorhanden und geöffnet sein.The specified key must already exist in the database, and the key must be open.

Asym_Key_Nameasym_key_name
Gibt einen asymmetrischen Schlüssel an, der zum Verschlüsseln des erstellten Schlüssels verwendet wird.Specifies an asymmetric key, used to encrypt the key that is being created. Dieser asymmetrische Schlüssel muss bereits in der Datenbank vorhanden sein.This asymmetric key must already exist in the database.

<algorithm>
Geben Sie den Verschlüsselungsalgorithmus an.Specify the encrypting algorithm.

Warnung

Ab SQL Server 2016 (13.x)SQL Server 2016 (13.x)gelten alle anderen Algorithmen als AES_128, AES_192 und AES_256 als veraltet.Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x), all algorithms other than AES_128, AES_192, and AES_256 are deprecated. Sie müssen den Kompatibilitätsgrad zwischen Datenbanken auf maximal 120 festlegen, um ältere Algorithmen zu verwenden (nicht empfohlen).To use older algorithms (not recommended), you must set the database to database compatibility level 120 or lower.

BemerkungenRemarks

Beim Erstellen eines symmetrischen Schlüssels muss der symmetrische Schlüssel mithilfe mindestens eines der folgenden Elemente verschlüsselt werden: Zertifikat, Kennwort, symmetrischer Schlüssel, asymmetrischer Schlüssel oder PROVIDER.When a symmetric key is created, the symmetric key must be encrypted by using at least one of the following: certificate, password, symmetric key, asymmetric key, or PROVIDER. Der Schlüssel kann mehrere Verschlüsselungen jedes Typs aufweisen.The key can have more than one encryption of each type. Ein einzelner symmetrischer Schlüssel kann demnach mit mehreren Zertifikaten, Kennwörtern, symmetrischen Schlüsseln und asymmetrischen Schlüsseln gleichzeitig verschlüsselt sein.In other words, a single symmetric key can be encrypted by using multiple certificates, passwords, symmetric keys, and asymmetric keys at the same time.

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.When a symmetric key is encrypted with a password instead of a certificate (or another key), the TRIPLE DES encryption algorithm is used to encrypt the password. Daher werden Schlüssel, die mit einem starken Verschlüsselungsalgorithmus wie z. B. AES erstellt werden, selbst mit einem schwächeren Algorithmus verschlüsselt.Because of this, keys that are created with a strong encryption algorithm, such as AES, are themselves secured by a weaker algorithm.

Mit dem optionalen Kennwort kann der symmetrische Schlüssel verschlüsselt werden, bevor der Schlüssel an mehrere Benutzer verteilt wird.The optional password can be used to encrypt the symmetric key before distributing the key to multiple users.

Temporäre Schlüssel befinden sich im Besitz des Benutzers, der sie erstellt.Temporary keys are owned by the user that creates them. Temporäre Schlüssel gelten nur für die aktuelle Sitzung.Temporary keys are only valid for the current session.

Von IDENTITY_VALUE wird ein GUID generiert, mit dem Daten gekennzeichnet werden, die mit dem neuen symmetrischen Schlüssel verschlüsselt werden.IDENTITY_VALUE generates a GUID with which to tag data that is encrypted with the new symmetric key. Mithilfe dieser Kennzeichnung können Schlüssel den verschlüsselten Daten zugeordnet werden.This tagging can be used to match keys to encrypted data. Von einem spezifischen Ausdruck wird immer dieselbe GUID generiert.The GUID generated by a specific phrase is always the same. Nachdem ein Ausdruck zum Generieren eines GUIDs verwendet wurde, kann der Ausdruck nicht mehr wiederverwendet werden, es sei denn, es ist mindestens eine Sitzung vorhanden, in der der Ausdruck aktiv verwendet wird.After a phrase has been used to generate a GUID, the phrase cannot be reused as long as there is at least one session that is actively using the phrase. 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.IDENTITY_VALUE is an optional clause; however, we recommend using it when you are storing data encrypted with a temporary key.

Es gibt keinen Standardverschlüsselungsalgorithmus.There is no default encryption algorithm.

Wichtig

Die Verwendung der RC4- und RC4_128-Datenstromchiffren wird zum Schutz vertraulicher Daten nicht empfohlen.We do not recommend using the RC4 and RC4_128 stream ciphers to protect sensitive data. Die Verschlüsselung mit solchen Schlüsseln wird von SQL ServerSQL Server nicht weiter codiert.SQL ServerSQL Server does not further encode the encryption performed with such keys.

Informationen zu symmetrischen Schlüsseln werden in der sys.symmetric_keys-Katalogsicht angezeigt.Information about symmetric keys is visible in the sys.symmetric_keys catalog view.

Symmetrische Schlüssel können nicht mit symmetrischen Schlüsseln, die mit dem Verschlüsselungsanbieter erstellt wurden, verschlüsselt werden.Symmetric keys cannot be encrypted by symmetric keys created from the encryption provider.

Erläuterung der DES-Algorithmen:Clarification regarding DES algorithms:

  • DESX wurde falsch benannt.DESX was incorrectly named. Symmetrische Schlüssel, die mit ALGORITHM = DESX erstellt sind, verwenden eigentlich die TRIPLE DES-Chiffre mit einem 192-Bit-Schlüssel.Symmetric keys created with ALGORITHM = DESX actually use the TRIPLE DES cipher with a 192-bit key. Der DESX-Algorithmus wird nicht bereitgestellt.The DESX algorithm is not provided. Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt.This feature will be removed in a future version of Microsoft SQL Server. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.
  • Symmetrische Schlüssel, die mit ALGORITHM = TRIPLE_DES_3KEY erstellt sind, verwenden die TRIPLE DES-Chiffre mit einem 192-Bit-Schlüssel.Symmetric keys created with ALGORITHM = TRIPLE_DES_3KEY use TRIPLE DES with a 192-bit key.
  • Symmetrische Schlüssel, die mit ALGORITHM = TRIPLE_DES erstellt sind, verwenden die TRIPLE DES-Chiffre mit einem 128-Bit-Schlüssel.Symmetric keys created with ALGORITHM = TRIPLE_DES use TRIPLE DES with a 128-bit key.

Veraltung des RC4-Algorithmus:Deprecation of the RC4 algorithm:

Die wiederholte Verwendung der gleichen RC4- oder RC4_128-KEY_GUID für unterschiedliche Datenblocks führt zum gleichen RC4-Schlüssel, da SQL ServerSQL Server nicht automatisch eine Salt bereitstellt.Repeated use of the same RC4 or RC4_128 KEY_GUID on different blocks of data, results in the same RC4 key because SQL ServerSQL Server does not provide a salt automatically. Die wiederholte Verwendung des gleichen RC4-Schlüssels stellt einen bekannter Fehler dar, der zu einer sehr schwachen Verschlüsselung führt.Using the same RC4 key repeatedly is a well known error that will result in very weak encryption. Deshalb wurden das RC4-Schlüsselwort und das RC4_128-Schlüsselwort als veraltet festgelegt.Therefore we have deprecated the RC4 and RC4_128 keywords. Dieses Feature wird in einer künftigen Version von Microsoft SQL Server entfernt.This feature will be removed in a future version of Microsoft SQL Server. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.Avoid using this feature in new development work, and plan to modify applications that currently use this feature.

Warnung

Der RC4-Algorithmus wird nur aus Gründen der Abwärtskompatibilität unterstützt.The RC4 algorithm is only supported for backward compatibility. Neues Material kann nur mit RC4 oder RC4_128 verschlüsselt werden, wenn die Datenbank den Kompatibilitätsgrad 90 oder 100 besitzt.New material can only be encrypted using RC4 or RC4_128 when the database is in compatibility level 90 or 100. (Nicht empfohlen.) Verwenden Sie stattdessen einen neueren Algorithmus, z. B. einen der AES-Algorithmen.(Not recommended.) Use a newer algorithm such as one of the AES algorithms instead. In SQL ServerSQL Server kann mit RC4 oder RC4_128 verschlüsseltes Material in jedem Kompatibilitätsgrad entschlüsselt werden.In SQL ServerSQL Server material encrypted using RC4 or RC4_128 can be decrypted in any compatibility level.

BerechtigungenPermissions

Erfordert die ALTER ANY SYMMETRIC KEY-Berechtigung in der Datenbank.Requires ALTER ANY SYMMETRIC KEY permission on the database. Falls die AUTHORIZATION-Klausel angegeben ist, ist die IMPERSONATE-Berechtigung für den Datenbankbenutzer oder die ALTER-Berechtigung für die Anwendungsrolle erforderlich.If AUTHORIZATION is specified, requires IMPERSONATE permission on the database user or ALTER permission on the application role. 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.If encryption is by certificate or asymmetric key, requires VIEW DEFINITION permission on the certificate or asymmetric key. Nur Windows-Anmeldungen, SQL ServerSQL Server -Anmeldungen und Anwendungsrollen können symmetrische Schlüssel besitzen.Only Windows logins, SQL ServerSQL Server logins, and application roles can own symmetric keys. Gruppen und Rollen können keine symmetrischen Schlüssel besitzen.Groups and roles cannot own symmetric keys.

BeispieleExamples

A.A. Erstellen eines symmetrischen SchlüsselsCreating a symmetric key

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.The following example creates a symmetric key called JanainaKey09 by using the AES 256 algorithm, and then encrypts the new key with certificate Shipping04.

CREATE SYMMETRIC KEY JanainaKey09   
WITH ALGORITHM = AES_256  
ENCRYPTION BY CERTIFICATE Shipping04;  
GO  

B.B. Erstellen eines temporären symmetrischen SchlüsselsCreating a temporary symmetric key

Im folgenden Beispiel wird ein temporärer symmetrischer Schlüssel mit Namen #MarketingXXV aus dem folgenden Passphrase erstellt: The square of the hypotenuse is equal to the sum of the squares of the sides.The following example creates a temporary symmetric key called #MarketingXXV from the pass phrase: 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.The key is provisioned with a GUID that is generated from the string Pythagoras and encrypted with certificate Marketing25.

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.C. Das Erstellen eines symmetrischen Schlüssels mit einem Extensible Key Management (EKM)-GerätCreating a symmetric key using an Extensible Key Management (EKM) device

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.The following example creates a symmetric key called MySymKey by using a provider called MyEKMProvider and a key name of KeyForSensitiveData. User1 wird autorisiert, und es wird davon ausgegangen, dass der Systemadministrator den Anbieter MyEKMProvider bereits in SQL ServerSQL Server registriert hat.It assigns authorization to User1 and assumes that the system administrator has already registered the provider called MyEKMProvider in SQL ServerSQL Server.

CREATE SYMMETRIC KEY MySymKey  
AUTHORIZATION User1  
FROM PROVIDER EKMProvider  
WITH  
PROVIDER_KEY_NAME='KeyForSensitiveData',  
CREATION_DISPOSITION=OPEN_EXISTING;  
GO  

Weitere InformationenSee Also

Auswählen eines Verschlüsselungsalgorithmus Choose an Encryption Algorithm
ALTER SYMMETRIC KEY (Transact-SQL) ALTER SYMMETRIC KEY (Transact-SQL)
DROP SYMMETRIC KEY (Transact-SQL) DROP SYMMETRIC KEY (Transact-SQL)
Verschlüsselungshierarchie Encryption Hierarchy
sys.symmetric_keys (Transact-SQL) sys.symmetric_keys (Transact-SQL)
Erweiterbare Schlüsselverwaltung (EKM) Extensible Key Management (EKM)
Erweiterbare Schlüsselverwaltung mit Azure Key Vault (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)