Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stessoQuesto browser non è più supportato.
Esegui l'aggiornamento a Microsoft Edge per sfruttare i vantaggi di funzionalità più recenti, aggiornamenti della sicurezza e supporto tecnico.
Si applica a: SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
database SQL di Azure Synapse Analytics
in Microsoft Fabric
Genera una chiave simmetrica e ne specifica le proprietà in SQL Server.
Questa funzionalità non è compatibile con l'esportazione del database mediante Data Tier Application Framework (DACFx). Prima dell'esportazione, è necessario eliminare tutte le chiavi simmetriche.
Convenzioni relative alla sintassi Transact-SQL
Nota
Questa sintassi non è supportata da pool SQL serverless in Azure Synapse Analytics.
CREATE SYMMETRIC KEY key_name
[ AUTHORIZATION owner_name ]
[ FROM PROVIDER provider_name ]
WITH
[
<key_options> [ , ... n ]
| ENCRYPTION BY <encrypting_mechanism> [ , ... n ]
]
<key_options> ::=
KEY_SOURCE = 'pass_phrase'
| ALGORITHM = <algorithm>
| IDENTITY_VALUE = 'identity_phrase'
| PROVIDER_KEY_NAME = 'key_name_in_provider'
| CREATION_DISPOSITION = { CREATE_NEW | OPEN_EXISTING }
<algorithm> ::=
DES | TRIPLE_DES | TRIPLE_DES_3KEY | RC2 | RC4 | RC4_128
| DESX | AES_128 | AES_192 | AES_256
<encrypting_mechanism> ::=
CERTIFICATE certificate_name
| PASSWORD = 'password'
| SYMMETRIC KEY symmetric_key_name
| ASYMMETRIC KEY asym_key_name
Specifica il nome univoco con il quale la chiave simmetrica è nota all'interno del database. Parametro obbligatorio. Le chiavi temporanee vengono designate quando il key_name inizia con un segno di numero (#
). Ad esempio: #temporaryKey900007
. Non è possibile creare una chiave simmetrica con un nome che inizia con più di un #
oggetto . Non è possibile creare una chiave simmetrica temporanea usando un provider EKM.
Specifica il nome dell'utente del database o del ruolo applicazione proprietario di questa chiave.
Specifica un nome e un provider EKM. La chiave non viene esportata dal dispositivo EKM. Il provider deve essere definito per primo usando l'istruzione CREATE PROVIDER
. Per altre informazioni sulla creazione di provider di chiavi esterne, vedere Extensible Key Management (EKM).
Nota
Questa opzione non è disponibile in un database indipendente.
Specifica una passphrase da cui derivare la chiave.
Specifica una frase identificativa da cui generare un GUID per contrassegnare i dati crittografati con una chiave temporanea.
Specifica il nome a cui viene fatto riferimento nel provider EKM.
Nota
Questa opzione non è disponibile in un database indipendente.
Crea o esegue il mapping di una chiave simmetrica a un dispositivo Extensible Key Management.
CREATE_NEW
Crea una nuova chiave nel dispositivo EKM. Se nel dispositivo esiste già una chiave, l'istruzione ha esito negativo con un errore.
OPEN_EXISTING
Definisce il mapping di una chiave simmetrica di SQL Server a una chiave EKM esistente. Se CREATION_DISPOSITION = OPEN_EXISTING
non viene specificato, l'impostazione predefinita è CREATE_NEW
.
Specifica il nome del certificato utilizzato per crittografare la chiave simmetrica. Il certificato deve esistere nel database corrente.
Specifica una password dalla quale derivare una chiave TRIPLE_DES con cui proteggere la chiave simmetrica. password deve soddisfare i requisiti per i criteri password di Windows del computer che esegue l'istanza di SQL Server. Usare sempre password complesse.
Specifica una chiave simmetrica usata per crittografare la chiave creata. La chiave specificata deve esistere nel database ed essere aperta.
Specifica una chiave asimmetrica usata per crittografare la chiave creata. Tale chiave asimmetrica deve esistere nel database.
Specifica l'algoritmo di crittografia.
Avviso
A partire da SQL Server 2016 (13.x), tutti gli algoritmi diversi da AES_128, AES_192 e AES_256 sono deprecati. Per usare algoritmi meno recenti (sconsigliato), è necessario impostare il database sul livello di compatibilità del database 120 o su un livello inferiore.
Quando viene creata una chiave simmetrica, la chiave simmetrica deve essere crittografata usando almeno una delle opzioni seguenti:
Una chiave può essere crittografata con più elementi di ogni tipo, ovvero una singola chiave simmetrica può essere crittografata contemporaneamente con più certificati, password, chiavi simmetriche e chiavi asimmetriche.
Attenzione
Se si crittografa una chiave simmetrica con una password anziché con un certificato o un'altra chiave, la password viene crittografata con l'algoritmo di crittografia TRIPLE DES. Per questo motivo, le chiavi create con un algoritmo di crittografia avanzato, come AES, vengono a loro volta protette con un algoritmo meno avanzato.
È possibile utilizzare la password facoltativa per crittografare la chiave simmetrica prima di distribuirla a più utenti.
Le chiavi temporanee sono di proprietà dell'utente che le crea e sono valide solo per la sessione corrente.
IDENTITY_VALUE
genera un GUID con cui contrassegnare i dati crittografati con la nuova chiave simmetrica. Tale contrassegno può essere utilizzato per eseguire il mapping delle chiavi ai dati crittografati. Il GUID generato da una frase specifica è sempre uguale. Dopo che una frase è stata usata per generare un GUID, la frase non può essere riutilizzata finché nel database è presente almeno una chiave simmetrica che usa attivamente la frase. IDENTITY_VALUE
è una clausola facoltativa; Tuttavia, è consigliabile usarlo quando si archiviano i dati crittografati con una chiave temporanea.
Non esiste alcun algoritmo di crittografia predefinito.
Importante
Non è consigliabile usare le crittografie di flusso RC4 e RC4_128 per proteggere i dati sensibili. SQL Server non codifica ulteriormente la crittografia eseguita con tali chiavi.
Le informazioni sulle chiavi simmetriche sono visibili nella vista del catalogo sys.symmetric_keys.
Le chiavi simmetriche non possono essere crittografate da chiavi simmetriche create dal provider di crittografia.
L'uso ripetuto dello stesso RC4 o RC4_128 KEY_GUID su blocchi di dati diversi comporta la stessa chiave RC4 perché SQL Server non fornisce automaticamente un salt. L'uso ripetuto della stessa chiave RC4 è un errore noto che causa una crittografia molto debole. Per questo motivo le parole chiave RC4 e RC4_128 sono deprecate. Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata.
Avviso
L'algoritmo RC4 è supportato solo per motivi di compatibilità con le versioni precedenti. È possibile crittografare il nuovo materiale usando RC4 o RC4_128 solo quando il livello di compatibilità del database è 90 o 100. (Non consigliato.) Usare un algoritmo più recente, ad esempio uno degli algoritmi AES. In SQL Server il materiale crittografato usando RC4 o RC4_128 può essere decrittografato in qualsiasi livello di compatibilità.
È richiesta l'autorizzazione ALTER ANY SYMMETRIC KEY per il database. Se AUTHORIZATION
è specificato, è richiesta l'autorizzazione IMPERSONATE per l'utente del database o l'autorizzazione ALTER per il ruolo applicazione. Se la crittografia viene applicata con un certificato o una chiave asimmetrica, è richiesta l'autorizzazione VIEW DEFINITION per il certificato o la chiave asimmetrica. Solo gli account di accesso di Windows e di SQL Server e i ruoli applicazione possono avere chiavi simmetriche. I gruppi e i ruoli non possono disporre di chiavi simmetriche.
Nell'esempio seguente viene creata una chiave simmetrica denominata JanainaKey09
con l'algoritmo AES 256
e la nuova chiave viene quindi crittografata con il certificato Shipping04
.
CREATE SYMMETRIC KEY JanainaKey09
WITH ALGORITHM = AES_256
ENCRYPTION BY CERTIFICATE Shipping04;
GO
Nell'esempio seguente viene creata una chiave simmetrica temporanea chiamata #MarketingXXV
dalla passphrase: The square of the hypotenuse is equal to the sum of the squares of the sides
. Alla chiave viene associato un GUID generato dalla stringa Pythagoras
e la chiave viene poi crittografata con il certificato Marketing25
.
CREATE SYMMETRIC KEY #MarketingXXV
WITH ALGORITHM = AES_128,
KEY_SOURCE
= 'The square of the hypotenuse is equal to the sum of the squares of the sides',
IDENTITY_VALUE = 'Pythagoras'
ENCRYPTION BY CERTIFICATE Marketing25;
GO
Nell'esempio seguente viene creata la chiave simmetrica denominata MySymKey
utilizzando un provider denominato MyEKMProvider
e il nome chiave KeyForSensitiveData
. Si assegna l'autorizzazione a User1
presupponendo che l'amministratore di sistema abbia già registrato il provider denominato MyEKMProvider
in SQL Server.
CREATE SYMMETRIC KEY MySymKey
AUTHORIZATION User1
FROM PROVIDER EKMProvider
WITH
PROVIDER_KEY_NAME='KeyForSensitiveData',
CREATION_DISPOSITION=OPEN_EXISTING;
GO
Eventi
31 mar, 23 - 2 apr, 23
Il più grande evento di apprendimento di SQL, Infrastruttura e Power BI. 31 marzo - 2 aprile. Usare il codice FABINSIDER per salvare $400.
Iscriviti oggi stesso