Suporte para criptografia de dados transparente no SQL Server - Amazon Relational Database Service

Suporte para criptografia de dados transparente no SQL Server

O Amazon RDS suporta o uso de Criptografia de Dados Transparente (TDE) para criptografar dados armazenados em suas instâncias de banco de dados executando o Microsoft SQL Server. O TDE criptografa os dados automaticamente antes de gravá-los no armazenamento e os descriptografa automaticamente quando os são lidos.

O Amazon RDS oferece suporte a TDE para as seguintes versões e edições do SQL Server:

  • SQL Server 2019 Standard e Enterprise Edition

  • SQL Server 2017 Enterprise Edition

  • SQL Server 2016 Enterprise Edition

  • SQL Server 2014 Enterprise Edition

  • SQL Server 2012 Enterprise Edition

A criptografia de dados transparente para o SQL Server permite o gerenciamento de chaves de criptografia usando uma arquitetura de chave de duas camadas. Um certificado, que é gerado a partir da chave mestre do banco de dados, é usado para proteger as chaves de criptografia de dados. A chave de criptografia do banco de dados executa a criptografia e a decodificação reais dos dados no banco de dados do usuário. O Amazon RDS faz backup e gerencia a chave primária do banco de dados e o certificado TDE.

nota

O RDS não oferece suporte à importação ou exportação de certificados TDE.

A criptografia de dados transparente é usada em cenários em que você precisa criptografar dados confidenciais. Por exemplo, você pode querer fornecer arquivos de dados e backups a terceiros ou abordar problemas de conformidade regulatórios relacionados à segurança. Não é possível criptografar os bancos de dados do sistema para o SQL Server, como os bancos de dados model ou master.

nota

Você pode criar backups nativos de bancos de dados habilitados para TDE, mas não pode restaurar esses backups em bancos de dados locais. Você não pode restaurar backups nativos de bancos de dados on-premises habilitados para TDE.

Uma discussão detalhada sobre criptografia de dados transparente foge do escopo deste guia, mas você deve entender os pontos fortes e fracos de segurança de cada algoritmo e chave de criptografia. Para obter informações sobre a criptografia de dados transparente para SQL Server, consulte Transparent Data Encryption (TDE) no site da Microsoft.

Habilitar o TDE

Para habilitar a criptografia de dados transparente para uma instância de banco de dados do RDS for SQL Server, especifique a opção TDE em um grupo de opções do RDS associado a essa instância de banco de dados.

  1. Determine se a instância de banco de dados já está associada a um grupo de opções que tenha a opção TDE. Para visualizar o grupo de opções ao qual uma instância de banco de dados está associada, use o console do RDS, o comando describe-db-instance da AWS CLI ou a operação da API DescribeDBInstances.

  2. Se a instância do banco de dados não estiver associada a um grupo de opções que tenha o TDE ativado, você terá duas opções. Você pode criar um grupo de opções e adicionar a opção TDE ou pode modificar o grupo de opções associado para adicioná-lo.

    nota

    No console do RDS, a opção é nomeada TRANSPARENT_DATA_ENCRYPTION. Na AWS CLI e na API do RDS, ele é nomeado TDE.

    Para obter informações sobre como criar ou modificar um grupo de opções, consulte Trabalhar com grupos de opções. Para obter informações sobre como adicionar uma opção a um grupo de opções, consulte Adicionar uma opção a um grupo de opções.

  3. Associe a instância de banco de dados ao grupo de opções com a opção TDE. Para obter informações sobre como associar uma instância de banco de dados a um grupo de opções, consulte Modificar uma instância de banco de dados do Amazon RDS.

Criptografar dados

Quando a opção TDE é adicionada a um grupo de opções, o Amazon RDS gera um certificado que é usado no processo de criptografia. Você pode então usar o certificado para executar instruções de SQL que criptografam dados em um banco de dados na instância do banco de dados. O exemplo a seguir usa o certificado criado pelo RDS chamado RDSTDECertificateName para criptografar um banco de dados chamado customerDatabase.

---------- Enabling TDE ------------- -- Find a RDSTDECertificate to use USE [master] GO SELECT name FROM sys.certificates WHERE name LIKE 'RDSTDECertificate%' GO USE [customerDatabase] GO -- Create DEK using one of the certificates from the previous step CREATE DATABASE ENCRYPTION KEY WITH ALGORITHM = AES_128 ENCRYPTION BY SERVER CERTIFICATE [RDSTDECertificateName] GO -- Enable encryption on the database ALTER DATABASE [customerDatabase] SET ENCRYPTION ON GO -- Verify that the database is encrypted USE [master] GO SELECT name FROM sys.databases WHERE is_encrypted = 1 GO SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO

O tempo necessário para criptografar um banco de dados do SQL Server usando o TDE depende de vários fatores. Esses fatores incluem o tamanho da instância de banco de dados, se PIOPS está habilitado para a instância e a quantidade de dados, entre outros.

Considerações de grupos de opções

A opção TDE é uma opção persistente que não pode ser removida de um grupo de opções, a menos que todas as instâncias e backups de banco de dados sejam dissociados do grupo de opções. Quando você adiciona a opção TDE a um grupo de opções, o grupo de opções só pode ser associado a instâncias de banco de dados usando TDE. Para mais informações sobre opções persistentes em um grupo de opções, consulte Visão geral de grupos de opções.

Como a opção TDE é uma opção persistente, você pode ter um conflito entre o grupo de opções e uma instância de banco de dados associada. Você pode ter um conflito entre o grupo de opções e uma instância de banco de dados associada nas seguintes situações:

  • O grupo de opções atual tem a opção TDE, e você o substitui por um grupo de opções sem a opção TDE.

  • Restaura-se a partir de um DB snapshot para uma nova instância de banco de dados que não tem um grupo de opções que contenha a opção TDE. Para obter mais informações sobre esse cenário, consulte Considerações de grupos de opções.

Desabilitar o TDE

Para desabilitar o TDE em uma instância de banco de dados, primeiro, verifique se não há objetos criptografados deixados na instância do banco de dados descriptografando os objetos ou descartando-os. Se algum objeto criptografado existir na instância de banco de dados, você não poderá desabilitar o TDE para essa instância do banco de dados. Ao usar o console para remover a opção TDE de um grupo de opções, o console indica que ele está processando. Além disso, um evento de erro será criado se o grupo de opções estiver associado a uma instância de banco de dados criptografada ou a um DB snapshot.

O exemplo a seguir remove a criptografia de TDE de um banco de dados chamado customerDatabase.

------------- Removing TDE ---------------- USE [customerDatabase] GO -- Disable encryption on the database ALTER DATABASE [customerDatabase] SET ENCRYPTION OFF GO -- Wait until the encryption state of the database becomes 1. The state is 5 (Decryption in progress) for a while SELECT db_name(database_id) as DatabaseName, * FROM sys.dm_database_encryption_keys GO -- Drop the DEK used for encryption DROP DATABASE ENCRYPTION KEY GO -- Alter to SIMPLE Recovery mode so that your encrypted log gets truncated USE [master] GO ALTER DATABASE [customerDatabase] SET RECOVERY SIMPLE GO

Quando todos os objetos forem descriptografados, você terá duas opções. Você poderá modificar a instância de banco de dados para ser associada a um grupo de opções sem a opção TDE. Ou poderá remover a opção TDE do grupo de opções.