Sdílet prostřednictvím


CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Applies to:SQL ServerAzure SQL Managed InstanceAnalytics Platform System (PDW)

Vytvoří šifrovací klíč pro transparentní šifrování databáze. Další informace o transparent data encryption (TDE) najdete v tématu Transparent Data Encryption (TDE).

Transact-SQL konvence syntaxe

Syntaxe

-- 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   
[ ; ]  

Argumenty

WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Určuje šifrovací algoritmus šifrovacího klíče.

Výstraha

Počínaje SQL Server 2016 jsou všechny algoritmy kromě AES_128, AES_192 a AES_256 zastaralé. Pokud chcete použít starší algoritmy (nedoporučuje se), musíte databázi nastavit na úroveň kompatibility databáze 120 nebo nižší.

ŠIFROVÁNÍ PODLE CERTIFIKÁTU SERVERU Encryptor_Name
Určuje název šifrovacího klíče databáze, který se používá k šifrování šifrovacího klíče databáze.

ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name Určuje název asymetrického klíče použitého k šifrování šifrovacího klíče databáze. Pokud chcete šifrovací klíč databáze zašifrovat asymetrickým klíčem, musí se asymetrický klíč nacházet na rozšiřitelném poskytovateli správy klíčů.

Poznámky

Šifrovací klíč databáze se vyžaduje před šifrováním databáze pomocí transparentního šifrování dat (TDE). Pokud je databáze transparentně zašifrovaná, celá databáze se zašifruje na úrovni souboru bez jakýchkoli zvláštních úprav kódu. Certifikát nebo asymetrický klíč, který šifruje šifrovací klíč databáze, musí být umístěn v master systémové databázi.

Certifikáty nebo asymetrického klíče používané pro transparentní šifrování dat jsou omezené na velikost privátního klíče 3072 bitů.

Příkazy pro šifrování databáze jsou povolené pouze u uživatelských databází.

Šifrovací klíč databáze nelze z databáze exportovat. Je k dispozici pouze pro systém, pro uživatele, kteří mají na serveru oprávnění k ladění, a pro uživatele, kteří mají přístup k certifikátům, které šifrují a dešifrují šifrovací klíč databáze.

Šifrovací klíč databáze se při změně vlastníka databáze (dbo) nemusí znovu vygenerovat.

Pro databázi SQL Database se automaticky vytvoří šifrovací klíč databáze. Pomocí příkazu CREATE DATABASE ENCRYPTION KEY nemusíte vytvářet klíč.

Povolení

Vyžaduje oprávnění CONTROL k databázi a oprávnění VIEW DEFINITION pro certifikát nebo asymetrický klíč, který se používá k šifrování šifrovacího klíče databáze.

Příklady

Další příklady použití transparentního šifrování dat najdete v tématech Transparent Data Encryption (TDE), Enable TDE na SQL Server pomocí EKM a Extensible Správa klíčů pomocí Azure Key Vault (SQL Server).

A. Vytvoření šifrovacího klíče databáze

Následující příklad vytvoří šifrovací klíč databáze pomocí AES_256 algoritmu a chrání privátní klíč pomocí certifikátu s názvem MyServerCert.

USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO

B. Obnovení databáze šifrované transparentním šifrováním dat do jiné instance

Pokud chcete obnovit databázi zašifrovanou transparentním šifrováním dat do jiné instance SQL Server, musíte nejprve importovat certifikát, který chrání šifrovací klíč databáze. Zálohujte certifikát a jeho privátní klíč ze zdrojového serveru a pak před obnovením databáze vytvořte certifikát v cílové instanci.

Na zdrojovém serveru zálohujte certifikát:

-- 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

Na cílovém serveru vytvořte certifikát ze záložních souborů a pak obnovte databázi:

-- 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

Důležité

Certifikát musí mít stejný název a musí být vytvořen ze stejných záložních souborů. Pokud se certifikát neshoduje, obnovení selže s chybou šifrovacího klíče.