CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure Analytics Platform System (PDW)

Cria uma chave de criptografia que é usada para criptografar um banco de dados de maneira transparente. Para obter mais informações sobre TDE (Transparent Data Encryption), consulte TDE (Transparent Data Encryption).

Convenções de sintaxe de Transact-SQL

Sintaxe

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

Argumentos

WITH ALGORITHM = { AES_128 | AES_192 | AES_256 | TRIPLE_DES_3KEY }
Especifica o algoritmo de criptografia que é usado para a chave de criptografia.

Aviso

Começando com o SQL Server 2016, todos os algoritmos, exceto AES_128, AES_192 e AES_256, foram preteridos. Para usar algoritmos mais antigos (não recomendado) você deve definir o nível de compatibilidade do banco de dados para 120 ou inferior.

ENCRYPTION BY SERVER CERTIFICATE Encryptor_Name
Especifica o nome do criptografador usado para criptografar a chave de criptografia do banco de dados.

ENCRYPTION BY SERVER ASYMMETRIC KEY Encryptor_Name
Especifica o nome da chave assimétrica usada para criptografar a chave de criptografia do banco de dados. Para criptografar a chave de criptografia de banco de dados com uma chave assimétrica, essa chave deve residir em um provedor de gerenciamento extensível de chaves.

Comentários

Uma chave de criptografia de banco de dados é necessária antes que um banco de dados possa ser criptografado usando TDE (Transparent Data Encryption). Quando for criptografado de maneira transparente, todo o banco de dados será criptografado no nível de arquivo, sem nenhuma modificação especial de código. O certificado ou a chave assimétrica usados para criptografar a chave de criptografia de banco de dados devem estar localizados no banco de dados do sistema mestre.

Os certificados ou as chaves assimétricas usadas para TDE são limitados a um tamanho de chave privada igual a 3.072 bits.

As instruções de criptografia de banco de dados são permitidas apenas em bancos de dados de usuários.

A chave de criptografia de banco de dados não pode ser exportada do banco de dados. Ela está disponível apenas para o sistema, para usuários com permissões de depuração no servidor e para usuários com acesso aos certificados que criptografam e descriptografam a chave de criptografia de banco de dados.

A chave de criptografia de banco de dados não precisa ser gerada novamente quando um dbo (proprietário de banco de dados) é alterado.

Uma chave de criptografia do banco de dados é criada automaticamente para um Banco de Dados SQL. Você não precisa criar uma chave usando a instrução CREATE DATABASE ENCRYPTION KEY.

Permissões

Requer a permissão CONTROL no banco de dados e a permissão VIEW DEFINITION na chave assimétrica ou no certificado usado para criptografar a chave de criptografia do banco de dados.

Exemplos

Para obter exemplos adicionais usando a TDE, veja Transparent Data Encryption (TDE), Habilitar TDE no SQL Server usando EKM e Gerenciamento Extensível de Chaves usando o Azure Key Vault (SQL Server).

O exemplo a seguir cria uma chave de criptografia de banco de dados denominada AES_256 e protege a chave privada com um certificado denominado MyServerCert.

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

Consulte Também

TDE (Transparent Data Encryption)
Criptografia do SQL Server
Chaves de criptografia do SQL Server e banco de dados (Mecanismo de Banco de Dados)
Hierarquia de criptografia
Opções ALTER DATABASE SET (Transact-SQL)
ALTER DATABASE ENCRYPTION KEY (Transact-SQL)
DROP DATABASE ENCRYPTION KEY (Transact-SQL)
sys.dm_database_encryption_keys (Transact-SQL)