CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure Piattaforma di strumenti analitici (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   
[ ; ]  

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)