Fazer backup e restaurar certificados TDE no RDS para SQL Server - Amazon Relational Database Service

Fazer backup e restaurar certificados TDE no RDS para SQL Server

O RDS para SQL Server fornece procedimentos armazenados para backup, restauração e eliminação de certificados TDE. O RDS para SQL Server também fornece uma função para visualizar certificados TDE de usuário restaurados.

Os certificados TDE do usuário são usados para restaurar bancos de dados para o RDS para SQL Server que estão on-premises e têm o TDE ativado. Esses certificados têm o prefixo UserTDECertificate_. Depois de restaurar bancos de dados e antes de disponibilizá-los para uso, o RDS modifica os bancos de dados que têm o TDE ativado para usar certificados TDE gerados pelo RDS. Esses certificados têm o prefixo RDSTDECertificate.

Certificados TDE do usuário permanecem na instância de banco de dados do RDS para SQL Server, a menos que você os descarte usando os procedimentos armazenados rds_drop_tde_certificate. Para ter mais informações, consulte Descartar certificados TDE restaurados.

Você pode usar um certificado TDE de usuário para restaurar outros bancos de dados da instância de banco de dados de origem. Os bancos de dados a serem restaurados devem usar o mesmo certificado TDE e ter o TDE ativado. Você não precisa importar (restaurar) o mesmo certificado novamente.

Pré-requisitos

Para fazer backup ou restaurar certificados TDE no RDS para SQL Server, realize as tarefas a seguir. As três primeiras são descritos em Configurar o backup e a restauração nativos.

  1. Crie buckets do Amazon S3 para armazenar arquivos para backup e restauração.

    Recomendamos que você use buckets separados para backups de banco de dados e backups de certificados TDE.

  2. Crie um perfil do IAM para fazer backup e restaurar arquivos.

    O perfil do IAM deve ser um usuário e um administrador da AWS KMS key.

    Além das permissões necessárias para backup e restauração nativos do SQL Server, o perfil do IAM também precisa as seguintes permissões:

    • s3:GetBucketACL, s3:GetBucketLocation e s3:ListBucket no recurso de bucket do S3

    • s3:ListAllMyBuckets no recurso *

  3. Adicionar a opção SQLSERVER_BACKUP_RESTORE a um grupo de opções em sua instância de banco de dados.

    Além da opção TRANSPARENT_DATA_ENCRYPTION (TDE).

  4. Verifique se você tem uma chave do KMS de criptografia simétrica. Você tem as seguintes opções:

    • Se você tiver uma chave do KMS em sua conta, poderá usá-la. Nenhuma outra ação é necessária.

    • Se você não tiver uma chave do KMS de criptografia simétrica em sua conta, crie uma seguindo as instruções em Criar chaves, no Guia do desenvolvedor do AWS Key Management Service.

  5. Habilite a integração com o Amazon S3 para transferir arquivos entre a instância de banco de dados e o Amazon S3.

    Para ter informações sobre a integração com o Amazon S3, consulte Integrar uma instância de banco de dados do Amazon RDS for SQL Server ao Amazon S3.

Limitações

O uso de procedimentos armazenados para fazer backup e restaurar certificados TDE tem as seguintes limitações:

  • As duas opções SQLSERVER_BACKUP_RESTORE e TRANSPARENT_DATA_ENCRYPTION (TDE) devem ser adicionadas ao grupo de opções associado à sua instância de banco de dados.

  • O backup e a restauração de certificados TDE não são compatíveis com instâncias de banco de dados multi-AZ.

  • O cancelamento de tarefas de backup e restauração de certificados TDE não é compatível.

  • Não é possível usar um certificado TDE de usuário para criptografia TDE de nenhum outro banco de dados em sua instância de banco de dados do RDS para SQL Server. Você pode usá-lo para restaurar somente outros bancos de dados da instância de banco de dados de origem que tem o TDE ativado e que usam o mesmo certificado TDE.

  • Você pode descartar apenas certificados TDE do usuário.

  • O número máximo de certificados TDE do usuário compatível com o RDS é dez. Se o número exceder dez, descarte os certificados TDE não utilizados e tente novamente.

  • O nome do certificado não pode estar em branco nem ser nulo.

  • Ao restaurar um certificado, o nome dele não pode incluir a palavra-chave RDSTDECERTIFICATE e deve iniciar com o prefixo UserTDECertificate_.

  • O parâmetro @certificate_name pode incluir apenas os seguintes caracteres: a-z, 0-9, @, $, # e sublinhado (_).

  • A extensão do arquivo @certificate_file_s3_arn deve ser .cer (não diferencia maiúsculas de minúsculas).

  • A extensão do arquivo para @private_key_file_s3_arn deve ser .pvk (não diferencia maiúsculas de minúsculas).

  • Os metadados do S3 do arquivo de chave privada devem incluir a tag x-amz-meta-rds-tde-pwd. Para ter mais informações, consulte Fazer backup e restaurar certificados TDE para bancos de dados on-premises.

