背景:我们有多个托管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设置。'
我在做什么错了?
答案 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';