我从 Amazon RDS 实例创建加密的 SQL 服务器备份。如何在 Windows 实例上下载和解密这些备份?

I create encrypted SQL Server backups from an Amazon RDS instance. How do I download and decrypt these backups on a Windows instance?

背景:我们有多个托管 SQL 服务器数据库的 Amazon RDS 实例,这些实例使用本机备份定期备份,并提供 KMS 密钥进行加密。在 RDS 实例上使用本机还原时,我们再次提供相同的 KMS 密钥,这工作得很好。

我现在需要一种下载和解密这些备份的方法,以便我可以在 Windows 实例上恢复它们​​。下载文件很容易,但解密却更具挑战性。我的代码看起来像这样:

var request = new GetObjectRequest
{
    BucketName = myBucketName,
    Key = myBackupsKeyName
};

using (var client = new AmazonS3EncryptionClient(RegionEndpoint.EUWest1, 
    new EncryptionMaterials(myKmsId)))
{
    using (var response = await client.GetObjectAsync(request))
    {        
        await response.WriteResponseStreamToFileAsync(myFilePath, 
            false, new CancellationToken());    
    }
}

我收到一条错误消息,听起来文件甚至没有使用 KMS 加密:

'Error decrypting non-KMS envelope key. EncryptionMaterials must have the AsymmetricProvider or SymmetricProvider set.'

我做错了什么?

您需要对S3做一个未加密的备份,然后下载。加密备份只能在 RDS 本身内恢复。

确保您使用正确的本机备份和还原程序

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html

exec msdb.dbo.rds_backup_database @source_db_name='database_name', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension', @overwrite_S3_backup_file=1, @type='differential';