CREATE ASYMMETRIC KEY (Transact-SQL)

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics

Erstellt einen asymmetrischen Schlüssel in der Datenbank.

Diese Funktion ist inkompatibel mit Datenbankexport über Data-Tier Application Framework (DACFx). Sie müssen alle asymmetrischen 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 ASYMMETRIC KEY asym_key_name   
   [ AUTHORIZATION database_principal_name ]  
   [ FROM <asym_key_source> ]  
   [ WITH <key_option> ] 
   [ ENCRYPTION BY <encrypting_mechanism> ] 
   [ ; ]
  
<asym_key_source>::=  
     FILE = 'path_to_strong-name_file'  
   | EXECUTABLE FILE = 'path_to_executable_file'  
   | ASSEMBLY assembly_name  
   | PROVIDER provider_name  
  
<key_option> ::=  
   ALGORITHM = <algorithm>  
      |  
   PROVIDER_KEY_NAME = 'key_name_in_provider'  
      |  
      CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }  
  
<algorithm> ::=  
      { RSA_4096 | RSA_3072 | RSA_2048 | RSA_1024 | RSA_512 }   
  
<encrypting_mechanism> ::=  
    PASSWORD = 'password'   

Argumente

Asym_Key_Name
Der Name des asymmetrischen Schlüssels in der Datenbank. Namen von asymmetrischen Schlüsseln müssen den Regeln für Bezeichner entsprechen und innerhalb der Datenbank eindeutig sein.

AUTHORIZATION database_principal_name
Gibt den Besitzer des asymmetrischen Schlüssels an. Eine Rolle oder Gruppe kann nicht als Besitzer angegeben sein. Wird diese Option ausgelassen, wird der aktuelle Benutzer als Besitzer verwendet.

FROM Asym_Key_Source
Gibt die Quelle an, aus der das asymmetrische Schlüsselpaar geladen werden soll.

FILE ='path_to_strong-name_file'
Gibt den Pfad zu einer Datei mit starkem Namen an, aus der das Schlüsselpaar geladen werden soll. Beschränkt auf 260 Zeichen von MAX_PATH von der Windows-API.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

EXECUTABLE FILE ='path_to_executable_file'
Gibt den Pfad einer Assemblydatei an, aus der der öffentliche Schlüssel geladen werden soll. Beschränkt auf 260 Zeichen von MAX_PATH von der Windows-API.

Hinweis

Diese Option ist in einer enthaltenen Datenbank nicht verfügbar.

ASSEMBLY assembly_name
Gibt den Namen einer signierten Assembly an, die bereits in die Datenbank geladen wurde. Aus ihr wird der öffentliche Schlüssel geladen.

PROVIDER provider_name
Gibt den Namen eines Anbieters für erweiterte Schlüsselverwaltung (Extensible Key Management, EKM) an. Der Anbieter muss zuerst mit der CREATE PROVIDER-Anweisung definiert werden. Weitere Informationen zum Verwalten externer Schlüssel finden Sie unter Erweiterbare Schlüsselverwaltung (EKM).

ALGORITHM = <algorithm>
Die folgenden fünf Algorithmen können zur Verfügung gestellt werden: RSA_4096, RSA_3072, RSA_2048, RSA_1024 und RSA_512.

RSA_1024 und RSA_512 sind veraltet. Um RSA_1024 oder RSA_512 zu verwenden (was nicht empfohlen wird), müssen Sie den Kompatibilitätsgrad zwischen Datenbanken auf höchstens 120 festlegen.

PROVIDER_KEY_NAME = 'key_name_in_provider'
Gibt den Schlüsselnamen des externen Anbieters an.

CREATION_DISPOSITION = CREATE_NEW
Erstellt einen neuen Schlüssel auf dem Extensible Key Management-Gerät. PROVIDER_KEY_NAME muss verwendet werden, um Schlüsselnamen auf dem Gerät anzugeben. Wenn bereits ein Schlüssel auf dem Gerät vorhanden ist, gibt die Anweisung eine Fehlermeldung zurück.

CREATION_DISPOSITION = OPEN_EXISTING
Ordnet einen asymmetrischen Schlüssel von SQL Server einem vorhandenen EKM-Schlüssel zu. PROVIDER_KEY_NAME muss verwendet werden, um Schlüsselnamen auf dem Gerät anzugeben. Wenn CREATION_DISPOSITION = OPEN_EXISTING nicht bereitgestellt wird, ist der Standardwert CREATE_NEW.

