本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 RDS for SQL Server 上備份與還原 TDE 憑證
RDS for SQL Server 提供預存程序,可供備份、還原與捨棄 TDE 憑證。RDS for SQL Server 也提供一個函數可用於檢視還原的使用者 TDE 憑證。
使用者 TDE 憑證用於將資料庫還原至內部部署且 TDE 已開啟的 RDS for SQL Server。這些憑證的字首為 UserTDECertificate_
。還原資料庫之後,及使其可供使用之前,RDS 會修改 TDE 已開啟的資料庫,以使用 RDS 產生的 TDE 憑證。這些憑證的字首為 RDSTDECertificate
。
使用者 TDE 憑證會保留在 RDS for SQL Server 資料庫執行個體上,除非您使用 rds_drop_tde_certificate
預存程序放置這些憑證。如需詳細資訊,請參閱捨棄還原的 TDE 憑證。
您可以使用使用者 TDE 憑證從來源資料庫執行個體還原其他資料庫。要還原的資料庫必須使用相同的 TDE 憑證並開啟 TDE。您不必再次匯入 (還原) 同一個憑證。
先決條件
務必先完成下列任務,您才能在 RDS for SQL Server 上備份或還 TDE 憑證。設定原生備份與還原 中描述前三個。
-
建立 Amazon S3 儲存貯體,以用於儲存要備份和還原的檔案。
建議您為資料庫備份與 TDE 憑證備份使用個別的儲存貯體。
-
建立用於備份和還原檔案的 IAM 角色。
IAM 角色必須是 AWS KMS key的使用者,也是其管理員。
除了 SQL Server 原生備份和還原所需的許可之外,IAM 角色還需要以下許可:
-
S3 儲存貯體資源上的
s3:GetBucketAcl
、s3:GetBucketLocation
和s3:ListBucket
-
*
資源上的s3:ListAllMyBuckets
-
-
將
SQLSERVER_BACKUP_RESTORE
選項新增至資料庫執行個體上的選項群組。這是
TRANSPARENT_DATA_ENCRYPTION
(TDE
) 選項新增的部分。 -
確定您有對稱加密 KMS 金鑰。您有下列選項:
-
如果您的帳戶中有現有的 KMS 金鑰,您可以使用它。無需採取進一步動作。
-
若您的帳戶中並無現有的對稱加密 KMS 金鑰,請藉由遵循《AWS Key Management Service 開發人員指南》中的建立金鑰來建立 KMS 金鑰。
-
-
啟用 Amazon S3 整合,在資料庫執行個體與 Amazon S3 之間傳輸檔案。
如需啟用 Oracle Amazon S3 整合的詳細資訊,請參閱 將 Amazon RDS for SQL Server 資料庫執行個體與 Amazon S3 整合。
限制
使用預存程序備份和還原 TDE 憑證具有以下限制:
-
SQLSERVER_BACKUP_RESTORE
與TRANSPARENT_DATA_ENCRYPTION
(TDE
) 選項必須新增至與資料庫執行個體產生關聯的選項群組。 -
多可用區域資料庫執行個體不支援 TDE 憑證備份和還原。
-
不支援取消 TDE 憑證備份和還原任務。
-
您不能將使用者 TDE 憑證用於 RDS for SQL Server 資料庫執行個體上任何其他資料庫的 TDE 加密。您可以將它用於從 TDE 已啟用且使用相同 TDE 憑證的來源資料庫執行個體中僅還原其他資料庫。
-
您只能刪除使用者 TDE 憑證。
-
RDS 支援的使用者 TDE 憑證數量上限為 10 個。如果數量超過 10 個,請捨棄未使用的 TDE 憑證,然後再試一次。
-
憑證名稱不能為空白或為 null。
-
還原憑證時,憑證名稱不能包含關鍵字
RDSTDECERTIFICATE
,且開頭必須為UserTDECertificate_
字首。 -
@certificate_name
參數只能包含以下字元:a-z、0-9、@、$、# 和底線 (_)。 -
@certificate_file_s3_arn
的副檔名必須為 .cer (不區分大小寫)。 -
@private_key_file_s3_arn
的副檔名必須為 .pvk (不區分大小寫)。 -
私有金鑰檔案的 S3 中繼資料必須包含
x-amz-meta-rds-tde-pwd
標籤。如需詳細資訊,請參閱備份和還原內部部署資料庫的TDE憑證。
備份 TDE 憑證
若要備份 TDE 憑證,請使用 rds_backup_tde_certificate
預存程序。具有下列語法。
EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='UserTDECertificate_
certificate_name
| RDSTDECertificatetimestamp
', @certificate_file_s3_arn='arn:aws:s3:::bucket_name
/certificate_file_name.cer
', @private_key_file_s3_arn='arn:aws:s3:::bucket_name
/key_file_name.pvk
', @kms_password_key_arn='arn:aws:kms:region
:account-id
:key/key-id
', [@overwrite_s3_files=0|1
];
下列是必要參數:
-
@certificate_name
– 所要備份 TDE 憑證的名稱。 -
@certificate_file_s3_arn
– Amazon S3 中憑證備份檔案的目的地 Amazon Resource Name (ARN)。 -
@private_key_file_s3_arn
– 可保護 TDE 憑證的私有金鑰檔案的目的地 S3 ARN。 -
@kms_password_key_arn
– 用於加密私有金鑰密碼的對稱 KMS 金鑰其 ARN。
以下參數為選用:
-
@overwrite_s3_files
– 指出在 S3 中是否覆寫現有的憑證與私有金鑰檔案:-
0
– 不覆寫現有檔案。此為預設值。將
@overwrite_s3_files
設為 0 時,如果檔案已存在,則傳回錯誤。 -
1
– 即使現有檔案不是備份檔案,只要是指定的名稱,就覆寫檔案。
-
範例 備份 TDE 憑證
EXECUTE msdb.dbo.rds_backup_tde_certificate @certificate_name='RDSTDECertificate20211115T185333', @certificate_file_s3_arn='arn:aws:s3:::
TDE_certs
/mycertfile.cer
', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs
/mykeyfile.pvk
', @kms_password_key_arn='arn:aws:kms:us-west-2
:123456789012
:key/AKIAIOSFODNN7EXAMPLE
', @overwrite_s3_files=1
;
還原 TDE 憑證
您可以使用 rds_restore_tde_certificate
預存程序來還原 (匯入) 使用者 TDE 憑證。具有下列語法。
EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_
certificate_name
', @certificate_file_s3_arn='arn:aws:s3:::bucket_name
/certificate_file_name.cer
', @private_key_file_s3_arn='arn:aws:s3:::bucket_name
/key_file_name.pvk
', @kms_password_key_arn='arn:aws:kms:region
:account-id
:key/key-id
';
下列是必要參數:
-
@certificate_name
– 所要還原 TDE 憑證的名稱。名稱必須以UserTDECertificate_
字首開頭。 -
@certificate_file_s3_arn
– 用於還原 TDE 憑證的備份檔案其 S3 ARN。 -
@private_key_file_s3_arn
– 待還原的 TDE 憑證其私有金鑰備份檔案的 S3 ARN。 -
@kms_password_key_arn
– 用於加密私有金鑰密碼的對稱 KMS 金鑰其 ARN。
範例 還原 TDE 憑證
EXECUTE msdb.dbo.rds_restore_tde_certificate @certificate_name='UserTDECertificate_
myTDEcertificate
', @certificate_file_s3_arn='arn:aws:s3:::TDE_certs
/mycertfile.cer
', @private_key_file_s3_arn='arn:aws:s3:::TDE_certs
/mykeyfile.pvk
', @kms_password_key_arn='arn:aws:kms:us-west-2
:123456789012
:key/AKIAIOSFODNN7EXAMPLE
';
檢視還原的 TDE 憑證
您可以使用 rds_fn_list_user_tde_certificates
函數來檢視已還原 (已匯入) 的使用者 TDE 憑證。具有下列語法。
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
輸出結果與以下內容相似。並非所有的資料欄均會在此顯示。
name |
certificate_id |
principal_id |
pvt_key_encryption_type_desc |
issuer_name |
cert_serial_number |
thumbprint |
subject |
start_date |
expiry_date |
pvt_key_last_backup_date |
UserTDECertificate_tde_cert |
343 |
1 |
ENCRYPTED_BY_MASTER_KEY |
AnyCompany Shipping |
79 3e 57 a3 69 fd 1d 9e 47 2c 32 67 1d 9c ca af |
0x6BB218B34110388680B FE1BA2D86C695096485B5 |
AnyCompany Shipping |
2022-04-05 19:49:45.0000000 |
2023-04-05 19:49:45.0000000 |
NULL |
捨棄還原的 TDE 憑證
若要捨棄您未使用的已還原 (已匯入) 使用者 TDE 憑證,請使用 rds_drop_tde_certificate
預存程序。具有下列語法。
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_
certificate_name
';
以下是必要參數:
-
@certificate_name
– 所要捨棄 TDE 憑證的名稱。
您只能捨棄已還原 (已匯入) 的 TDE 憑證。您不能捨棄 RDS 建立的憑證。
範例 捨棄 TDE 憑證
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_
myTDEcertificate
';