

# 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)」を参照してください。

2 種類の AWS KMS キーを使用して、DB インスタンスを暗号化できます。
+ KMS キーに対するフル制御の権限が必要な場合は、*カスタマーマネージドキー*を作成する必要があります。カスタマーマネージドキーの詳細については、*AWS Key Management Service デベロッパーガイド*の「[Customer managed keys](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#customer-cmk)」を参照してください。
+  *AWS マネージドキー* は、お客様のアカウントにある KMS キーであり、AWS KMS と統合されている AWS のサービスがお客様に代わって作成し、管理し、使用します。デフォルトでは、RDS AWS マネージドキー (`aws/rds`) が暗号化に使用されます。RDS AWS マネージドキー の管理、ローテーション、削除はできません。AWS マネージドキー の詳細については、「*AWS Key Management Service Developer Guide*」の「[AWS マネージドキー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk) 」を参照してください。

Amazon RDS の暗号化された DB インスタンスに使用される KMS キーを管理するには、[AWS KMS コンソール](https://console.aws.amazon.com/kms)の [AWS Key Management Service (AWS KMS)](https://docs.aws.amazon.com/kms/latest/developerguide/)、AWS CLI、または AWS KMS API を使用します。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` へのフルアクセスを許可しないでください。代わりに、ユーザーに代わって AWS サービスによって許可が作成された場合にのみ、[kms:ViaService 条件キー](https://docs.aws.amazon.com/kms/latest/developerguide/policy-conditions.html#conditions-kms-via-service)を使用して、ユーザーが 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)を指定します。暗号化コンテキストは、データの整合性を保証するために AWS KMS で使用される[追加の認証データ](https://docs.aws.amazon.com/crypto/latest/userguide/cryptography-concepts.html#term-aad) (AAD) です。暗号化オペレーションで暗号化コンテキストを指定すると、サービスは復号オペレーションでも同じ暗号化コンテキストを指定する必要があります。そうしないと、復号は失敗します。暗号化コンテキストは [AWS CloudTrail](https://aws.amazon.com/cloudtrail/) ログにも書き込まれるため、特定の KMS キーが使用された理由を理解するのに役立ちます。CloudTrail ログには KMS キーの使用を説明する多くのエントリが含まれている場合があります。各ログエントリの暗号化コンテキストは、その特定の使用理由を判断するのに役立ちます。

少なくとも Amazon RDS は、次の JSON 形式の例のように、暗号化コンテキストに DB インスタンス ID を常に使用します。

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

この暗号化コンテキストにより、KMS キーが使用された DB インスタンスを識別することができます。

KMS キーが特定の DB インスタンスと特定の Amazon EBS ボリュームに使用されると、次の JSON 形式の例のように、DB インスタンス ID と Amazon EBS ボリューム ID の両方が暗号化コンテキストに使用されます。

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