¿Cómo puedo restaurar un archivo de copia de seguridad cifrado o una copia de seguridad cifrada de Microsoft Azure en RDS para SQL Server desde un entorno local?
Quiero restaurar un archivo de copia de seguridad cifrado o una copia de seguridad cifrada de Microsoft Azure entre un entorno local y una instancia de Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server. ¿Cómo puedo hacer esto con la función de copia de seguridad y restauración nativa?
Descripción corta
El cifrado de copia de seguridad está disponible en SQL Server 2014 (12.x) y versiones posteriores. Puede especificar el algoritmo de cifrado y el cifrador (un certificado o una clave asimétrica) al crear una copia de seguridad. De este modo, se crea un archivo de copia de seguridad cifrado.
Nota: Esta función no es la misma que el cifrado TDE.
Resolución
Copias de seguridad cifradas
Nota: Antes de iniciar los siguientes pasos de resolución, asegúrese de haber creado lo siguiente:
- Un bucket de Amazon Simple Storage Service (Amazon S3).
- Una instancia de Amazon RDS configurada con TDE y SQLSERVER_BACKUP_RESTORE en el grupo de opciones.
1. Cree una clave maestra mediante el siguiente script en su cuenta local:
USE Master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD='InsertStrongPasswordHere'; GO
2. Cree un certificado protegido por la clave maestra en su cuenta local:
CREATE CERTIFICATE TDE_Cert WITH SUBJECT='Database_Encryption'; GO
3. Inicie una copia de seguridad nativa mediante el siguiente script.
Nota: Active la compresión para evitar problemas durante la restauración a 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. Cargue la copia de seguridad cifrada en el bucket tde-db de S3 mediante la consola de administración de AWS.
5. Ejecute el siguiente comando para restaurar la base de datos:
exec msdb.dbo.rds_restore_database @restore_db_name='onpremdb', @s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';
Copias de seguridad cifradas de Microsoft Azure
Nota: Esta resolución incluye pasos similares a los de las secciones anteriores. Sin embargo, la copia de seguridad cifrada se inicia en el contenedor de copia de seguridad de Microsoft Azure en lugar de en el almacenamiento local Antes de iniciar los siguientes pasos de resolución, asegúrese de haber creado lo siguiente:
- Un bucket de Amazon Simple Storage Service (Amazon S3).
- Una instancia de RDS configurada con el grupo de opciones TDE y SQLSERVER_BACKUP_RESTORE.
- Una cuenta local configurada con certificados para cifrar la copia de seguridad.
- Una cuenta de Microsoft Azure activa.
1. Cree una cuenta de almacenamiento en Microsoft Azure. Para obtener más información, consulte Crear una cuenta de almacenamiento en el sitio web de documentación de Microsoft.
2. Cree una credencial basada en la firma de acceso compartido. Para obtener más información, consulte Creación de tokens de SAS para los contenedores de almacenamiento en el sitio web de documentación de 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 una copia de seguridad cifrada nativa en el almacenamiento de 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
Nota: Amazon RDS no admite la restauración de copias de seguridad directamente desde los contenedores de almacenamiento de Microsoft Azure. Por lo tanto, debe descargar la copia de seguridad a un sistema intermediario.
4. Cargue el archivo de copia de seguridad al bucket de S3 (tde-db).
5. Para hacer una copia de seguridad y restaurar la clave privada y el certificado en la instancia de RDS, siga los pasos de la sección Resolver el error “Cannot find server certificate with thumbprint” (No se puede encontrar el certificado del servidor con huella digital).
6. Una vez cumplidos los requisitos previos, ejecute el siguiente comando para restaurar la copia de seguridad cifrada:
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 el error “Cannot find server certificate with thumbprint” (No se puede encontrar el certificado del servidor con huella digital)
Al restaurar las copias de seguridad cifradas en otro entorno donde los certificados no están configurados, se produce el siguiente error:
Cannot find server certificate with thumbprint '0xBA01F2AF71C3FB4A92C5F69BDE3EC8DB318D7D0E'
Para evitar el error anterior, haga lo siguiente:
1. Cree una nueva clave de AWS Key Management Service (AWS KMS) en la cuenta de AWS en la que realizará la restauración nativa.
2. Genere una clave de datos de AWS KMS para iniciar la copia de seguridad del certificado:
aws kms generate-data-key --key-id KMS-Key-ID --key-spec AES_256 --region us-west-2
A continuación se muestra un ejemplo del resultado del 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 una copia de seguridad del certificado y la clave privada en la instancia de origen (local o instancia de 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. Cargue el archivo del certificado de copia de seguridad en el bucket de S3 tde-bkt.
5. Cargue el archivo de clave privada en el bucket tde-bkt de S3. Tras subirlo, edite los metadatos del archivo de clave privada y, a continuación, especifique los siguientes valores:
- Clave: x-amz-meta-rds-tde-pwd
- Valor: CipertexBlob obtenido en la etapa 2.
6. Restaure el certificado en la instancia de 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. Ejecute el siguiente comando para restaurar la base de datos:
exec msdb.dbo.rds_restore_database @restore_db_name='onpremdb', @s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';
Información relacionada
Migrate TDE-enabled SQL Server databases to Amazon RDS for SQL Server (Migración de bases de datos de SQL Server con TDE a Amazon RDS para SQL Server)
How do I restore a KMS-encrypted backup file in RDS for SQL Server from an on-premises environment? (¿Cómo restauro un archivo de copia de seguridad cifrado por KMS en RDS para SQL Server desde un entorno local?)
Contenido relevante
- OFICIAL DE AWSActualizada hace un año
- OFICIAL DE AWSActualizada hace 6 meses
- OFICIAL DE AWSActualizada hace 2 años