

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

# AWS KMS key 管理
<a name="Overview.Encryption.Keys"></a>

 Amazon RDS 會自動與 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/) 整合以進行金鑰管理。Amazon RDS 會使用信封加密。如需信封加密的詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的[信封加密](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#enveloping)。

您可以使用兩種類型的 AWS KMS 金鑰來加密資料庫執行個體。
+ 如果想要完全控制 KMS 金鑰，您必須建立*客戶受管金鑰*。如需客戶受管金鑰的詳細資訊，請參閱《*AWS Key Management Service 開發人員指南*》中的[客戶受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)。
+  *AWS 受管金鑰* 是帳戶中的 KMS 金鑰，由與 整合的 AWS 服務代表您建立、管理和使用 AWS KMS。根據預設，RDS AWS 受管金鑰 (`aws/rds`) 用於加密。您無法管理、輪換或刪除 RDS AWS 受管金鑰。如需 的詳細資訊 AWS 受管金鑰，請參閱《 *AWS Key Management Service 開發人員指南*[AWS 受管金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk)》中的 。

若要管理用於 Amazon RDS 加密資料庫執行個體 KMS 金鑰，請在 [AWS KMS 主控台](https://console.aws.amazon.com/kms)、 AWS CLI或 AWS KMS API 中使用 [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)。若要檢視透過 AWS 受管或客戶受管金鑰採取的每項動作稽核日誌，請使用 [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/)。如需有關金鑰轉換的詳細資訊，請參閱[轉換 AWS KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)。

## 授權使用客戶受管金鑰
<a name="Overview.Encryption.Keys.Authorizing"></a>

當 RDS 在密碼編譯操作中使用客戶受管金鑰時，它會代表建立或變更 RDS 資源的使用者。

若要使用客戶受管金鑰建立 RDS 資源，使用者必須具備呼叫客戶受管金鑰下列作業的許可：
+  `kms:CreateGrant` 
+  `kms:DescribeKey` 

您可以在金鑰政策或在 IAM 政策中指定這些必要的許可 (如果金鑰政策允許)。

**重要**  
當您使用 Amazon RDS 等受管服務之 AWS KMS 金鑰政策中所有資源 (\$1) 的明確拒絕陳述式時，您必須指定允許資源擁有帳戶的條件。如果沒有此條件，操作可能會失敗，即使拒絕規則包含 IAM 使用者的例外狀況。

**提示**  
若要遵循最低權限原則人，請勿允許 `kms:CreateGrant` 的完整存取。反之，使用 [kms:ViaService 條件金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)，只允許使用者在由 AWS 服務代使用者建立授予時，才在 KMS 金鑰上建立授予。

您可以透過各種方式使 IAM 政策更加嚴格。例如，若要允許客戶受管金鑰僅用於源自 RDS 的請求，您可以搭配 `rds.<region>.amazonaws.com` 值使用 [kms:ViaService 條件金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)。您也可以使用 [Amazon RDS 加密內容](#Overview.Encryption.Keys.encryptioncontext) 中的金鑰或值作為條件，以便將客戶受管金鑰用於加密。

如需詳細資訊，請參閱《AWS Key Management Service 開發人員指南》**中的[允許其他帳戶使用者使用 KMS 金鑰](https://docs.aws.amazon.com/kms/latest/developerguide/key-policy-modifying-external-accounts.html)和 [AWS KMS中的金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies)。

## Amazon RDS 加密內容
<a name="Overview.Encryption.Keys.encryptioncontext"></a>

當 RDS 使用您的 KMS 金鑰時，或者當 Amazon EBS 代表 RDS 使用 KMS 金鑰時，服務會指定[加密內容](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#encrypt_context)。加密內容是[額外的驗證資料](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) (AAD)， AWS KMS 用於確保資料完整性。為加密操作指定加密內容時，此服務必須為解密操作指定相同的加密內容。否則，解密會失敗。加密內容也會寫入 [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) 日誌檔，以協助您了解為何使用指定的 KMS 金鑰。您的 CloudTrail 日誌可能包含多個項目來描述 KMS 金鑰使用情形，但每個日誌項目中的加密內容可協助您判斷該特定使用情形的原因。

至少，Amazon RDS 一律使用資料庫執行個體 ID 做為加密內容，如下列 JSON 格式範例：

```
{ "aws:rds:db-id": "db-CQYSMDPBRZ7BPMH7Y3RTDG5QY" }
```

這個加密內容可協助您識別您的 KMS 金鑰所用的資料庫執行個體。

當您的 KMS 金鑰用於特定的資料庫執行個體和特定的 Amazon EBS 磁碟區，資料庫執行個體 ID 和 Amazon EBS 磁碟區 ID 都會用於加密內容，如下列 JSON 格式範例：

```
{
  "aws:rds:db-id": "db-BRG7VYS3SVIFQW7234EJQOM5RQ",
  "aws:ebs:id": "vol-ad8c6542"
}
```