我从 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';
背景:我们有多个托管 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';