Partilhar via


Criptografia de Dados Transparente (TDE)

A TDE (Transparent Data Encryption) criptografa arquivos de dados do SQL Server e do Banco de Dados SQL do Azure, conhecidos como criptografando dados em repouso. Você pode tomar várias precauções para ajudar a proteger o banco de dados, como criar um sistema seguro, criptografar ativos confidenciais e criar um firewall em torno dos servidores de banco de dados. No entanto, em um cenário em que a mídia física (como unidades ou fitas de backup) são roubadas, uma parte mal-intencionada pode apenas restaurar ou anexar o banco de dados e procurar os dados. Uma solução é criptografar os dados confidenciais no banco de dados e proteger as chaves usadas para criptografar os dados com um certificado. Isso impede que qualquer pessoa sem as chaves use os dados, mas esse tipo de proteção deve ser planejado com antecedência.

O TDE executa criptografia e descriptografia de E/S em tempo real dos arquivos de log e 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 aplicativos existentes.

Importante

O TDE não fornece criptografia entre canais de comunicação. Para obter mais informações sobre como criptografar dados em canais de comunicação, consulte Enable Encrypted Connections to the Database Engine (SQL Server Configuration Manager).

Tópicos relacionados:

Sobre o 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 em disco e descriptografadas quando lidas na memória. O TDE não aumenta o tamanho do banco de dados criptografado.

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

Ao usar o TDE com o 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 mestre é criado automaticamente para você pelo 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 habilitar novamente o TDE no Banco de Dados SQL de destino. Para obter instruções passo a passo para TDE no Banco de Dados SQL, consulte Transparent Data Encryption com o Banco de Dados SQL do Azure.

A visualização do status do 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 status de disponibilidade geral. O TDE para Banco de Dados SQL não se destina a ser usado em bancos de dados de produção até que a Microsoft anuncie que o TDE é promovido da versão de prévia para disponibilidade geral. Para obter mais informações sobre o Banco de Dados SQL V12, confira as novidades no Banco de Dados SQL do Azure.

Informações aplicáveis ao 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 do SQL Server e Chaves Assimétricas.

Ao habilitar o TDE, você deve fazer backup imediato do certificado e da chave privada associada ao certificado. Se o certificado ficar indisponível ou se você precisar restaurar ou anexar o banco de dados em outro servidor, você deverá ter backups do certificado e da chave privada ou não poderá abrir o banco de dados. O certificado de criptografia deve ser mantido mesmo se o TDE não estiver mais habilitado no banco de dados. Embora o banco de dados não esteja criptografado, partes do log de transações ainda podem permanecer protegidas e o certificado pode ser necessário para algumas operações até que o backup completo do banco de dados seja executado. Um certificado que excedeu a 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 da criptografia TDE. Somente os itens de nível de 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 no Banco de Dados SQL.

Exibe a hierarquia descrita no tópico.

Usando a Criptografia Transparente de Dados

Para usar o TDE, siga estas etapas.

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. Você pode exibir o status dessas operações usando as exibições de catálogo e exibições de gerenciamento dinâmico na lista que aparece 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ê precisa garantir que mantenha backups dos certificados do servidor para evitar a 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 TDE devem ser criptografados pela chave mestra do banco de dados para serem aceitos pelas instruções a seguir. Se eles forem criptografados apenas por senha, as instruções as rejeitarão como criptografadores.

Importante

Alterar os certificados para serem protegidos por senha depois que eles forem usados pelo TDE fará com que o banco de dados fique inacessível após uma reinicialização.

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

Comando ou função Propósito
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 o TDE.

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

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

Exibição de catálogo ou exibição de gerenciamento dinâmico Propósito
sys.databases (Transact-SQL) Exibição de catálogo que exibe informações do banco de dados.
sys.certificates (Transact-SQL) Exibição de 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 de criptografia de um banco de dados.

Permissões

Cada recurso e comando TDE tem requisitos de permissão individuais, descritos nas tabelas mostradas anteriormente.

Exibir os metadados envolvidos com o TDE requer a permissão VIEW DEFINITION no certificado.

Considerações

