Compreendendo a TDE (Criptografia de Dados Transparente)

Você pode tomar várias precauções para ajudar a proteger o banco de dados como, por exemplo, projetando um sistema seguro, criptografando ativos confidenciais e criando um firewall em torno dos servidores de banco de dados. No entanto, em um cenário onde a mídia física (como unidades ou fitas de backup) é roubada, um terceiro mal-intencionado pode restaurar ou anexar o banco de dados e navegar pelos dados. Uma solução é criptografar dados confidenciais no banco de dados e proteger as chaves usadas para criptografar os dados com um certificado. Isso impede que alguém sem as chaves use os dados, mas esse tipo de proteção deve ser planejado antecipadamente.

A criptografia transparente de dados (TDE) executa criptografia de E/S em tempo real e a descriptografia de dados e arquivos de log. A criptografia usa uma DEK (chave de criptografia do banco de dados), que é armazenada no registro de inicialização do banco de dados para disponibilidade durante a recuperação. A DEK é uma chave simétrica protegida por um certificado armazenado no banco de dados mestre do servidor ou uma chave assimétrica protegida por um módulo EKM. A TDE protege os dados “em repouso”, ou seja, os dados e arquivos de log. Fornece a capacidade de se adequar a muitas leis, regulamentos e diretrizes estabelecidos em vários setores. Isso permite que os desenvolvedores de software criptografem dados usando algoritmos de criptografia AES e 3DES, sem alterar os aplicativos existentes.

Observação importanteImportante

A TDE não fornece criptografia em canais de comunicação. Para obter mais informações sobre como criptografar dados em canais de comunicação, consulte Criptografando conexões com o SQL Server.

Depois de protegido, o banco de dados pode ser restaurado usando o certificado correto. Para obter mais informações sobre certificados, consulte Certificados e chaves assimétricas do SQL Server.

ObservaçãoObservação

Ao habilitar a TDE, você deve imediatamente fazer o backup do certificado e da chave privada associada ao certificado. Se em algum momento o certificado ficar indisponível ou caso você deseje restaurar ou anexar o banco de dados a outro servidor, você precisará dos backups do certificado e da chave privada ou não será possível abrir o banco de dados. O certificado de criptografia ou assimétrico deve ser retido até mesmo se o TDE já não estiver habilitado no banco de dados. Ainda que o banco de dados não esteja criptografado, a chave de criptografia do banco de pode ser retida no banco de dados e pode ser necessária para acessar algumas operações. Um certificado que excedeu sua data de expiração ainda pode ser usado para criptografar e descriptografar dados com a TDE.

A criptografia do arquivo de banco de dados é executada no nível de página. As páginas em um banco de dados criptografado são criptografadas antes de serem gravadas no disco e descriptografadas quando lidas na memória. A TDE não aumenta o tamanho do banco de dados criptografado. Para obter mais informações sobre páginas de bancos de dados, consulte Compreendendo páginas e extensões.

A ilustração a seguir mostra a arquitetura de criptografia da TDE:

Exibe a hierarquia descrita no tópico.

Usando criptografia de dados transparente

Para usar a TDE, execute estes procedimentos.

  • Crie uma chave mestra

  • Crie ou obtenha um certificado protegido pela chave mestra

  • Crie uma chave de criptografia de banco de dados e proteja-a com o certificado

  • Defina o banco de dados para usar criptografia

O exemplo a seguir ilustra criptografia e descriptografia do banco de dados AdventureWorks2008R2 usando um certificado instalado no servidor nomeado MyServerCert.

USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<UseStrongPasswordHere>';
go
CREATE CERTIFICATE MyServerCert WITH SUBJECT = 'My DEK Certificate';
go
USE AdventureWorks2008R2;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2008R2
SET ENCRYPTION ON;
GO

As operações de criptografia e descriptografia são agendadas em threads em segundo plano pelo SQL Server. É possível exibir o status dessas operações usando exibições do catálogo e de gerenciamento dinâmico na lista mostrada posteriormente neste tópico.

Observação sobre cuidadosCuidado

