Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A criptografia de dados transparente (TDE) criptografa arquivos de dados do SQL Server, do Banco de Dados SQL do Azure e do Azure Synapse Analytics. Essa criptografia é conhecida como criptografia de dados em repouso.
Para ajudar a proteger um banco de dados de usuários, você pode tomar precauções como:
- Conceber um sistema seguro.
- Encriptação de ativos confidenciais.
- Criação de um firewall em torno dos servidores de banco de dados.
No entanto, uma parte mal-intencionada que rouba mídia física, como unidades ou fitas de backup, pode restaurar ou anexar o banco de dados e navegar por seus dados.
Uma solução é criptografar dados confidenciais em um banco de dados e usar um certificado para proteger as chaves que criptografam os dados. Esta solução impede que qualquer pessoa sem as chaves de usar os dados. Mas é preciso planejar esse tipo de proteção com antecedência.
A TDE faz encriptação de E/S em tempo real e desencriptação de dados e ficheiros de registo. A criptografia usa uma chave de criptografia de banco de dados (DEK). O registro de inicialização do banco de dados armazena a chave para disponibilidade durante a recuperação. A DEK é uma chave simétrica e é protegida por um certificado que o banco de dados do master servidor armazena ou por uma chave assimétrica que um módulo EKM protege.
A TDE protege os dados em repouso, que são os dados e os arquivos de log. Ele permite que você siga muitas leis, regulamentos e diretrizes estabelecidas em vários setores. Essa capacidade permite que os desenvolvedores de software criptografem dados usando algoritmos de criptografia AES e 3DES sem alterar os aplicativos existentes.
Observação
A TDE não está disponível para bancos de dados do sistema. Ele não pode ser usado para criptografar master, model, ou msdb.
tempdb é automaticamente criptografado quando um banco de dados de usuário habilita TDE, mas não pode ser criptografado diretamente.
A TDE não fornece criptografia entre canais de comunicação. Para obter mais informações sobre como criptografar dados entre canais de comunicação, consulte Criptografar conexões com o SQL Server importando um certificado.
Tópicos relacionados:
- Criptografia de dados transparente para Banco de Dados SQL, Instância Gerenciada SQL e Azure Synapse Analytics
- Introdução à criptografia de dados transparente (TDE) no Azure Synapse Analytics
- Mover um banco de dados protegido por TDE para outro SQL Server
- Habilitar TDE no SQL Server usando EKM
- Usar o SQL Server Connector com recursos de criptografia SQL
- O blog de segurança do SQL Server sobre TDE com perguntas frequentes
Sobre a TDE
A criptografia de um arquivo de banco de dados é feita no nível da página. As páginas em um banco de dados criptografado são criptografadas antes de serem gravadas no disco e são descriptografadas quando lidas na memória. A TDE não aumenta o tamanho do banco de dados criptografado.
Informações aplicáveis à Base de Dados SQL
Quando você usa o TDE com o Banco de Dados SQL do Azure, o master Banco de Dados SQL cria automaticamente o certificado no nível de servidor armazenado no banco de dados. Para mover um banco de dados TDE no Banco de dados SQL, não é necessário descriptografar o banco de dados para a operação de movimentação. Para obter mais informações sobre como usar TDE com o Banco de Dados SQL, consulte Criptografia de dados transparente com o Banco de Dados SQL do Azure.
Informações aplicáveis ao SQL Server
Depois de proteger um banco de dados, você pode restaurá-lo usando o certificado correto. Para obter mais informações sobre certificados, consulte Certificados do SQL Server e chaves assimétricas.
Depois de habilitar o TDE, faça backup imediatamente do certificado e de sua chave privada associada. Se o certificado ficar indisponível ou se você restaurar ou anexar o banco de dados em outro servidor, precisará de backups do certificado e da chave privada. Caso contrário, não será possível abrir o banco de dados. Os certificados armazenados em um banco de dados do sistema contido também devem ser copiados.
Mantenha o certificado de criptografia mesmo se você tiver desabilitado o TDE no banco de dados. Embora o banco de dados não esteja criptografado, partes do log de transações podem permanecer protegidas. Você também pode precisar do certificado para algumas operações até fazer um backup completo do banco de dados.
Você ainda pode usar um certificado que exceda sua data de validade para criptografar e descriptografar dados com TDE.
Hierarquia de criptografia
A API de Proteção de Dados do Windows (DPAPI) está na raiz da árvore de criptografia, protege a hierarquia de chaves no nível da máquina e é usada para proteger a chave mestra de serviço (SMK) para a instância do servidor de banco de dados. O SMK protege a chave mestra do banco de dados (DMK), que é armazenada no nível do banco de dados do usuário e protege certificados e chaves assimétricas. Essas chaves, por sua vez, protegem chaves simétricas, que protegem os dados. A TDE usa uma hierarquia semelhante até o certificado. Quando você usa TDE, o DMK e o master certificado devem ser armazenados no banco de dados. Uma nova chave, usada apenas para TDE e referida como a chave de criptografia de banco de dados (DEK), é criada e armazenada no banco de dados do usuário.
A ilustração a seguir mostra a arquitetura da criptografia TDE. Somente os itens no nível de banco de dados (a chave de criptografia e ALTER DATABASE partes do banco de dados) são configuráveis pelo usuário quando você usa TDE no Banco de dados SQL.
Ativar TDE
Para usar a 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 usando o certificado.
- Defina o banco de dados para usar criptografia.
O exemplo a seguir mostra a criptografia e a AdventureWorks2025 descriptografia do banco de dados usando um certificado chamado MyServerCert instalado no servidor.
USE master;
GO
CREATE MASTER KEY ENCRYPTION BY PASSWORD= '<password>';
GO
CREATE CERTIFICATE MyServerCert
WITH SUBJECT = 'My DEK Certificate';
GO
USE AdventureWorks2022;
GO
CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_256
ENCRYPTION BY SERVER CERTIFICATE MyServerCert;
GO
ALTER DATABASE AdventureWorks2022
SET ENCRYPTION ON;
GO
As operações de criptografia e descriptografia são agendadas em threads em segundo plano pelo SQL Server. Para exibir o status dessas operações, use as exibições de catálogo e as exibições de gerenciamento dinâmico na tabela exibida posteriormente neste artigo.
Atenção
Os arquivos de backup para bancos de dados com TDE habilitado também são criptografados com a DEK. Como resultado, quando você restaura esses backups, o certificado que protege o DEK deve estar disponível. Portanto, além de fazer backup do banco de dados, certifique-se de manter backups dos certificados do servidor. A perda de dados resulta se os certificados não estiverem mais disponíveis.
Para obter mais informações, consulte Certificados do SQL Server e chaves assimétricas.
Comandos e funções
Para que as instruções a seguir aceitem certificados TDE, use uma chave mestra de banco de dados para criptografá-los. Se você criptografá-los apenas por senha, as instruções os rejeitarão como encriptadores.
Importante
Se você tornar os certificados protegidos por senha depois que a TDE usá-los, o banco de dados ficará inacessível após uma reinicialização.
A tabela a seguir fornece links e explicações de comandos e funções TDE:
| Comando ou função | Propósito |
|---|---|
| CRIAR CHAVE DE CRIPTOGRAFIA DE BANCO DE DADOS | Cria uma chave que criptografa um banco de dados |
| ALTERAR CHAVE DE CRIPTOGRAFIA DO BANCO DE DADOS | Altera a chave que criptografa um banco de dados |
| DESCARTAR CHAVE DE CRIPTOGRAFIA DO BANCO DE DADOS | Remove a chave que criptografa um banco de dados |
| Opções de ALTER DATABASE SET | Explica a opção usada para habilitar o ALTER DATABASE TDE |
Exibições de catálogo e exibições de gerenciamento dinâmico
A tabela a seguir mostra as exibições do catálogo TDE e as exibições de gerenciamento dinâmico (DMV).
| Vista de catálogo ou vista de gestão dinâmica | Propósito |
|---|---|
| sys.databases | Modo de exibição de catálogo que exibe informações do banco de dados |
| sys.certificados | Modo de exibição de catálogo que mostra os certificados em um banco de dados |
| sys.dm_database_encryption_keys | Modo de exibição de gerenciamento dinâmico que fornece informações sobre as chaves de criptografia e o estado da criptografia de um banco de dados |
Permissions
Cada recurso e comando TDE tem requisitos de permissão individuais, conforme descrito nas tabelas mostradas anteriormente.
A visualização dos metadados envolvidos com a TDE requer a VIEW DEFINITION permissão em um certificado.
Considerações
Enquanto uma nova verificação de criptografia para uma operação de criptografia de banco de dados está em andamento, as operações de manutenção para o banco de dados são desabilitadas. Você pode usar a configuração de modo de usuário único para o banco de dados para fazer operações de manutenção. Para obter mais informações, consulte Definir um banco de dados para o modo de usuário único.
Use a sys.dm_database_encryption_keys exibição de gerenciamento dinâmico para localizar o estado da criptografia do banco de dados. Para obter mais informações, consulte a seção Exibições de catálogo e exibições de gerenciamento dinâmico anteriormente neste artigo.
No TDE, todos os ficheiros e grupos de ficheiros numa base de dados são encriptados. Se qualquer grupo de arquivos em um banco de dados estiver marcado READ ONLY, a operação de criptografia do banco de dados falhará.
Se você usar um banco de dados em espelhamento de banco de dados ou envio de logs, ambos os bancos de dados serão criptografados. As transações de log são criptografadas quando enviadas entre elas.
Importante
Os índices de texto completo são criptografados quando um banco de dados é definido para criptografia. Esses índices criados no SQL Server 2005 (9.x) e versões anteriores são importados para o banco de dados pelo SQL Server 2008 (10.0.x) e versões posteriores e são criptografados pelo TDE.
Sugestão
Para monitorar as alterações no status TDE de um banco de dados, use a Auditoria do SQL Server ou a auditoria do Banco de Dados SQL do Azure. Para o SQL Server, a TDE é rastreada no grupo DATABASE_OBJECT_CHANGE_GROUPde ações de auditoria , que você pode encontrar em Grupos de ações e ações de Auditoria do SQL Server.
Limitações
As seguintes operações não são permitidas durante a criptografia inicial do banco de dados, a alteração de chave ou a descriptografia do banco de dados:
- Descartando um arquivo de um grupo de arquivos em um banco de dados
- Descartando um banco de dados
- Colocar um banco de dados offline
- Desanexando um banco de dados
- Fazendo a transição de um banco de dados ou grupo de arquivos para um
READ ONLYestado
As seguintes operações não são permitidas durante as CREATE DATABASE ENCRYPTION KEYinstruções , ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, e ALTER DATABASE...SET ENCRYPTION :
- Descartando um arquivo de um grupo de arquivos em um banco de dados
- Descartando um banco de dados
- Colocar um banco de dados offline
- Desanexando um banco de dados
- Fazendo a transição de um banco de dados ou grupo de arquivos para um
READ ONLYestado - Usando um
ALTER DATABASEcomando - Iniciando um backup de banco de dados ou arquivo de banco de dados
- Iniciando uma restauração de banco de dados ou arquivo de banco de dados
- Criando um snapshot
As seguintes operações ou condições impedem as CREATE DATABASE ENCRYPTION KEYinstruções , ALTER DATABASE ENCRYPTION KEY, DROP DATABASE ENCRYPTION KEY, e ALTER DATABASE...SET ENCRYPTION :
- Um banco de dados é somente leitura ou tem grupos de arquivos somente leitura.
- Um
ALTER DATABASEcomando está em execução. - Um backup de dados está em execução.
- Um banco de dados está em uma condição offline ou de restauração.
- Um instantâneo está em andamento.
- As tarefas de manutenção do banco de dados estão em execução.
Quando os arquivos de banco de dados são criados, a inicialização instantânea do arquivo não está disponível quando a TDE está habilitada.
Para criptografar uma DEK com uma chave assimétrica, a chave assimétrica deve estar em um provedor de gerenciamento de chaves extensível.
Varredura TDE
Para habilitar o TDE em um banco de dados, o SQL Server deve fazer uma verificação de criptografia. A verificação lê cada página dos arquivos de dados no pool de buffers e, em seguida, grava as páginas criptografadas de volta no disco.
Para oferecer mais controle sobre a verificação de criptografia, o SQL Server 2019 (15.x) apresenta a verificação TDE, que tem uma sintaxe de suspensão e retomada. Você pode pausar a verificação enquanto a carga de trabalho no sistema estiver pesada ou durante as horas críticas para os negócios e, em seguida, retomar a verificação mais tarde.
Use a sintaxe a seguir para pausar a verificação de criptografia TDE:
ALTER DATABASE <db_name> SET ENCRYPTION SUSPEND;
Da mesma forma, use a seguinte sintaxe para retomar a verificação de criptografia TDE:
ALTER DATABASE <db_name> SET ENCRYPTION RESUME;
A coluna encryption_scan_state foi adicionada sys.dm_database_encryption_keys à exibição de gerenciamento dinâmico. Ele mostra o estado atual da verificação de criptografia. Há também uma nova coluna chamada encryption_scan_modify_date, que contém a data e a hora da última alteração de estado da verificação de criptografia.
Se a instância do SQL Server for reiniciada enquanto sua verificação de criptografia estiver suspensa, uma mensagem será registrada no log de erros durante a inicialização. A mensagem indica que uma verificação existente foi pausada.
Importante
O recurso de verificação Suspender e Retomar TDE não está disponível no momento no Banco de Dados SQL do Azure, na Instância Gerenciada SQL do Azure e no Azure Synapse Analytics.
TDE e logs de transações
TDE protege arquivos de dados e arquivos de log em repouso. Criptografar todo o banco de dados depois de habilitar o TDE em um banco de dados não criptografado é uma operação de dados considerável e o tempo que leva depende dos recursos do sistema nos quais esse banco de dados está sendo executado. O sys.dm_database_encryption_keys DMV pode ser usado para determinar o estado de criptografia de um banco de dados.
Quando a TDE está ativada, o Mecanismo de Banco de Dados força a criação de um novo log de transações, que será criptografado pela chave de criptografia do banco de dados. Qualquer log gerado por transações anteriores ou transações atuais de longa duração intercaladas entre a alteração de estado TDE não é criptografado.
Os logs de transações podem ser monitorados usando o sys.dm_db_log_info DMV, que também mostra se o arquivo de log está criptografado ou não usando a vlf_encryptor_thumbprint coluna disponível no SQL do Azure e no SQL Server 2019 (15.x) e versões posteriores. Para localizar o status de criptografia do arquivo de log usando a encryption_state coluna na sys.dm_database_encryption_keys exibição, aqui está uma consulta de exemplo:
USE AdventureWorks2022;
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.
Antes de uma DEK ser alterada, a DEK anterior criptografa todos os dados gravados no log de transações.
Se você alterar uma DEK duas vezes, deverá fazer um backup de log antes de poder alterar a DEK novamente.
TDE e o banco de dados do sistema tempdb
O tempdb banco de dados do sistema será criptografado se qualquer outro banco de dados na instância do SQL Server for criptografado usando TDE. Essa criptografia 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 tempdb sistema, consulte Banco de dados tempdb.
TDE e replicação
A replicação não replica automaticamente dados de um banco de dados habilitado para TDE em um formato criptografado. Habilite separadamente o TDE se quiser proteger os bancos de dados de distribuição e assinantes.
A replicação de snapshot pode armazenar dados em arquivos intermediários não criptografados, como arquivos BCP. A distribuição inicial de dados para replicação transacional e de mesclagem também pode. Durante essa replicação, você pode habilitar a criptografia para proteger o canal de comunicação.
Para obter mais informações, consulte Criptografar conexões com o SQL Server importando um certificado.
TDE e grupos de disponibilidade
Você pode adicionar um banco de dados criptografado a um grupo de disponibilidade Always On.
Para criptografar bancos de dados que fazem parte de um grupo de disponibilidade, crie a chave mestra e os certificados ou a chave assimétrica (EKM) em todas as réplicas secundárias antes de criar a chave de criptografia do banco de dados na réplica primária.
Se um certificado for usado para proteger a DEK, faça backup do certificado criado na réplica primária e, em seguida, crie o certificado a partir de um arquivo em todas as réplicas secundárias antes de criar a DEK na réplica primária.
Dados TDE e FILESTREAM
Os dados FILESTREAM não são criptografados, mesmo quando você ativa o TDE.
TDE e backups
Os certificados são comumente usados na criptografia de dados transparente para proteger a DEK. O certificado deve ser criado na master base de dados. Os arquivos de backup de bancos de dados que têm TDE habilitado, também são criptografados usando o DEK. Como resultado, quando você restaura a partir desses backups, o certificado que protege o DEK deve estar disponível. Isso significa que, além de fazer backup do banco de dados, você deve manter backups dos certificados do servidor para evitar a perda de dados. A perda de dados ocorre se o certificado não estiver mais disponível.
Remover TDE
Remova a criptografia do banco de dados usando a ALTER DATABASE instrução.
ALTER DATABASE <db_name> SET ENCRYPTION OFF;
Para exibir o estado do banco de dados, use o modo de exibição sys.dm_database_encryption_keys gerenciamento dinâmico.
Observação
Enquanto o processo de criptografia está em andamento, ALTER DATABASE as instruções não são permitidas no banco de dados. Até que o processo de encriptação esteja concluído, não pode começar a desencriptar a base de dados.
Aguarde até que a desencriptação termine antes de remover o DEK usando DROP DATABASE ENCRYPTION KEY.
Importante
Faça backup da chave mestra e do certificado usados para TDE em um local seguro. A chave mestra e o certificado são necessários para restaurar backups que foram feitos quando o banco de dados foi criptografado com TDE. Depois de remover a DEK, faça um backup de log seguido por um novo backup completo do banco de dados descriptografado.
TDE e a extensão do buffer pool
Quando você criptografa um banco de dados usando TDE, os arquivos relacionados à extensão de pool de buffer (BPE) não são criptografados. Para esses arquivos, use ferramentas de criptografia como BitLocker ou EFS no nível do sistema de arquivos.
TDE e In-Memory OLTP
Você pode habilitar o TDE em um banco de dados que tenha In-Memory objetos OLTP. No SQL Server 2016 (13.x) e no Banco de Dados SQL do Azure, In-Memory registros e dados de log OLTP são criptografados se você habilitar o TDE. No SQL Server 2014 (12.x), In-Memory registros de log OLTP são criptografados se você habilitar o TDE, mas os MEMORY_OPTIMIZED_DATA arquivos no grupo de arquivos não são criptografados.
Orientações sobre a gestão de certificados utilizados na TDE
Você deve fazer backup do certificado e da chave mestra do banco de dados quando o banco de dados estiver habilitado para TDE e for usado no envio de logs ou no espelhamento do banco de dados. Os certificados armazenados em um banco de dados do sistema contido também devem ser copiados.
O certificado usado para proteger o DEK nunca deve ser descartado do master banco de dados. Isso faz com que o banco de dados criptografado se torne inacessível.
Uma mensagem como a seguinte (erro 33091) é gerada após a execução CREATE DATABASE ENCRYPTION KEY se o certificado usado no comando ainda não tiver sido feito backup.
Advertência
Não foi feito backup do certificado usado para criptografar a chave de criptografia do banco de dados. Você deve fazer backup imediatamente 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, deverá ter backups do certificado e da chave privada ou não poderá abrir o banco de dados.
A consulta a seguir pode ser usada para identificar os certificados usados no TDE cujo backup não foi feito desde o momento em que foi criado.
SELECT pvt_key_last_backup_date,
Db_name(dek.database_id) AS encrypteddatabase,
c.name AS Certificate_Name
FROM sys.certificates AS c
INNER JOIN sys.dm_database_encryption_keys AS dek
ON c.thumbprint = dek.encryptor_thumbprint;
Se a coluna pvt_key_last_backup_date for NULL, o banco de dados correspondente a essa linha foi habilitado para TDE, mas não foi feito backup do certificado usado para proteger sua DEK. Para obter mais informações sobre como fazer backup de um certificado, consulte BACKUP CERTIFICATE.