CREATE ASYMMETRIC KEY (Transact-SQL)
Si applica a: SQL Server database SQL di Azure Istanza gestita di SQL di Azure database SQL di Azure Synapse Analytics in Microsoft Fabric
Crea una chiave asimmetrica nel database.
Questa funzionalità non è compatibile con l'esportazione del database mediante Data Tier Application Framework (DACFx). Prima dell'esportazione, è necessario eliminare tutte le chiavi asimmetriche.
Convenzioni relative alla sintassi Transact-SQL
Nota
Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
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_4096 | RSA_3072 | RSA_2048 | RSA_1024 | RSA_512 }
<encrypting_mechanism> ::=
PASSWORD = 'password'
Argomenti
asym_key_name
Nome della chiave asimmetrica nel database. I nomi di chiave asimmetrica devono essere conformi alle regole per gli identificatori e devono essere univoci all'interno del database.
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.
FROM asym_key_source
Specifica l'origine da cui caricare la coppia di chiavi asimmetriche.
FILE = 'path_to_strong-name_file'
Specifica il percorso di un file con nome sicuro da cui caricare la coppia di chiavi. Limitato a 260 caratteri da MAX_PATH dall'API Windows.
Nota
Questa opzione non è disponibile in un database indipendente.
EXECUTABLE FILE = 'path_to_executable_file'
Specifica il percorso di un file di assembly da cui caricare la chiave pubblica. Limitato a 260 caratteri da MAX_PATH dall'API Windows.
Nota
Questa opzione non è disponibile in un database indipendente.
ASSEMBLY assembly_name
Specifica il nome di un assembly firmato già caricato nel database da cui caricare la chiave pubblica.
PROVIDER provider_name
Specifica il nome di un provider EKM (Extensible Key Management). È necessario innanzitutto definire il provider utilizzando l'istruzione CREATE PROVIDER. Per altre informazioni sulla gestione delle chiavi esterne, vedere Extensible Key Management (EKM).
ALGORITHM = <algorithm>
Possono essere specificati cinque algoritmi: RSA_4096, RSA_3072, RSA_2048, RSA_1024 e RSA_512.
RSA_1024 e RSA_512 sono deprecati. Per usare RSA_1024 o RSA_512 (sconsigliato), è necessario impostare il database sul livello di compatibilità del database 120 o su uno inferiore.
PROVIDER_KEY_NAME = 'key_name_in_provider'
Specifica il nome della chiave dal provider esterno.
CREATION_DISPOSITION = CREATE_NEW
Crea una nuova chiave nel dispositivo EKM. È necessario usare 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. È necessario usare PROV_KEY_NAME per specificare il nome della chiave nel dispositivo. Se CREATION_DISPOSITION = OPEN_EXISTING non è specificato, l'impostazione predefinita è CREATE_NEW.
ENCRYPTION BY 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 requisiti per i criteri password di Windows del computer che esegue 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 o da un file di DLL.
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.
La chiave privata può avere una lunghezza di 512, 1024 o 2048 bit.
Le chiavi asimmetriche usate per TDE sono limitate a chiavi private con dimensioni di 3072 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 avere chiavi asimmetriche. I gruppi e i ruoli non possono disporre di chiavi asimmetriche.
Esempi
R. 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
L'esempio seguente crea la chiave asimmetrica PacificSales19
da una coppia di chiavi archiviata in un file e assegna la proprietà della chiave asimmetrica all'utente Christina
. La chiave privata è protetta dalla chiave master del database, che deve essere creata prima della chiave asimmetrica.
CREATE ASYMMETRIC KEY PacificSales19
AUTHORIZATION Christina
FROM FILE = 'c:\PacSales\Managers\ChristinaCerts.tmp';
GO
C. Creazione di una chiave asimmetrica da un provider EKM
L'esempio seguente crea la chiave asimmetrica EKM_askey1
da una coppia di chiavi archiviata in un provider EKM denominato EKM_Provider1
. Crea anche una chiave in tale provider denominata 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
Vedi anche
ALTER ASYMMETRIC KEY (Transact-SQL)
DROP ASYMMETRIC KEY (Transact-SQL)
ASYMKEYPROPERTY (Transact-SQL)
ASYMKEY_ID (Transact-SQL)
Scelta di un algoritmo di crittografia
Gerarchia di crittografia
Extensible Key Management con Azure Key Vault (SQL Server)