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

时间:2018-08-24 11:21:39

标签: amazon-web-services amazon-s3 aws-sdk amazon-rds aws-kms

背景:我们有多个托管SQL Server数据库的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加密:

  

'解密非KMS信封密钥时出错。 EncryptionMaterials必须具有AsymmetricProvider或SymmetricProvider设置。'

我在做什么错了?

1 个答案:

答案 0 :(得分:1)

您需要对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';