New user sign up using AWS Builder ID
New user sign up using AWS Builder ID is currently unavailable on re:Post. To sign up, please use the AWS Management Console instead.
如何從內部部署環境還原 RDS for SQL Server 中的加密備份檔案或加密的 Microsoft Azure 備份?
我想要將加密的備份檔案或加密的 Microsoft Azure 備份在內部部署環境和 Amazon Relational Database Service (Amazon RDS) for Microsoft SQL Server 執行個體之間進行還原。如何使用原生備份與還原功能執行此操作?
簡短描述
備份加密可在 SQL Server 2014 (12.x) 及更新版本中使用。您可以在建立備份時指定加密演算法和加密程式 (憑證或非對稱金鑰)。這樣一來,即可建立一個加密的備份檔案。
**注意:**此功能與 TDE 加密不同。
解決方案
加密備份
**注意:**在開始執行下列解決方案步驟之前,請確認您已建立下列項目:
- Amazon Simple Storage Service (Amazon S3) 儲存貯體。
- 使用選項群組中的 TDE 和 SQLSERVER_BACKUP_RESTORE 設定的 Amazon RDS 執行個體。
1. 使用內部部署帳戶中的下列指令碼建立主金鑰:
USE Master; GO CREATE MASTER KEY ENCRYPTION BY PASSWORD='InsertStrongPasswordHere'; GO
2. 在內部部署帳戶中建立受主金鑰保護的憑證:
CREATE CERTIFICATE TDE_Cert WITH SUBJECT='Database_Encryption'; GO
3. 使用以下指令碼啟動原生備份。
注意:開啟壓縮,以避免在還原至 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. 使用 AWS 管理主控台,將加密的備份上傳到 S3 儲存貯體 tde-db。
5. 執行下列命令以還原資料庫:
exec msdb.dbo.rds_restore_database @restore_db_name='onpremdb', @s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';
加密的 Microsoft Azure 備份
**注意:**此解決方案涉及與前面章節類似的步驟。不過,加密的備份會啟動至 Microsoft Azure 備份容器,而非本機儲存體。在開始執行下列解決方案步驟之前,請確認您已建立下列項目:
- Amazon Simple Storage Service (Amazon S3) 儲存貯體。
- 使用 TDE 和 SQLSERVER_BACKUP_RESTORE 選項群組設定的 RDS 執行個體。
- 使用憑證設定的內部部署帳戶,用於加密備份。
- 作用中的 Microsoft Azure 帳戶。
1. 在 Microsoft Azure 中建立儲存體帳戶。如需詳細資訊,請參閱 Microsoft 文件網站上的建立儲存體帳戶。
2. 根據共用存取簽章建立憑證。如需詳細資訊,請參閱 Microsoft 文件網站上的為您的儲存體容器建立 SAS 權杖。
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. 啟動原生加密備份至 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
**注意:**Amazon RDS 不支援直接從 Microsoft Azure 儲存體容器還原備份。因此,您必須將備份下載到中介系統。
4. 將備份檔案上傳到 S3 儲存貯體 (tde-db)。
5. 要將私有金鑰和憑證備份及還原至 RDS 執行個體,請遵循解決 "Cannot find server certificate with thumbprint" (找不到含有指紋的伺服器憑證) 錯誤一節中的步驟執行。
6. 先決條件就緒之後,執行下列命令以還原加密的備份:
exec msdb.dbo.rds_restore_database @restore_db_name='AzureBackupEncrypted', @s3_arn_to_restore_from='arn:aws:s3:::tde-db/backup/azure-encrypted.bak'
解決 "Cannot find server certificate with thumbprint" (找不到含有指紋的伺服器憑證) 錯誤
在未設定憑證的其他環境中還原加密的備份會導致下列錯誤:
Cannot find server certificate with thumbprint '0xBA01F2AF71C3FB4A92C5F69BDE3EC8DB318D7D0E'
要避免上述錯誤,請執行下列動作:
1. 在要執行原生還原的 AWS 帳戶中建立新的 AWS Key Management Service (KMS) key。
2. 產生 AWS KMS 資料金鑰,以啟動憑證的備份:
aws kms generate-data-key --key-id KMS-Key-ID --key-spec AES_256 --region us-west-2
以下是上述命令的範例輸出:
{ "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. 在來源執行個體 (內部部署或 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. 將備份憑證檔案上傳到 S3 儲存貯體 tde-bkt。
5. 將私有金鑰檔案上傳到 S3 儲存貯體 tde-bkt。上傳之後,編輯私有金鑰檔案的中繼資料,然後指定下列值:
- 金鑰:x-amz-meta-rds-tde-pwd
- 值:步驟 2 中獲取的 CipertexBlob。
6. 還原 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. 執行下列命令以還原資料庫:
exec msdb.dbo.rds_restore_database @restore_db_name='onpremdb', @s3_arn_to_restore_from='arn:aws:s3:::tde-db/EncryptedBackupFromOnpremise.bak';
相關資訊

相關內容
- 已提問 2 年前lg...
- 已提問 2 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前