CREATE DATABASE ENCRYPTION KEY (Transact-SQL)
Si applica a: SQL Server
Istanza gestita di SQL di Azure
Analytics Platform System (PDW)
Crea una chiave di crittografia usata per crittografare in modo trasparente un database. Per altre informazioni su Transparent Data Encryption (TDE), vedere Transparent Data Encryption (TDE).
Convenzioni relative alla sintassi Transact-SQL
Sintassi
-- Syntax for SQL Server
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER
{
CERTIFICATE Encryptor_Name |
ASYMMETRIC KEY Encryptor_Name
}
[ ; ]
-- Syntax for Parallel Data Warehouse
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
[ ; ]
Nota
Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere Documentazione delle versioni precedenti.
Argomenti
WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Specifica l'algoritmo di crittografia utilizzato per la chiave di crittografia.
Avviso
A partire da SQL Server 2016, 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 uno inferiore.
ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
Specifica il nome del componente di crittografia utilizzato per crittografare la chiave di crittografia del database.
ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
Specifica il nome della chiave asimmetrica utilizzata per crittografare la chiave di crittografia del database. Per crittografare la chiave di crittografia del database con una chiave asimmetrica, è necessario che quest'ultima risieda in un provider EKM (Extensible Key Management).
Osservazioni:
Una chiave di crittografia del database è necessaria prima che un database possa essere crittografato tramite Transparent Data Encryption (TDE). Crittografandolo in modo trasparente, l'intero database viene crittografato a livello di file, in assenza di qualunque modifica particolare del codice. La chiave asimmetrica o il certificato utilizzato per crittografare la chiave di crittografia del database deve essere archiviata nel database di sistema master.
I certificati o le chiavi asimmetriche usati per TDE sono limitati a chiavi private con dimensioni di 3072 bit.
Le istruzioni sulla crittografia del database sono consentite solo sui database utente.
Non è possibile esportare dal database la relativa chiave di crittografia. È disponibile solo per il sistema, per gli utenti con autorizzazioni di debug per il server e per gli utenti che hanno accesso ai certificati utilizzati per crittografare e decrittografare la chiave di crittografia del database.
Non è necessario rigenerare la chiave di crittografia del database in caso di modifica del proprietario del database (dbo).
Una chiave di crittografia del database viene creata automaticamente per un database SQL. Non è necessario creare una chiave usando l'istruzione CREATE DATABASE ENCRYPTION KEY.
Autorizzazioni
Sono necessarie l'autorizzazione CONTROL per il database e l'autorizzazione VIEW DEFINITION per la chiave asimmetrica o il certificato utilizzato per crittografare la chiave di crittografia del database.
Esempi
Per altri esempi in cui viene usata la tecnologia TDE, vedere Transparent Data Encryption (TDE), Abilitare TDE in SQL Server con EKM e Extensible Key Management con Azure Key Vault (SQL Server).
Nell'esempio seguente viene creata una chiave di crittografia del database tramite l'algoritmo AES_256
e tale chiave viene quindi protetta con un certificato denominato MyServerCert
.
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
Vedi anche
Transparent Data Encryption (TDE)
Crittografia di SQL Server
Chiavi di crittografia del database e di SQL Server (Motore di database)
Gerarchia di crittografia
Opzioni di ALTER DATABASE SET (Transact-SQL)
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
DROP DATABASE ENCRYPTION KEY (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)