Os arquivos de backup de bancos de dados com TDE habilitada também são criptografados usando a chave de criptografia do banco de dados. Como resultado, quando você restaura esses backups, o certificado que protege a chave de criptografia do banco de dados deve estar disponível. Isso significa que, além de fazer backup do banco de dados, você deve assegurar que os backups dos certificados de servidor sejam mantidos para evitar perda de dados. Se o certificado não estiver mais disponível, haverá perda de dados. Para obter mais informações, consulte Certificados e chaves assimétricas do SQL Server.

Comandos e funções

Os certificados da TDE devem ser criptografados pela chave mestra do banco de dados para serem aceitos pelas instruções a seguir. Se forem criptografados somente pela senha, serão rejeitados pelas instruções como criptografadores.

Observação importanteImportante

A alteração de certificados para que sejam protegidos por senha após usarem a TDE fará com que o banco de dados se torne inacessível após uma reinicialização.

A tabela a seguir fornece links e explicações de comandos e funções da TDE.

Comando ou função

Finalidade

CREATE DATABASE ENCRYPTION KEY (Transact-SQL)

Cria uma chave usada para criptografar um banco de dados.

ALTER DATABASE ENCRYPTION KEY (Transact-SQL)

Altera a chave usada para criptografar um banco de dados.

DROP DATABASE ENCRYPTION KEY (Transact-SQL)

Remove a chave usada para criptografar um banco de dados.

Opções ALTER DATABASE SET (Transact-SQL)

Explica a opção ALTER DATABASE usada para habilitar a TDE.

Exibições do catálogo e exibições de gerenciamento dinâmico

A tabela a seguir mostra exibições do catálogo de TDE e exibições de gerenciamento dinâmico.

Exibição do catálogo ou exibição de gerenciamento dinâmico

Finalidade

sys.databases (Transact-SQL)

Exibição do catálogo que exibe informações do banco de dados.

sys.certificates (Transact-SQL)

Exibição do catálogo que mostra os certificados em um banco de dados.

sys.dm_database_encryption_keys (Transact-SQL)

Exibição de gerenciamento dinâmico que fornece informações sobre as chaves de criptografia usadas em um banco de dados e o estado da criptografia de um banco de dados.

Permissões

Cada recurso e comando da TDE possui requisitos individuais de permissões, descritos nas tabelas anteriores.

A exibição de metadados envolvidos com TDE requer a permissão VIEW DEFINITION no certificado. Para obter mais informações, consulte Permissão VIEW DEFINITION.

Considerações

Enquanto a verificação de recriptografia de uma operação de criptografia de banco de dados estiver em andamento, as operações de manutenção do banco de dados permanecerão desabilitadas. Você poderá usar a configuração do modo de usuário único para o banco de dados para executar a operação de manutenção. Para obter mais informações, consulte Como definir um banco de dados como modo de usuário único (SQL Server Management Studio).

É possível localizar o estado da criptografia do banco de dados usando a exibição de gerenciamento dinâmico sys.dm_database_encryption_keys. Para obter mais informações, consulte a seção "Exibições do catálogo e exibições de gerenciamento dinâmico”no início deste tópico).

Na TDE, todos os arquivos e os grupos de arquivos do banco de dados são criptografados. Se algum grupo de arquivos em um banco de dados estiver marcado como READ ONLY, haverá falha na operação de criptografia de banco de dados.

Se um banco de dados estiver sendo usado no espelhamento de banco de dados ou envio de logs, ambos os bancos de dados serão criptografados. As transações de logs serão criptografadas quando enviadas entre eles.

Observação importanteImportante

Qualquer índice de texto completo novo será criptografado quando um banco de dados for definido para criptografia. Índices de texto completo criados previamente serão importados durante atualizações e ficarão na TDE quando os dados forem carregados no SQL Server. Habilitar um índice de texto completo em uma coluna pode fazer com que os dados da coluna sejam gravados em texto sem-formatação no disco durante uma varredura de índice de texto completo. Recomendamos que você não crie um índice de texto completo em dados criptografados sensíveis.

A compactação de dados criptografados é significativamente menor do que a compactação de dados equivalentes não criptografados. Se a TDE for usada para criptografar um banco de dados, a compactação de backup não poderá compactar o armazenamento de backup de forma significativa. Portanto, não é recomendável usar a TDE com a compactação de backup.

Restrições