Enquanto uma nova verificação de criptografia de 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 o banco de dados executar a operação de manutenção. Para obter mais informações, consulte Definir um banco de dados para o modo de usuário único.

Você pode encontrar o estado da criptografia de 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 de catálogo e exibições de gerenciamento dinâmico" anteriormente neste tópico).

No TDE, todos os arquivos e grupos de arquivos no banco de dados são criptografados. Se algum grupo de arquivos em um banco de dados estiver marcado como SOMENTE LEITURA, a operação de criptografia de banco de dados falhará.

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

Importante

Todos os novos índices de texto completo serão criptografados 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 no SQL Server. Habilitar um índice de texto completo em uma coluna pode fazer com que os dados dessa coluna sejam gravados em texto sem formatação no disco durante uma verificação de indexação de texto completo. Recomendamos que você não crie um índice de texto completo em dados criptografados confidenciais.

Os dados criptografados compactam significativamente menos do que os dados não criptografados equivalentes. Se o TDE for usado para criptografar um banco de dados, a compactação de backup não conseguirá compactar significativamente o armazenamento de backup. Portanto, não é recomendável usar TDE em conjunto com compactação de backup.

Restrições

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

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

  • Descartando o banco de dados

  • Colocar o banco de dados offline

  • Desanexar um banco de dados

  • Transição de um banco de dados ou grupo de arquivos para um estado SOMENTE LEITURA

As seguintes operações não são permitidas durante as 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.

  • Colocar o banco de dados offline.

  • Desanexar um banco de dados.

  • Transição de um banco de dados ou grupo de arquivos para um estado SOMENTE LEITURA.

  • Usando um comando ALTER DATABASE.

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

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

  • Criando uma captura.

As seguintes operações ou condições impedirão as instruções de CHAVE DE CRIPTOGRAFIA DE CRIAÇÃO DE BANCO DE DADOS, ALTERAR CHAVE DE CRIPTOGRAFIA DE BANCO DE DADOS, EXCLUIR CHAVE DE CRIPTOGRAFIA DE BANCO DE DADOS ou ALTERAR BANCO DE DADOS... INSTRUÇÃO SET ENCRYPTION.

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

  • Um comando ALTER DATABASE está sendo executado.

  • Qualquer backup de dados está em execução.

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

  • Um instantâneo está em andamento.

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

Ao criar arquivos de banco de dados, a inicialização instantânea de arquivo não está disponível quando o TDE está habilitado.

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

Transparent Data Encryption and Transaction Logs

Habilitar um banco de dados para usar o TDE tem o efeito de "zerificar" a parte restante do log de transações virtuais para forçar o próximo log de transações virtuais. Isso garante que nenhum texto claro seja deixado nos logs de transações depois que o banco de dados for definido para criptografia. Você pode encontrar o status da criptografia do arquivo de log exibindo a coluna encryption_state no modo de 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 do 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 tiver sido modificada duas vezes, um backup de log deverá ser executado antes 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, consulte o Banco de Dados tempdb.

Criptografia Transparente de Dados e Replicação

A replicação não replica automaticamente dados de um banco de dados habilitado para TDE em forma criptografada. Você deve habilitar separadamente o TDE se quiser proteger os bancos de dados de distribuição e assinante. A replicação de instantâneo, bem como a distribuição inicial de dados para replicação transacional e de mesclagem, podem armazenar dados em arquivos intermediários não criptografados; por exemplo, os arquivos bcp. Durante a 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 mesmo quando o TDE está habilitado.

Criptografia Transparente de Dados e Extensão de Pool de Buffer

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

Transparent Data Encryption e In-Memory OLTP

O TDE pode ser habilitado em um banco de dados que tem objetos OLTP In-Memory. In-Memory registros de log OLTP serão criptografados se o TDE estiver habilitado. 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 ServerHabilitar TDE usando EKMCriptografia de Dados Transparente com o Banco de Dados SQL do AzureCriptografia do SQL ServerChaves de Criptografia de Banco de Dados e SQL Server (Mecanismo de Banco de Dados)Centro de Segurança para o Mecanismo de Banco de Dados SQL Server e Banco de Dados SQL do AzureFILESTREAM (SQL Server)