在 RDS for SQL Server 上備份與還原 TDE 憑證 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在 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 憑證。設定原生備份與還原 中描述前三個。

  1. 建立 Amazon S3 儲存貯體,以用於儲存要備份和還原的檔案。

    建議您為資料庫備份與 TDE 憑證備份使用個別的儲存貯體。

  2. 建立用於備份和還原檔案的 IAM 角色。

    IAM 角色必須是 AWS KMS key的使用者,也是其管理員。

    除了 SQL Server 原生備份和還原所需的許可之外,IAM 角色還需要以下許可:

    • S3 儲存貯體資源上的 s3:GetBucketAcls3:GetBucketLocations3:ListBucket

    • * 資源上的 s3:ListAllMyBuckets

  3. SQLSERVER_BACKUP_RESTORE 選項新增至資料庫執行個體上的選項群組。

    這是 TRANSPARENT_DATA_ENCRYPTION (TDE) 選項新增的部分。

  4. 確定您有對稱加密 KMS 金鑰。您有下列選項:

    • 如果您的帳戶中有現有的 KMS 金鑰,您可以使用它。無需採取進一步動作。

    • 若您的帳戶中並無現有的對稱加密 KMS 金鑰,請藉由遵循《AWS Key Management Service 開發人員指南》中的建立金鑰來建立 KMS 金鑰。

  5. 啟用 Amazon S3 整合,在資料庫執行個體與 Amazon S3 之間傳輸檔案。

    如需啟用 Oracle Amazon S3 整合的詳細資訊,請參閱 將 Amazon RDS for SQL Server 資料庫執行個體與 Amazon S3 整合

限制

使用預存程序備份和還原 TDE 憑證具有以下限制:

  • SQLSERVER_BACKUP_RESTORETRANSPARENT_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';