As operações seguintes não são permitidas durante criptografia de banco de dados inicial, alteração de chave ou descriptografia de banco de dados:

  • Descartando um arquivo de um grupo de arquivos no banco de dados

  • Descartando o banco de dados

  • Colocando o banco de dados offline

  • Desanexando um banco de dados

  • Fazendo a transição de um banco de dados ou grupo de arquivos para um estado READ ONLY

As operações a seguir não são permitidas durante a execução das instruções CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY ou ALTER DATABASE...SET ENCRYPTION.

  • Descartando um arquivo de um grupo de arquivos no banco de dados.

  • Descartando o banco de dados.

  • Colocando o banco de dados offline.

  • Desanexando um banco de dados.

  • Fazendo a transição de um banco de dados ou grupo de arquivos para um estado READ ONLY.

  • Usando um comando ALTER DATABASE.

  • Iniciando um banco de dados ou backup de arquivo de banco de dados.

  • Iniciando um banco de dados ou restauração de arquivo de banco de dados.

  • Criando um instantâneo.

As operações e as condições a seguir impedirão a execução das instruções CREATE DATABASE ENCRYPTION KEY, ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY ou ALTER DATABASE...SET ENCRYPTION.

  • O banco de dados é somente leitura ou tem grupos de arquivo somente leitura.

  • Um comando ALTER DATABASE está em execução.

  • Algum backup de dados está sendo executado.

  • O banco de dados está em condição de restauração ou offline.

  • Um instantâneo está em andamento.

  • Tarefas de manutenção do banco de dados.

Durante a criação de arquivos de banco de dados, a inicialização instantânea do arquivo não está disponível quando a TDE está habilitada.

Para criptografar a chave de criptografia do banco de dados com uma chave assimétrica, a chave assimétrica deverá residir em um provedor de gerenciamento de chave extensível.

Criptografia de dados transparente e logs de transação

A habilitação de um banco de dados para usar TDE tem o efeito de zerar a parte remanescente do log de transações virtuais para impor o próximo log de transações virtuais. Isso garante que nenhum texto não criptografado seja deixado nos logs de transações depois que o banco de dados for definido para criptografia. Você pode localizar o status da criptografia de arquivo de log visualizando a coluna encryption_state na exibição sys.dm_database_encryption_keys, como neste exemplo:

USE AdventureWorks2008R2;
GO
/* The value 3 represents an encrypted state 
   on the database and transaction logs. */
SELECT *
FROM sys.dm_database_encryption_keys
WHERE encryption_state = 3;
GO

Para obter mais informações sobre a arquitetura de arquivo de log do SQL Server, consulte Arquitetura física de log de transações.

Todos os dados gravados no log de transações antes de uma alteração na chave de criptografia do banco de dados serão criptografados usando a chave de criptografia do banco de dados anterior.

Depois que uma chave de criptografia de banco de dados foi modificada duas vezes, um backup de log deve ser executado para que a chave de criptografia de banco de dados possa ser modificada novamente.

Criptografia de dados transparente e o banco de dados do sistema tempdb

O banco de dados do sistema, tempdb, será criptografado se nenhum outro banco de dados na instância do SQL Server for criptografado usando TDE. Isso pode ter um efeito de desempenho em bancos de dados não criptografados na mesma instância do SQL Server. Para obter mais informações sobre o banco de dados do sistema tempdb, consulte Banco de dados tempdb.

Criptografia transparente de dados e replicação

A replicação não replica automaticamente os dados de um banco de dados habilitado para TDE em um formulário criptografado. É necessário habilitar separadamente a TDE se você deseja proteger a distribuição e os bancos de dados dos assinantes. A replicação de instantâneo, assim como a distribuição inicial de dados para replicações transacionais e de mesclagem, pode armazenar dados em arquivos intermediários não criptografados, como os arquivos bcp, por exemplo.  Durante replicação transacional ou de mesclagem, a criptografia pode ser permitida para proteger o canal de comunicação. Para obter mais informações, consulte Como habilitar conexões criptografadas no Mecanismo de Banco de Dados (SQL Server Configuration Manager).

Criptografia transparente de dados e FILESTREAM DATA

Os dados FILESTREAM não são criptografados nem mesmo quando a TDE está habilitada.