Fazer backup de um certificado TDE

Para fazer backup de certificados TDE, use o procedimento armazenado rds_backup_tde_certificate. Ele tem a sintaxe a seguir.

EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='UserTDECertificate_certificate_name | RDSTDECertificatetimestamp', @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer', @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk', @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id', [@overwrite_s3_files=0|1];

Os seguintes parâmetros são obrigatórios:

  • @certificate_name: o nome do certificado TDE do qual fazer backup.

  • @certificate_file_s3_arn: o nome do recurso da Amazon (ARN) de destino do arquivo de backup do certificado no Amazon S3.

  • @private_key_file_s3_arn: o ARN do S3 de destino do arquivo de chave privada que protege o certificado TDE.

  • @kms_password_key_arn: o ARN da chave do KMS simétrica usada para criptografar a senha da chave privada.

O parâmetro a seguir é opcional:

  • @overwrite_s3_files: indica se os arquivos de chave privada e certificados existentes devem ser substituídos no S3:

    • 0: não substitui os arquivos existentes. Esse valor é o padrão.

      Definir @overwrite_s3_files como 0 retornará um erro se já existir um arquivo.

    • 1 – substitui um arquivo existente que tenha o nome especificado, ainda que ele não seja um arquivo de backup.

exemplo Fazer backup de um certificado TDE
EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='RDSTDECertificate20211115T185333', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk', @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_files=1;

Restaurar um certificado TDE

Use o procedimento armazenado rds_restore_tde_certificate para restaurar (importar) certificados TDE do usuário. Ele tem a sintaxe a seguir.

EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_certificate_name', @certificate_file_s3_arn='arn:aws:s3:::bucket_name/certificate_file_name.cer', @private_key_file_s3_arn='arn:aws:s3:::bucket_name/key_file_name.pvk', @kms_password_key_arn='arn:aws:kms:region:account-id:key/key-id';

Os seguintes parâmetros são obrigatórios:

  • @certificate_name: o nome do certificado TDE a ser restaurado. O nome deve iniciar com o prefixo UserTDECertificate_.

  • @certificate_file_s3_arn: o ARN do S3 do arquivo de backup usado para restaurar o certificado TDE.

  • @private_key_file_s3_arn: o ARN do S3 do arquivo de backup da chave privada do certificado TDE a ser restaurado.

  • @kms_password_key_arn: o ARN da chave do KMS simétrica usada para criptografar a senha da chave privada.

exemplo Restaurar um certificado TDE
EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs/mycertfile.cer', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs/mykeyfile.pvk', @kms_password_key_arn='arn:aws:kms:us-west-2:123456789012:key/AKIAIOSFODNN7EXAMPLE';

Visualizar certificados TDE restaurados

Use a função rds_fn_list_user_tde_certificates para visualizar certificados TDE do usuário restaurados (importados). Ele tem a sintaxe a seguir.

SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();

A saída será semelhante à seguinte. Nem todas as colunas são exibidas aqui.

name certificate_id principal_id pvt_key_encryption_type_desc issuer_name cert_serial_number thumbprint subject start_date expiry_date pvt_key_last_backup_date
UserTDECertificate_tde_cert 343 1 ENCRYPTED_BY_MASTER_KEY AnyCompany Shipping 79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af 0x6BB218B34110388680B FE1BA2D86C695096485B5 AnyCompany Shipping 2022-04-05 19:49:45.0000000 2023-04-05 19:49:45.0000000 NULL

Descartar certificados TDE restaurados

Para descartar certificados TDE do usuário restaurados (importados) que você não está usando, utilize o procedimento armazenado rds_drop_tde_certificate. Ele tem a sintaxe a seguir.

EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';

O seguinte parâmetro é obrigatório:

  • @certificate_name: o nome do certificado TDE a ser descartado.

Você só pode descartar certificados TDE restaurados (importados). Você não pode descartar certificados criados pelo RDS.

exemplo Descartar um certificado TDE
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';