CREATE ASYMMETRIC KEY (Transact-SQL)CREATE ASYMMETRIC KEY (Transact-SQL)

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Permet de créer une clé asymétrique dans la base de données.Creates an asymmetric key in the database.

Cette fonctionnalité est incompatible avec l'exportation de base de données à l'aide de l'infrastructure d'application de la couche Données.This feature is incompatible with database export using Data Tier Application Framework (DACFx). Vous devez supprimer toutes les clés asymétriques avant l'exportation.You must drop all asymmetric keys before exporting.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SyntaxeSyntax

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'   

ArgumentsArguments

asym_key_nameasym_key_name
Nom de la clé asymétrique dans la base de données.Is the name for the asymmetric key in the database. Les noms des clés asymétriques doivent respecter les règles applicables aux identificateurs et doivent être uniques dans la base de données.Asymmetric key names must comply with the rules for identifiers and must be unique within the database.

AUTHORIZATION database_principal_nameAUTHORIZATION database_principal_name
Spécifie le propriétaire de la clé asymétrique.Specifies the owner of the asymmetric key. Le propriétaire ne peut pas être un rôle ni un groupe.The owner cannot be a role or a group. Si cette option n'est pas spécifiée, le propriétaire sera l'utilisateur en cours.If this option is omitted, the owner will be the current user.

FROM asym_key_sourceFROM asym_key_source
Spécifie la source à partir de laquelle la paire de clés asymétriques doit être chargée.Specifies the source from which to load the asymmetric key pair.

FILE = 'path_to_strong-name_file'FILE = 'path_to_strong-name_file'
Spécifie le chemin d'accès du fichier de nom à partir duquel il convient de charger la paire de clés.Specifies the path of a strong-name file from which to load the key pair. Limité à 260 caractères par MAX_PATH dans l'API Windows.Limited to 260 characters by MAX_PATH from the Windows API.

Notes

Cette option n'est pas disponible dans une base de données autonome.This option is not available in a contained database.

EXECUTABLE FILE = 'path_to_executable_file'EXECUTABLE FILE = 'path_to_executable_file'
Spécifie le chemin d’un fichier d’assembly à partir duquel il convient de charger la clé publique.Specifies the path of an assembly file from which to load the public key. Limité à 260 caractères par MAX_PATH dans l'API Windows.Limited to 260 characters by MAX_PATH from the Windows API.

Notes

Cette option n'est pas disponible dans une base de données autonome.This option is not available in a contained database.

ASSEMBLY assembly_nameASSEMBLY assembly_name
Spécifie le nom d’un assembly signé qui a déjà été chargé dans la base de données, à partir duquel charger la clé publique.Specifies the name of a signed assembly that has already been loaded into the database from which to load the public key.

PROVIDER provider_namePROVIDER provider_name
Spécifie le nom d’un fournisseur EKM (Extensible Key Management).Specifies the name of an Extensible Key Management (EKM) provider. Le fournisseur doit d'abord être défini à l'aide de l'instruction CREATE PROVIDER.The provider must be defined first using the CREATE PROVIDER statement. Pour plus d’informations sur la gestion des clés externes, consultez Gestion de clés extensible (EKM).For more information about external key management, see Extensible Key Management (EKM).

ALGORITHM = <algorithm>ALGORITHM = <algorithm>
Cinq algorithmes peuvent être fournis : RSA_4096, RSA_3072, RSA_2048, RSA_1024 et RSA_512.Five algorithms can be provided; RSA_4096, RSA_3072, RSA_2048, RSA_1024, and RSA_512.

RSA_1024 et RSA_512 sont dépréciés.RSA_1024 and RSA_512 are deprecated. Pour utiliser RSA_1024 ou RSA_512 (ce qui est déconseillé), vous devez affecter le niveau de compatibilité 120 ou un niveau inférieur à la base de données.To use RSA_1024 or RSA_512 (not recommended) you must set the database to database compatibility level 120 or lower.

PROVIDER_KEY_NAME = 'key_name_in_provider'PROVIDER_KEY_NAME = 'key_name_in_provider'
Spécifie le nom de la clé à partir du fournisseur externe.Specifies the key name from the external provider.

CREATION_DISPOSITION = CREATE_NEWCREATION_DISPOSITION = CREATE_NEW
Crée une clé sur le périphérique EKM (Extensible Key Management).Creates a new key on the Extensible Key Management device. La clause PROVIDER_KEY_NAME doit être utilisée pour spécifier le nom de la clé sur le périphérique.PROVIDER_KEY_NAME must be used to specify key name on the device. Si une clé existe déjà sur le périphérique l'instruction échoue et génère une erreur.If a key already exists on the device the statement fails with error.

CREATION_DISPOSITION = OPEN_EXISTINGCREATION_DISPOSITION = OPEN_EXISTING
Mappe une clé asymétrique SQL ServerSQL Server à une clé EKM existante.Maps a SQL ServerSQL Server asymmetric key to an existing Extensible Key Management key. La clause PROVIDER_KEY_NAME doit être utilisée pour spécifier le nom de la clé sur le périphérique.PROVIDER_KEY_NAME must be used to specify key name on the device. Si CREATION_DISPOSITION = OPEN_EXISTING n'est pas spécifié, la valeur par défaut est CREATE_NEW.If CREATION_DISPOSITION = OPEN_EXISTING is not provided, the default is CREATE_NEW.

