Como faço para restaurar um arquivo de backup criptografado ou um backup criptografado do Microsoft Azure no RDS para SQL Server a partir de um ambiente on-premises?

5 minuto de leitura
0

Quero restaurar um arquivo de backup criptografado ou um backup criptografado do Microsoft Azure entre um ambiente on-premises e a instância do Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server. Como posso fazer isso usando o recurso nativo de backup e restauração?

Breve descrição

A criptografia de backup está disponível no SQL Server 2014 (12.x) e versões posteriores. Você pode especificar o algoritmo de criptografia e o criptografador (um certificado ou chave assimétrica) ao criar um backup. Isso cria um arquivo de backup criptografado.

Observação: Esse recurso não é o mesmo que a criptografia TDE.

Resolução

Backups criptografados

Observação: Antes de iniciar as seguintes etapas de resolução, certifique-se de ter criado o seguinte:

  • Um bucket do Amazon Simple Storage Service (Amazon S3).
  • Uma instância do Amazon RDS configurada com TDE e SQLSERVER_BACKUP_RESTORE no grupo de opções.

1.    Crie uma chave mestra usando o seguinte script em sua conta on-premises:

USE Master;
GO
CREATE MASTER KEY ENCRYPTION
BY PASSWORD='InsertStrongPasswordHere';
GO

2.    Crie um certificado protegido pela chave mestra em sua conta on-premises:

CREATE CERTIFICATE TDE_Cert
WITH 
SUBJECT='Database_Encryption';
GO

3.    Inicie um backup nativo usando o script a seguir.

Observação: Ative a compactação para evitar problemas durante a restauração no RDS.

BACKUP DATABASE [TestDB] TO DISK =N'E:\Backup\EncryptedBackupFromOnpremise.bak' WITH COMPRESSION,
ENCRYPTION( ALGORITHM = AES_256, SERVER CERTIFICATE = [TDE_Cert] ), STATS = 10
GO

4.    Carregue o backup criptografado no bucket do S3 tde-db usando o Console de Gerenciamento da AWS.

5.    Execute o comando a seguir para restaurar o banco de dados:

exec msdb.dbo.rds_restore_database 
@restore_db_name='onpremdb',
@s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';

Backups criptografados do Microsoft Azure

Observação: Essa resolução envolve etapas semelhantes às seções anteriores. No entanto, o backup criptografado é iniciado no contêiner de backup do Microsoft Azure em vez de no armazenamento local. Antes de iniciar as seguintes etapas de resolução, certifique-se de ter criado o seguinte:

  • Um bucket do Amazon Simple Storage Service (Amazon S3).
  • Uma instância do RDS configurada com o grupo de opções TDE e SQLSERVER_BACKUP_RESTORE.
  • Uma conta on-premises configurada com certificados para criptografar o backup.
  • Uma conta ativa do Microsoft Azure.

1.    Crie uma conta de armazenamento no Microsoft Azure. Para obter mais informações, consulte Criar uma conta de armazenamento no site de documentação da Microsoft.

2.    Crie uma credencial com base na assinatura de acesso compartilhado. Para obter mais informações, consulte Criar tokens SAS para seus contêineres de armazenamento, no site de documentação da Microsoft.

