CREATE ASYMMETRIC KEY (Transact-SQL)
Viene creata una chiave asimmetrica nel database.
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'
Viene specificato un file di assembly da cui caricare la chiave pubblica. Limitato a 260 caratteri mediante MAX_PATH dell'API Windows.ASSEMBLY Assembly_Name
Viene specificato 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
Vedere anche