ENCRYPTION BY PASSWORD = 'password'ENCRYPTION BY PASSWORD = 'password'
Spécifie le mot de passe utilisé pour chiffrer la clé privée.Specifies the password with which to encrypt the private key. Si cette clause n'est pas présente, la clé privée sera chiffrée à l'aide de la clé principale de la base de données.If this clause is not present, the private key will be encrypted with the database master key. password comporte au maximum 128 caractères.password is a maximum of 128 characters. password doit satisfaire aux critères de la stratégie de mot de passe Windows de l’ordinateur qui exécute l’instance de SQL ServerSQL Server.password must meet the Windows password policy requirements of the computer that is running the instance of SQL ServerSQL Server.

NotesRemarks

Une clé asymétrique est une entité sécurisable au niveau base de données.An asymmetric key is a securable entity at the database level. Dans sa forme par défaut, cette entité contient à la fois une clé publique et une clé privée.In its default form, this entity contains both a public key and a private key. Lorsqu'elle est exécutée sans la clause FROM, l'instruction CREATE ASYMMETRIC KEY génère une nouvelle paire de clés.When executed without the FROM clause, CREATE ASYMMETRIC KEY generates a new key pair. Quand elle est exécutée avec la clause FROM, l’instruction CREATE ASYMMETRIC KEY importe une paire de clés à partir d’un fichier ou importe une clé publique à partir d’un assembly ou d’un fichier DLL.When executed with the FROM clause, CREATE ASYMMETRIC KEY imports a key pair from a file, or imports a public key from an assembly or DLL file.

Par défaut, la clé privée est protégée par la clé principale de base de données.By default, the private key is protected by the database master key. Si aucune clé principale de base de données n'a été créée, un mot de passe est requis pour protéger la clé privée.If no database master key has been created, a password is required to protect the private key.

La clé privée peut compter 512, 1 024 ou 2 048 bits.The private key can be 512, 1024, or 2048 bits long.

AutorisationsPermissions

Requiert l'autorisation CREATE ASYMMETRIC KEY sur la base de données.Requires CREATE ASYMMETRIC KEY permission on the database. Si la clause AUTHORIZATION est spécifiée, l'autorisation IMPERSONATE sur le principal de base de données ou l'autorisation ALTER sur le rôle d'application est requise.If the AUTHORIZATION clause is specified, requires IMPERSONATE permission on the database principal, or ALTER permission on the application role. Les connexions Windows, les connexions SQL ServerSQL Server et les rôles d’application sont les seuls à pouvoir posséder des clés asymétriques.Only Windows logins, SQL ServerSQL Server logins, and application roles can own asymmetric keys. Les groupes et les rôles ne peuvent pas posséder de clés asymétriques.Groups and roles cannot own asymmetric keys.

ExemplesExamples

A.A. Création d'une clé asymétriqueCreating an asymmetric key

Dans l'exemple suivant, une clé asymétrique nommée PacificSales09 est créée à l'aide de l'algorithme RSA_2048 et la clé privée est protégée par un mot de passe.The following example creates an asymmetric key named PacificSales09 by using the RSA_2048 algorithm, and protects the private key with a password.

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

B.B. Création d'une clé asymétrique à partir d'un fichier, octroi d'une autorisation à un utilisateurCreating an asymmetric key from a file, giving authorization to a user

L’exemple ci-dessous crée la clé asymétrique PacificSales19 à partir d’une paire de clés stockées dans un fichier et affecte l’utilisateur Christina comme propriétaire de la clé asymétrique.The following example creates the asymmetric key PacificSales19 from a key pair stored in a file, and assigns ownership of the asymmetric key to user Christina. La clé privée est protégée par la clé principale de base de données, qui doit être créée avant la clé asymétrique.The private key is protected by the database master key, which must be created prior to creating the asymmetric key.

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

C.C. Création d'une clé asymétrique à partir d'un fournisseur EKMCreating an asymmetric key from an EKM provider

L’exemple suivant crée la clé asymétrique EKM_askey1 à partir d’une paire de clés stockée dans un fournisseur EKM appelé EKM_Provider1, et une clé sur ce fournisseur appelée key10_user1.The following example creates the asymmetric key EKM_askey1 from a key pair stored in an Extensible Key Management provider called EKM_Provider1, and a key on that provider called 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  

Voir aussiSee Also

ALTER ASYMMETRIC KEY (Transact-SQL)ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)ASYMKEY_ID (Transact-SQL)
Choisir un algorithme de chiffrementChoose an Encryption Algorithm
Hiérarchie de chiffrementEncryption Hierarchy
Gestion de clés extensible à l’aide d’Azure Key Vault (SQL Server)Extensible Key Management Using Azure Key Vault (SQL Server)