ENCRYPTION BY PASSWORD = 'password'
Gibt das Kennwort an, mit dem der private Schlüssel verschlüsselt werden soll. Wenn diese Klausel nicht vorhanden ist, wird der private Schlüssel mit dem Datenbank-Hauptschlüssel verschlüsselt. password kann maximal 128 Zeichen umfassen. password muss den Anforderungen der Windows-Kennwortrichtlinien des Computers entsprechen, auf dem die Instanz von SQL Server ausgeführt wird.

Bemerkungen

Ein asymmetrischer Schlüssel ist eine sicherungsfähige Entität auf Datenbankebene. Standardmäßig enthält diese Entität sowohl einen öffentlichen als auch einen privaten Schlüssel. Bei einer Ausführung ohne die FROM-Klausel generiert CREATE ASYMMETRIC KEY ein neues Schlüsselpaar. Bei einer Ausführung mit FROM-Klausel importiert CREATE ASYMMETRIC KEY ein Schlüsselpaar aus einer Datei oder einen öffentlichen Schlüssel aus einer Assembly oder DLL-Datei.

Standardmäßig ist der private Schlüssel mit dem Datenbank-Hauptschlüssel geschützt. Falls kein Datenbank-Hauptschlüssel erstellt wurde, ist ein Kennwort zum Schützen des privaten Schlüssels erforderlich.

Der private Schlüssel kann eine Länge von 512, 1024 oder 2048 Bits aufweisen.

Asymmetrische Schlüssel, die für TDE verwendet werden, sind auf eine private Schlüsselgröße von 3072 Bit beschränkt.

Berechtigungen

Erfordert die CREATE ASYMMETRIC KEY-Berechtigung in der Datenbank. Wenn die AUTHORIZATION-Klausel angegeben ist, ist die IMPERSONATE-Berechtigung für den Datenbankprinzipal oder die ALTER-Berechtigung für die Anwendungsrolle erforderlich. Nur Windows-Anmeldungen, SQL Server-Anmeldungen und Anwendungsrollen können asymmetrische Schlüssel besitzen. Gruppen und Rollen können keine asymmetrischen Schlüssel besitzen.

Beispiele

A. Erstellen eines asymmetrischen Schlüssels

Im folgenden Beispiel wird der asymmetrische Schlüssel PacificSales09 mithilfe des RSA_2048-Algorithmus erstellt, und der private Schlüssel wird mit einem Kennwort geschützt.

CREATE ASYMMETRIC KEY PacificSales09   
    WITH ALGORITHM = RSA_2048   
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';   
GO  

B. Erstellen eines asymmetrischen Schlüssels aus einer Datei, wobei die Autorisierung an einen Benutzer erteilt wird

Im folgenden Beispiel wird der asymmetrische Schlüssel PacificSales19 aus einem in einer Datei gespeicherten Schlüsselpaar erstellt und der Besitz des asymmetrischen Schlüssels Benutzer Christina zugewiesen. Der private Schlüssel ist durch den Datenbankhauptschlüssel geschützt, der vor dem asymmetrischen Schlüssel erstellt werden muss.

CREATE ASYMMETRIC KEY PacificSales19  
    AUTHORIZATION Christina  
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp';  
GO  

C. Erstellen eines asymmetrischen Schlüssels von einem EKM-Anbieter

Das folgende Beispiel erstellt den asymmetrischen Schlüssel EKM_askey1 aus einem Schlüsselpaar, das in einem EKM-Anbieter namens EKM_Provider1 gespeichert ist, und einem Schlüssel für diesen Anbieter namens key10_user1.

CREATE ASYMMETRIC KEY EKM_askey1   
    FROM PROVIDER EKM_Provider1  
    WITH   
        ALGORITHM = RSA_2048,   
        CREATION_DISPOSITION = CREATE_NEW  
        , PROVIDER_KEY_NAME  = 'key10_user1' ;  
GO  

Weitere Informationen

ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Auswählen eines Verschlüsselungsalgorithmus
Verschlüsselungshierarchie
Erweiterbare Schlüsselverwaltung mit Azure Key Vault (SQL Server)