Compartilhar via


Criptografia de Dados Transparente (TDE)

A TDE (Transparent Data Encryption) criptografa SQL Server e SQL do Azure arquivos de dados do Banco de Dados, conhecidos como criptografando dados inativos. Você pode adotar várias precauções para ajudar a proteger o banco de dados, como a criação de um sistema seguro, a criptografia de ativos confidenciais e a criação de um firewall em torno de servidores de bancos de dados. No entanto, em um cenário em que a mídia física (como unidades ou fitas de backup) é roubada, uma entidade mal-intencionada pode simplesmente restaurar ou anexar o banco de dados e procurar os 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 TDE realiza a criptografia e a descriptografia de E/S em tempo real dos arquivos de log e de dados. A criptografia usa uma chave de criptografia de banco de dados (DEK), 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.

Importante

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, veja Habilitar conexões criptografadas no Mecanismo de Banco de Dados (SQL Server Configuration Manager).

Tópicos relacionados:

Sobre a TDE

A criptografia do arquivo de banco de dados é executada em 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.

Informações aplicáveis a Banco de Dados SQL

Ao usar o TDE com Banco de Dados SQL V12 V12 (versão prévia em algumas regiões), o certificado no nível do servidor armazenado no banco de dados master é criado automaticamente para você por Banco de Dados SQL. Para mover um banco de dados TDE no Banco de Dados SQL você deve descriptografar o banco de dados, mover o banco de dados e reabilitar o TDE no Banco de Dados SQL de destino. Para obter instruções passo a passo sobre tde em Banco de Dados SQL, consulte Transparent Data Encryption com banco de dados SQL do Azure.

A visualização de status de TDE se aplica mesmo no subconjunto de regiões geográficas em que a família de versões V12 do Banco de Dados SQL é anunciada como estando em disponibilidade geral status. A TDE para Banco de Dados SQL não se destina ao uso em bancos de dados de produção até que a Microsoft anuncie que a TDE é promovida da versão prévia para a GA. Para obter mais informações sobre Banco de Dados SQL V12, consulte Novidades no banco de dados SQL do Azure.

Informações aplicáveis a SQL Server

Depois de protegido, o banco de dados pode ser restaurado usando o certificado correto. Para obter mais informações sobre certificados, consulte SQL Server Certificates and Asymmetric Keys.

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 deve ser retido até mesmo se o TDE já não estiver habilitado no banco de dados. Mesmo que o banco de dados não seja criptografado, partes do log de transações ainda poderão permanecer protegidas e talvez o certificado seja necessário para algumas operações até a realização do backup completo do banco de dados. Um certificado que excedeu sua data de validade ainda pode ser usado para criptografar e descriptografar dados com TDE.

Hierarquia de criptografia

A ilustração a seguir mostra a arquitetura de criptografia da TDE. Somente os itens no nível do banco de dados (a chave de criptografia do banco de dados e as partes ALTER DATABASE são configuráveis pelo usuário ao usar o TDE em Banco de Dados SQL.

Exibe a hierarquia descrita no tópico.

Usando Transparent Data Encryption

Para usar a TDE, execute estes procedimentos.

Aplica-se a: SQL Server.
  • 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 AdventureWorks2012 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 AdventureWorks2012;
GO
CREATE DATABASE ENCRYPTION KEY
WITH ALGORITHM = AES_128
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2012
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.

Cuidado

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 SQL Server Certificates and Asymmetric Keys.

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.

Importante

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 têm 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.

Considerações

Quando um exame de recriptografia para uma operação de criptografia de banco de dados está em andamento, as operações de manutenção no banco de dados são desabilitadas. Você pode usar a configuração de modo de usuário único para que o banco de dados execute a operação de manutenção. Para obter mais informações, veja Definir um banco de dados como modo de usuário único.

É 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, veja a seção “Exibições de 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.

Importante

Qualquer índice de texto completo novo será criptografado quando um banco de dados for definido para criptografia. Os índices de texto completo criados anteriormente serão importados durante a atualização e estarão no TDE depois que os dados forem carregados em 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 de banco de dados com uma chave assimétrica, essa chave deve residir em um provedor de gerenciamento extensível de chaves.

Transparent Data Encryption 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 AdventureWorks2012;
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 do arquivo de log SQL Server, consulte O Log de Transações (SQL Server).

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.

Transparent Data Encryption e o banco de dados do sistema tempdb

O banco de dados do sistema tempdb será criptografado se qualquer outro banco de dados na instância do SQL Server for criptografado usando TDE. Isso pode ter um efeito de desempenho para 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, confira Banco de dados tempdb.

Transparent Data Encryption 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 habilitada para proteger o canal de comunicação. Para obter mais informações, confira Habilitar conexões criptografadas para o mecanismo de banco de dados (SQL Server Configuration Manager).

Transparent Data Encryption e FILESTREAM DATA

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

Transparent Data Encryption e Extensão do Pool de Buffers

Arquivos relacionados à BPE (extensão do pool de buffers) não são criptografados quando o banco de dados é criptografado usando TDE. Você deve usar ferramentas de criptografia no nível de sistema de arquivos como Bitlocker ou EFS para arquivos relacionados à BPE.

Transparent Data Encryption e OLTP na memória

A TDE pode ser habilitada em um banco de dados que tenha objetos OLTP na memória. Os registros de log do OLTP na memória serão criptografados se a TDE estiver habilitada. Os dados em um grupo de arquivos MEMORY_OPTIMIZED_DATA não serão criptografados se o TDE estiver habilitado.

Consulte Também

Mover um banco de dados protegido por TDE para outro SQL ServerEnável TDE usando a Criptografia de Dados Transparente EKM com SQL do Azure Banco de DadosSQL Server CriptografiaSQL Server e Chaves de Criptografia de Banco de Dados (Mecanismo de Banco de Dados)Central de Segurança para SQL Server Mecanismo de Banco de Dados e FILESTREAM de Banco de Dados SQL do Azure(SQL Server)