CREATE ASYMMETRIC KEY (Transact-SQL)

Crea una chiave asimmetrica nel database.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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' 

Argomenti

  • FROM Asym_Key_Source
    Specifica l'origine da cui caricare la coppia di chiavi asimmetriche.

  • AUTHORIZATION database_principal_name
    Specifica il proprietario della chiave asimmetrica. Il proprietario non può essere un ruolo o un gruppo. Se l'opzione viene omessa, il proprietario sarà l'utente corrente.

  • FILE = 'path_to_strong-name_file'
    Specifica il percorso di un file con nome sicuro da cui caricare la coppia di chiavi.

  • EXECUTABLE FILE = 'path_to_executable_file'
    Specifica un file di assembly da cui caricare la chiave pubblica.

  • ASSEMBLY Assembly_Name
    Specifica il nome di un assembly da cui caricare la chiave pubblica.

  • ENCRYPTION BY <key_name_in_provider>
    Specifica la crittografia utilizzata per la chiave e può essere un certificato, una password o una chiave asimmetrica.

  • KEY_NAME = 'key_name_in_provider'
    Specifica il nome della chiave dal provider esterno. Per ulteriori informazioni sull'EKM, vedere Informazioni su Extensible Key Management (EKM).

  • CREATION_DISPOSITION = CREATE_NEW
    Crea una nuova chiave nel dispositivo EKM. Utilizzare PROV_KEY_NAME per specificare il nome della chiave nel dispositivo. Se nel dispositivo esiste già una chiave, l'istruzione genererà un errore.

  • CREATION_DISPOSITION = OPEN_EXISTING
    Definisce il mapping di una chiave asimmetrica di SQL Server a una chiave EKM esistente. Utilizzare PROV_KEY_NAME per specificare il nome della chiave nel dispositivo. Se CREATION_DISPOSITION = OPEN_EXISTING non è specificato, l'impostazione predefinita è CREATE_NEW.

  • PASSWORD = 'password'
    Specifica la password con cui crittografare la chiave privata. Se questa clausola è assente, la chiave privata verrà crittografata con la chiave master del database. password ha un massimo di 128 caratteri. password deve soddisfare i criteri password Windows del computer che sta eseguendo l'istanza di SQL Server.

Osservazioni

Una chiave asimmetrica è un'entità a protezione diretta a livello del database. Nella forma predefinita, questa entità contiene sia una chiave pubblica che una chiave privata. Se eseguita senza la clausola FROM, l'istruzione CREATE ASYMMETRIC KEY genera una nuova coppia di chiavi. Se eseguita con la clausola FROM, l'istruzione CREATE ASYMMETRIC KEY importa una coppia di chiavi da un file o importa una chiave pubblica da un assembly.

Per impostazione predefinita, la chiave privata è protetta dalla chiave master del database. Se non esiste una chiave master del database, è necessario proteggere la chiave privata con una password. In presenza di una chiave master del database, la password è facoltativa.

La chiave privata può avere una lunghezza di 512, 1024 o 2048 bit.

Autorizzazioni

È richiesta l'autorizzazione CREATE ASYMMETRIC KEY per il database. Se si specifica la clausola AUTHORIZATION, è richiesta l'autorizzazione IMPERSONATE per l'entità di database o l'autorizzazione ALTER per il ruolo applicazione. Solo gli account di accesso di Windows e di SQL Server e i ruoli applicazione possono disporre di chiavi asimmetriche. I gruppi e i ruoli non possono disporre di chiavi asimmetriche.

Esempi

A. Creazione di una chiave asimmetrica

Nell'esempio seguente viene creata una chiave asimmetrica denominata PacificSales09 tramite l'algoritmo RSA_2048 e la chiave privata viene protetta con una password.

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

B. Creazione di una chiave asimmetrica da un file e concessione dell'autorizzazione a un utente

Nell'esempio seguente viene creata la chiave asimmetrica PacificSales19 da una coppia di chiavi memorizzate in un file; l'utente Christina viene quindi autorizzato all'utilizzo della chiave asimmetrica.

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

C. Creazione di una chiave asimmetrica da un provider EKM

L'esempio seguente illustra come creare la chiave asimmetrica EKM_askey1 da una coppia di chiavi memorizzate in un file. La crittografia avviene utilizzando un provider EKM denominato EKMProvider1 e una chiave nel provider denominata 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

Cronologia modifiche

Aggiornamento del contenuto

Sono state rimosse le opzioni CERTIFICATE e ASYMMETRIC KEY da <encrypting_mechanism> per correggere la sintassi. L'unica opzione valida è PASSWORD.