USE master  
CREATE CREDENTIAL [https://<mystorageaccountname>.blob.core.windows.net/<mystorageaccountcontainername>] 
  -- this name must match the container path, start with https and must not contain a forward slash at the end
WITH IDENTITY='SHARED ACCESS SIGNATURE' 
  -- this is a mandatory string and should not be changed   
 , SECRET = 'sharedaccesssignature'
GO

3.    Inicie um backup criptografado nativo no armazenamento do Microsoft Azure:

BACKUP DATABASE [TestDB] TO  URL = N'https://backuptestsanketh.blob.core.windows.net/backup/TestDB_backup_2022_09_29_112330.bak' 
WITH  COPY_ONLY, NOFORMAT, NOINIT,  NAME = N'BackupEnc-Full Database Backup', NOSKIP, NOREWIND, NOUNLOAD, COMPRESSION, 
ENCRYPTION(ALGORITHM = AES_128, SERVER CERTIFICATE = [On_PremTDE_Cert]),  STATS = 10
GO

Observação: o Amazon RDS não oferece suporte à restauração de backups diretamente dos contêineres de armazenamento do Microsoft Azure. Portanto, você deve baixar o backup em um sistema intermediário.

4.    Carregue o arquivo de backup no bucket do S3 (tde-db).

5.    Para fazer backup e restaurar a chave privada e o certificado na instância do RDS, siga as etapas na seção Resolver o erro “Não é possível encontrar o certificado do servidor com impressão digital”.

6.     Depois que os pré-requisitos estiverem em vigor, execute o seguinte comando para restaurar o backup criptografado:

exec msdb.dbo.rds_restore_database
@restore_db_name='AzureBackupEncrypted',
@s3_arn_to_restore_from='arn:aws:s3:::tde-db/backup/azure-encrypted.bak'

Resolver o erro “Não é possível encontrar o certificado do servidor com impressão digital”

A restauração de backups criptografados em outro ambiente em que os certificados não estão configurados resulta no seguinte erro:

Cannot find server certificate with thumbprint '0xBA01F2AF71C3FB4A92C5F69BDE3EC8DB318D7D0E'

Para evitar o erro anterior, faça o seguinte:

1.    Crie uma nova chave do AWS Key Management Service (AWS KMS) na conta da AWS onde você executará a restauração nativa.

2.    Gere uma chave de dados do AWS KMS para iniciar o backup do certificado:

aws kms generate-data-key --key-id KMS-Key-ID --key-spec AES_256 --region us-west-2

Veja a seguir um exemplo de saída do comando anterior:

{
"Plaintext": "Gve+VE1JV8aufhDkPKeWceEt+vZaTYZCH25/OLPo+a4=", 
"KeyId": "arn:aws:kms:us-west-2:289799745972:key/eee4d613-4871-4cee-87d8-a54ad8d5251b", 
"CiphertextBlob": "AQIDAHiojOaIcTtQGK4gqEf6QcYuVUutMiW0y52tG63GqOknSgF0ZtnfmfqadzhfWUlRSx15AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQM/U3+BkE/yN5Jf0ckAgEQgDtoG9coTwG7bnPGx3c4hND8LAc4LEPnxd2BLQdJDOjqXU0LgudNfVUw4xNfWy2XCDgmSYV0nHU9EVbwkQ=="
}

3.    Inicie um backup do certificado e da chave privada na instância de origem (instância on-premises ou do EC2):

use master 
BACKUP CERTIFICATE TDE_Cert TO
FILE= 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\certificatename.cer'
WITH PRIVATE KEY (
FILE= 'C:\Program Files\Microsoft SQL Server\MSSQL15.SQL2019\MSSQL\DATA\privatekey.pvk',
ENCRYPTION BY PASSWORD='Gve+VE1JV8aufhDkPKeWceEt+vZaTYZCH25/OLPo+a4=')

4.    Carregue o arquivo do certificado de backup no bucket do S3 tde-bkt.

5.    Carregue o arquivo de chave privada no bucket do S3 tde-bkt. Após o upload, edite os metadados do arquivo de chave privada e especifique os seguintes valores:

  • Chave: x-amz-meta-rds-tde-pwd
  • Valor: CipertexBlob obtido na etapa 2.

6.    Restaure o certificado na instância do RDS:

exec
msdb.dbo.rds_restore_tde_certificate
@certificate_name='UserTDECertificate_ec2_tde_cert',
@certificate_file_s3_arn='arn:aws:s3:::tde-bkt/certificatename.cer',
@private_key_file_s3_arn='arn:aws:s3:::tde-bkt/privatekey.pvk',
@kms_password_key_arn='arn:aws:kms:us-west-2:aws-account-id:key/key-id';

7.    Execute o comando a seguir para restaurar o banco de dados:

exec msdb.dbo.rds_restore_database 
@restore_db_name='onpremdb',
@s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';

Informações relacionadas

Migrate TDE-enabled SQL Server databases to Amazon RDS for SQL Server (Migrar bancos de dados do SQL Server habilitados para TDE para o Amazon RDS para SQL Server)

Como faço para restaurar um arquivo de backup criptografado por KMS para o RDS para SQL Server a partir de um ambiente on-premises?