Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Applies to:SQL Server
Istanza gestita di SQL di Azure
Analytics Platform System (PDW)
Crea una chiave di crittografia per crittografare in modo trasparente un database. Per altre informazioni su transparent data encryption (TDE), vedere Transparent Data Encryption (TDE).
convenzioni di 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 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 usata per crittografare la chiave di crittografia del database. Per crittografare la chiave di crittografia del database con una chiave asimmetrica, la chiave asimmetrica deve risiedere in un provider di gestione delle chiavi estendibile.
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. Il certificato o la chiave asimmetrica che crittografa la chiave di crittografia del database deve trovarsi nel database di sistema.
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.
La chiave di crittografia del database non può essere esportata dal database. È disponibile solo per il sistema, per gli utenti che dispongono delle autorizzazioni di debug sul server e per gli utenti che hanno accesso ai certificati che crittografano e decrittografano la chiave di crittografia del database.
La chiave di crittografia del database non deve essere rigenerata quando viene modificato un 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 .
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 relativi all'uso di TDE, vedere Transparent Data Encryption (TDE), Enable TDE in SQL Server Using EKM e Extensible Key Management Using Azure Key Vault (SQL Server).
R. Creare una chiave di crittografia del database
Nell'esempio seguente viene creata una chiave di crittografia del database tramite l'algoritmo e tale chiave viene quindi protetta con un certificato denominato .
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
B. Ripristinare un database crittografato TDE in un'istanza diversa
Per ripristinare un database crittografato TDE in un'istanza di SQL Server diversa, è necessario prima importare il certificato che protegge la chiave di crittografia del database. Eseguire il backup del certificato e della relativa chiave privata dal server di origine, quindi creare il certificato nell'istanza di destinazione prima di ripristinare il database.
Nel server di origine eseguire il backup del certificato:
-- On the SOURCE server
USE master;
GO
BACKUP CERTIFICATE MyServerCert
TO FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Backup\MyServerCert.pvk',
ENCRYPTION BY PASSWORD = '<strong_password>'
);
GO
Nel server di destinazione creare il certificato dai file di backup e quindi ripristinare il database:
-- On the TARGET server
USE master;
GO
CREATE CERTIFICATE MyServerCert
FROM FILE = 'C:\Backup\MyServerCert.cer'
WITH PRIVATE KEY (
FILE = 'C:\Backup\MyServerCert.pvk',
DECRYPTION BY PASSWORD = '<strong_password>'
);
GO
-- Now you can restore the TDE-encrypted database
RESTORE DATABASE AdventureWorks2022
FROM DISK = 'C:\Backup\AdventureWorks2022.bak'
WITH MOVE 'AdventureWorks2022_Data' TO 'D:\Data\AdventureWorks2022.mdf',
MOVE 'AdventureWorks2022_Log' TO 'D:\Data\AdventureWorks2022.ldf';
GO
Importante
Il certificato deve avere lo stesso nome e essere creato dagli stessi file di backup. Se il certificato non corrisponde, il ripristino non riesce con un errore di chiave di crittografia.
Contenuti correlati
- Transparent Data Encryption (TDE)
- crittografia SQL Server
- SQL Server e chiavi di crittografia del database (motore di database)
- Gerarchia di crittografia
- ALTER DATABASE SET Options (Transact-SQL)
- ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
- DROP DATABASE ENCRYPTION KEY (Transact-SQL)
- sys.dm_database_encryption_keys (Transact-SQL)
- BACKUP CERTIFICATE (Transact-SQL)
- CREA CERTIFICATO (Transact-SQL)