

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

# 在 RDS for SQL Server 上備份與還原 TDE 憑證
<a name="TDE.BackupRestoreRDS"></a>

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.BackupRestoreRDS.Drop)。

您可以使用使用者 TDE 憑證從來源資料庫執行個體還原其他資料庫。要還原的資料庫必須使用相同的 TDE 憑證並開啟 TDE。您不必再次匯入 (還原) 同一個憑證。

**Topics**
+ [先決條件](#TDE.BackupRestoreRDS.Prereqs)
+ [限制](#TDE.Limitations)
+ [備份 TDE 憑證](#TDE.BackupRestoreRDS.Backup)
+ [還原 TDE 憑證](#TDE.BackupRestoreRDS.Restore)
+ [檢視還原的 TDE 憑證](#TDE.BackupRestoreRDS.Show)
+ [捨棄還原的 TDE 憑證](#TDE.BackupRestoreRDS.Drop)

## 先決條件
<a name="TDE.BackupRestoreRDS.Prereqs"></a>

務必先完成下列任務，您才能在 RDS for SQL Server 上備份或還 TDE 憑證。[設定原生備份與還原](SQLServer.Procedural.Importing.Native.Enabling.md) 中描述前三個。

1. 建立 Amazon S3 一般用途儲存貯體或目錄儲存貯體，以存放檔案以進行備份和還原。

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

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

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

   使用目錄儲存貯體時，除了[手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)具有目錄儲存貯體的 所需的許可之外，不需要額外的許可。

   使用 S3 資源時，除了 所需的許可之外，IAM 角色還需要下列許可[手動建立原生備份與還原的 IAM 角色](SQLServer.Procedural.Importing.Native.Enabling.md#SQLServer.Procedural.Importing.Native.Enabling.IAM)：
   + S3 儲存貯體資源上的 `s3:GetBucketAcl`、`s3:GetBucketLocation` 和 `s3:ListBucket`

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

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

1. 確定您有對稱加密 KMS 金鑰。您有下列選項：
   + 如果您的帳戶中有現有的 KMS 金鑰，您可以使用它。無需採取進一步動作。
   + 若您的帳戶中並無現有的對稱加密 KMS 金鑰，請藉由遵循《*AWS Key Management Service 開發人員指南*》中的[建立金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/create-keys.html#create-symmetric-cmk)來建立 KMS 金鑰。

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

   如需啟用 Oracle Amazon S3 整合的詳細資訊，請參閱 [整合 Amazon RDS for SQL Server 資料庫執行個體和 Amazon S3](User.SQLServer.Options.S3-integration.md)。

   請注意，目錄儲存貯體不支援 S3 整合。只有 需要此步驟[備份與還原內部部署資料庫的 TDE 憑證](TDE.BackupRestoreOnPrem.md)。

## 限制
<a name="TDE.Limitations"></a>

使用預存程序備份和還原 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、@、\$1、\$1 和底線 (\$1)。
+ `@certificate_file_s3_arn` 的副檔名必須為 .cer (不區分大小寫)。
+ `@private_key_file_s3_arn` 的副檔名必須為 .pvk (不區分大小寫)。
+ 私有金鑰檔案的 S3 中繼資料必須包含 `x-amz-meta-rds-tde-pwd` 標籤。如需詳細資訊，請參閱[備份與還原內部部署資料庫的 TDE 憑證](TDE.BackupRestoreOnPrem.md)。
+ RDS for SQL Server 不支援使用跨帳戶金鑰搭配 TDE。

## 備份 TDE 憑證
<a name="TDE.BackupRestoreRDS.Backup"></a>

若要備份 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` – 即使現有檔案不是備份檔案，只要是指定的名稱，就覆寫檔案。

**Example 備份 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 憑證
<a name="TDE.BackupRestoreRDS.Restore"></a>

您可以使用 `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。

**Example 還原 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 憑證
<a name="TDE.BackupRestoreRDS.Show"></a>

您可以使用 `rds_fn_list_user_tde_certificates` 函數來檢視已還原 (已匯入) 的使用者 TDE 憑證。具有下列語法。

```
SELECT * FROM msdb.dbo.rds_fn_list_user_tde_certificates();
```

輸出結果與以下內容相似。並非所有的資料欄均會在此顯示。


|  |  |  |  |  |  |  |  |  |  |  | 
| --- |--- |--- |--- |--- |--- |--- |--- |--- |--- |--- |
| name | certificate\$1id | principal\$1id | pvt\$1key\$1encryption\$1type\$1desc | issuer\$1name | cert\$1serial\$1number | thumbprint | subject | start\$1date | expiry\$1date | pvt\$1key\$1last\$1backup\$1date | 
| UserTDECertificate\$1tde\$1cert | 343 | 1 | ENCRYPTED\$1BY\$1MASTER\$1KEY | 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 憑證
<a name="TDE.BackupRestoreRDS.Drop"></a>

若要捨棄您未使用的已還原 (已匯入) 使用者 TDE 憑證，請使用 `rds_drop_tde_certificate` 預存程序。具有下列語法。

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_certificate_name';
```

以下是必要參數：
+ `@certificate_name` – 所要捨棄 TDE 憑證的名稱。

您只能捨棄已還原 (已匯入) 的 TDE 憑證。您不能捨棄 RDS 建立的憑證。

**Example 捨棄 TDE 憑證**  

```
EXECUTE msdb.dbo.rds_drop_tde_certificate @certificate_name='UserTDECertificate_myTDEcertificate';
```