AWS KMS key 管理
Amazon RDS は、キー管理のために AWS Key Management Service (AWS KMS) と自動的に統合されます。Amazon RDS では、エンベロープ暗号化が使用されます。エンベロープ暗号化の仕組みの詳細については、AWS Key Management Service デベロッパーガイドの「エンベロープ暗号化」を参照してください。
2 種類の AWS KMS キーを使用して、DB インスタンスを暗号化できます。
-
KMS キーに対するフル制御の権限が必要な場合は、カスタマーマネージドキーを作成する必要があります。カスタマーマネージドキーの詳細については、AWS Key Management Service デベロッパーガイドの「カスタマーマネージドキー」を参照してください。
スナップショットを共有する AWS アカウントの AWS マネージドキー を使って暗号化されたスナップショットを共有することはできません。
-
AWS マネージドキー は、お客様のアカウントにある KMS キーであり、AWS KMS と統合されている AWS のサービスがお客様に代わって作成し、管理し、使用します。デフォルトでは、RDS AWS マネージドキー (
aws/rds
) が暗号化に使用されます。RDS AWS マネージドキー の管理、ローテーション、削除はできません。AWS マネージドキー の詳細については、「AWS Key Management Service Developer Guide」の「AWS マネージドキー 」を参照してください。
Amazon RDS の暗号化された DB インスタンスに使用される KMS キーを管理するには、AWS KMS コンソール
カスタマーマネージドキーの使用の承認
RDS が暗号化オペレーションでカスタマーマネージドキーを使用すると、RDS リソースを作成または変更するユーザーに代わって動作します。
カスタマーマネージドキーを使用して、RDS リソースを作成するには、カスタマーマネージドキーで次の操作を呼び出すためのアクセス許可がユーザーに必要になります。
-
kms:CreateGrant
-
kms:DescribeKey
これらの必要なアクセス許可は、キーポリシーか、キーポリシーで許可されている場合は IAM ポリシーで指定できます。
ヒント
最小権限のプリンシパルに従うには、kms:CreateGrant
へのフルアクセスを許可しないでください。代わりに、ユーザーに代わって AWS サービスによって許可が作成された場合にのみ、kms:ViaService 条件キーを使用して、ユーザーが KMS キーに許可を作成できるようにします。
さまざまな方法で、IAM ポリシー をより厳しくすることができます。例えば、RDS から発信されるリクエストにのみカスタマーマネージドキーの使用を許可する場合、rds.
値を指定して kms:ViaService 条件キーを使用します。また、暗号化にカスタマーマネージドキーを使用する条件として、Amazon RDS 暗号化コンテキスト でキーまたは値を使用することもできます。<region>
.amazonaws.com
詳細については、「AWS Key Management Service デベロッパーガイド」の「他のアカウントのユーザーに KMS キーの使用を許可する」と「AWS KMS のキーポリシー」を参照してください。
Amazon RDS 暗号化コンテキスト
RDS が KMS キーを使用する場合、または Amazon EBS が RDS の代わりに KMS キーを使用する場合、サービスは暗号化コンテキストを指定します。暗号化コンテキストは、データの整合性を保証するために AWS KMS で使用される追加の認証データ (AAD) です。暗号化オペレーションで暗号化コンテキストを指定すると、サービスは復号オペレーションでも同じ暗号化コンテキストを指定する必要があります。そうしないと、復号は失敗します。暗号化コンテキストは AWS CloudTrail
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" }