CREATE ASYMMETRIC KEY (Transact-SQL)

Permet de créer une clé asymétrique dans la base de données.

Icône Lien de rubriqueConventions de syntaxe Transact-SQL

Syntaxe

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_512 | RSA_1024 | RSA_2048 } 

<encrypting_mechanism> ::=
    PASSWORD = 'password'

Arguments

  • FROM Asym_Key_Source
    Spécifie la source à partir de laquelle la paire de clés asymétriques doit être chargée.

  • AUTHORIZATION database_principal_name
    Spécifie le propriétaire de la clé asymétrique. Le propriétaire ne peut pas être un rôle ni un groupe. Si cette option n'est pas spécifiée, le propriétaire sera l'utilisateur en cours.

  • 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.

  • EXECUTABLE FILE ='path_to_executable_file'
    Spécifie un fichier d'assembly à partir duquel il convient de charger la clé publique. Limité à 260 caractères par MAX_PATH dans l'API Windows.

  • ASSEMBLY Assembly_Name
    Spécifie le nom d'un assembly à partir duquel il convient de charger la clé publique.

  • ENCRYPTION BY <key_name_in_provider>
    Spécifie la façon dont la clé est chiffrée. Un certificat, un mot de passe ou une clé asymétrique peut être utilisé.

  • KEY_NAME ='key_name_in_provider'
    Spécifie le nom de la clé à partir du fournisseur externe. Pour plus d'informations sur la gestion de clés externes, consultez Fonctionnement de la gestion de clés extensible (EKM).

  • CREATION_DISPOSITION = CREATE_NEW
    Crée une clé sur le périphérique EKM (Extensible Key Management). La clause PROV_KEY_NAME doit être utilisée pour spécifier le nom de la clé sur le périphérique. Si une clé existe déjà sur le périphérique l'instruction échoue et génère une erreur.

  • CREATION_DISPOSITION = OPEN_EXISTING
    Mappe une clé asymétrique SQL Server à une clé EKM existante. La clause PROV_KEY_NAME doit être utilisée pour spécifier le nom de la clé sur le périphérique. Si CREATION_DISPOSITION = OPEN_EXISTING n'est pas spécifié, la valeur par défaut est CREATE_NEW.

  • PASSWORD = 'password'
    Spécifie le mot de passe utilisé pour chiffrer la clé privée. 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. Le password comporte au maximum 128 caractères. Le 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 Server.

Notes

Une clé asymétrique est une entité sécurisable au niveau base de données. Dans sa forme par défaut, cette entité contient à la fois une clé publique et une clé privée. Lorsqu'elle est exécutée sans la clause FROM, l'instruction CREATE ASYMMETRIC KEY génère une nouvelle paire de clés. Lorsqu'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.

Par défaut, la clé privée est protégée par la clé principale de base de données. 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. Si une clé principale de base de données existe, le mot de passe est facultatif.

La clé privée peut compter 512, 1 024 ou 2 048 bits.

Autorisations

Requiert l'autorisation CREATE ASYMMETRIC KEY sur la base de données. 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. Les connexions Windows, les connexions SQL Server et les rôles d'application sont les seuls à pouvoir posséder des clés asymétriques. Les groupes et les rôles ne peuvent pas posséder de clés asymétriques.

Exemples

A. Création d'une clé asymétrique

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.

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

B. Création d'une clé asymétrique à partir d'un fichier, octroi d'une autorisation à un utilisateur

Dans l'exemple ci-dessous, la clé asymétrique PacificSales19 est créée à partir d'une paire de clés stockées dans un fichier, puis l'utilisateur Christina est autorisé à utiliser la clé asymétrique.

CREATE ASYMMETRIC KEY PacificSales19 AUTHORIZATION Christina 
    FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp'  
    ENCRYPTION BY PASSWORD = '<enterStrongPasswordHere>';
GO

C. Création d'une clé asymétrique à partir d'un fournisseur EKM

L'exemple suivant crée le clé asymétrique EKM_askey1 à partir d'une paire de clés stockées dans un fichier. La clé est ensuite chiffrée à l'aide d'un fournisseur EKM, appelé EKMProvider1, et d'une clé sur ce fournisseur appelée key10_user1.

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