DynamoDB の保管時の暗号化の使用に関する注意事項 - Amazon DynamoDB

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

DynamoDB の保管時の暗号化の使用に関する注意事項

Amazon DynamoDB で保管時の暗号化を使用する場合は、以下の点を考慮してください。

すべてのテーブルデータの暗号化

保管時のサーバー側の暗号化は、すべての DynamoDB テーブルデータで有効になり、無効にできません。テーブル内の項目のサブセットのみを暗号化することはできません。

保管時の暗号化は、永続的ストレージメディアの静的 (保管時) のデータのみを暗号化します。転送中のデータあるいは使用中のデータでデータの安全性が考慮される場合には、追加の対策を実行する必要がある場合があります。

  • 転送中のデータ: DynamoDB のすべてのデータは転送時に暗号化されます。デフォルトでは、DynamoDB との通信において、Secure Sockets Layer (SSL)/Transport Layer Security (TLS) 暗号化を使用してネットワークトラフィックを保護する HTTPS プロトコルが使用されます。

  • 使用中のデータ: DynamoDB 送信する前のデータを保護するには、クライアント側の暗号化を使用します。詳細については、「Amazon DynamoDB Encryption Client デベロッパーガイド」の「クライアント側とサーバー側の暗号化」を参照してください。

暗号化されたテーブルでストリーミングを使用できます。DynamoDB Streams は、テーブルレベルの暗号化キーを使用して常に暗号化されます。詳細については、「DynamoDB Streams の変更データキャプチャ」を参照してください。

DynamoDB バックアップが暗号化され、バックアップから復元されたテーブルでも暗号化が有効になります。 AWS 所有のキー、 AWS マネージドキー、またはカスタマーマネージドキーを使用して、バックアップデータを暗号化できます。詳細については、「DynamoDB のオンデマンドバックアップおよび復元の使用」を参照してください。

ローカルセカンダリインデックスおよびグローバルセカンダリインデックスは、ベーステーブルと同じキーを使用して暗号化されます。

暗号化タイプ

注記

カスタマーマネージドキーは、グローバルテーブルバージョン 2017 ではサポートされていません。DynamoDB グローバルテーブルでカスタマーマネージドキーを使用する場合は、テーブルをグローバルテーブルバージョン 2019 にアップグレードしてから有効にする必要があります。

では AWS Management Console、 AWS マネージドキー またはカスタマーマネージドキーを使用してデータを暗号化KMSする場合、暗号化タイプは です。 AWS 所有のキー を使用すると、暗号化タイプは DEFAULT になります。Amazon DynamoDB API では、 AWS マネージドキー またはカスタマーマネージドキーを使用する場合、暗号化タイプは KMS です。暗号化タイプがない場合、データは AWS 所有のキー を使用して暗号化されます。 AWS 所有のキー、 AWS マネージドキー、カスタマーマネージドキーはいつでも切り替えることができます。コンソール、 AWS Command Line Interface (AWS CLI)、または Amazon DynamoDB API を使用して、暗号化キーを切り替えることができます。

カスタマーマネージドキーを使用する場合、次の制限に注意してください。

  • DynamoDB アクセラレーター (DAX) クラスターではカスタマーマネージドキーは使用できません。詳細については、「保管時の DAX 暗号化」を参照してください。

  • カスタマーマネージドキーを使用して、トランザクションを使用するテーブルを暗号化できます。ただし、トランザクションの伝達の堅牢性を確保するために、トランザクションリクエストのコピーはサービスによって一時的に保存され、 AWS 所有のキー を使用して暗号化されます。テーブルとセカンダリインデックスのコミット済みデータは、カスタマーマネージドキーを使用して常に保管時に暗号化されます。

  • カスタマーマネージドキーを使用して、Contributor Insights を使用するテーブルを暗号化できます。ただし、 に送信されるデータは で暗号化 Amazon CloudWatch されます AWS 所有のキー。

  • 新しいカスタマーマネージドキーに移行する場合は、プロセスが完了するまで元のキーを有効にしておいてください。新しいキーでデータを暗号化する前に、元のキー AWS でデータを復号する必要があります。テーブルの SSEDescription ステータスが有効になり、新しいカスタマーマネージドキーMasterKeyArn の KMS が表示されると、プロセスは完了します。この時点で、元のキーを無効にするか、削除のスケジュールを設定できます。

  • 新しいカスタマー管理のキーが表示されると、テーブルと新しいオンデマンドバックアップが新しいキーで暗号化されます。

  • 既存のオンデマンドバックアップは、バックアップの作成時に使用されたカスタマー管理のキーで暗号化されたままになります。これらのバックアップを復元するには、同じキーが必要です。 DescribeBackup API を使用してバックアップの SSEDescription を表示することで、各バックアップが作成された期間のキーを特定できます。

  • カスタマーマネージドキーを無効化した場合、または削除をスケジュールした場合、DynamoDB Streams 内のデータは 24 時間保持されます。作成後 24 時間を超えた未取得のアクティビティデータはすべて、トリミングの対象となります。

  • カスタマーマネージドキーを無効化した場合、または削除をスケジュールした場合、有効期限 (TTL) は 30 分間続きます。これらの TTL 削除は引き続き DynamoDB Streams に出力され、標準のトリミングまたは保持間隔が適用されます。

    詳細については、「キーの有効化」と「キーの削除」を参照してください。

KMS キーとデータキーを使用する

DynamoDB の保管時の暗号化機能は、 AWS KMS key とデータキーの階層を使用してテーブルデータを保護します。DynamoDB は、同じキー階層を使用して、DynamoDB Streams、グローバルテーブル、およびバックアップが耐久性のあるメディアに書き込まれるときに保護します。

DynamoDB にテーブルを実装する前に、暗号化戦略を計画することをお勧めします。機密データまたは機密データを DynamoDB に保存する場合は、クライアント側の暗号化をプランに含めることを検討してください。これにより、データをできるだけ送信元に近い状態で暗号化し、ライフサイクル全体にわたってデータを確実に保護できます。詳細については、「DynamoDB 暗号化クライアント」ドキュメントを参照してください。

AWS KMS key

保存時の暗号化機能は、 AWS KMS key の DynamoDB テーブルを保護します。デフォルトでは、DynamoDB は AWS 所有のキー (DynamoDB サービスアカウントで作成および管理されるマルチテナントキー) を使用します。ただし、DynamoDB テーブルは、カスタマーマネージドキーまたは AWS アカウント の DynamoDB (aws/dynamodb) 用で暗号化できます。テーブルごとに異なる KMS キーを選択できます。テーブル用に選択した KMS キーも、ローカルおよびグローバルのセカンダリインデックス、ストリーム、バックアップの暗号化に使用されます。

テーブルを作成または更新するときは、テーブル用の KMS キーを選択します。テーブルの KMS キーは、DynamoDB コンソールまたは UpdateTableオペレーションを使用していつでも変更できます。キーの切り替えプロセスはシームレスであり、ダウンタイムやサービスの低下を必要としません。

重要

DynamoDB は、対称KMS キーのみをサポートします。非対称 KMS キーを使用して DynamoDB テーブルを暗号化することはできません。

カスタマーマネージドキーを使用して次の機能を取得します。

次のいずれかの機能 AWS マネージドキー が必要な場合は、 を使用します。

ただし、 AWS 所有のキー は無料で、その使用はAWS KMS リソースまたはリクエストのクォータにはカウントされません。カスタマーマネージドキー および AWS マネージドキー には、API コールごとに料金が発生し、これらの KMS キーには AWS KMS クォータが適用されます。

テーブルキー

DynamoDB は、テーブルの KMS キーを使用して、テーブルキーと呼ばれるテーブルの一意のデータキー生成して暗号化します。テーブルキーは、暗号化されたテーブルの存続期間中は保持されます。

テーブルキーは、キー暗号化キーとして使用されます。DynamoDB は、このテーブルキーを使用して、テーブルデータの暗号化に使用されるデータ暗号化キーを保護します。DynamoDB は、テーブル内の基礎となる各構造に対して一意のデータ暗号化キーを生成しますが、複数のテーブル項目が同じデータ暗号化キーで保護される場合があります。


              保管時の暗号化で DynamoDB テーブルを暗号化する

暗号化されたテーブル AWS KMS に初めてアクセスすると、DynamoDB は に KMS キーを使用してテーブルキーを復号するリクエストを送信します。その後、プレーンテキストテーブルキーを使用してデータ暗号化キーを復号化し、プレーンテキストデータ暗号化キーを使用してテーブルデータを復号化します。

DynamoDB は、 の外部でテーブルキーとデータ暗号化キーを保存して使用します AWS KMS。これによって、Advanced Encryption Standard (AES) 暗号化および 256 ビット暗号化キーのすべてのキーが保護されます。続いて、暗号化されたキーを暗号化されたデータと一緒に保存します。これらのキーおよびデータは、必要なときにテーブルデータの暗号化に使用できます。

テーブルの KMS キーを変更すると、DynamoDB は新しいテーブルキーを生成します。次に、新しいテーブルキーを使用してデータ暗号化キーの再暗号化が行われます。

テーブルキーのキャッシュ

DynamoDB オペレーション AWS KMS ごとに が呼び出されないように、DynamoDB は各呼び出し元のプレーンテキストテーブルキーをメモリにキャッシュします。DynamoDB は、5 分間非アクティブ状態になった後にキャッシュされたテーブルキーのリクエストを取得すると、新しいリクエストを に送信 AWS KMS してテーブルキーを復号します。この呼び出しは、 または AWS Identity and Access Management (IAM) の AWS KMS KMS キーのアクセスポリシーに加えられた変更を、テーブルキーの復号リクエスト以降にキャプチャします。

KMS キーの使用を認可する

DynamoDB テーブルを保護するために、アカウントでカスタマーマネージドキーまたは AWS マネージドキー を使用する場合は、その KMS キーのポリシーが DynamoDB に、ユーザーに代わってキーを使用する許可を付与する必要があります。DynamoDB AWS マネージドキー の の認証コンテキストには、キーポリシーとその使用許可を委任する許可が含まれます。

AWS マネージドキー はアカウントにあり、そのポリシーとグラントを表示できるため、カスタマーマネージドキーのポリシーとグラントを完全に制御することができます。ただし、 によって管理されるため AWS、ポリシーを変更することはできません。

DynamoDB では、デフォルトを使用して の DynamoDB テーブルAWS 所有のキーを保護するために追加の認証は必要ありません AWS アカウント。

のキーポリシー AWS マネージドキー

DynamoDB は、DynamoDB リソースにアクセスしているユーザーの代わりに、暗号化オペレーションで DynamoDB (aws/dynamodb) の AWS マネージドキー を使用します。のキーポリシーは、アカウントのすべてのユーザーに、指定されたオペレーション AWS マネージドキー に を使用するアクセス許可 AWS マネージドキー を付与します。ただし、アクセス許可が付与されるのは、DynamoDB がユーザーの代わりにリクエストを行う場合のみです。キーポリシーViaService の条件では、リクエストが DynamoDB サービスで発生 AWS マネージドキー しない限り、すべてのユーザーが を使用することは許可されません。

このキーポリシーは、すべての のポリシーと同様に AWS マネージドキー、 によって確立されます AWS。このポリシーを変更することはできませんが、いつでも表示できます。詳細については、「Viewing a key policy」を参照してください。

このキーポリシーのポリシーステートメントには次の効果があります

  • リクエストが DynamoDB から送信されたときに、アカウントのユーザーが暗号化オペレーションで DynamoDB AWS マネージドキー の を使用できるようにします。また、このポリシーはユーザーに KMS キーのグラントの作成も許可します。

  • 認可された IAM がアカウントで DynamoDB の AWS マネージドキー のプロパティを表示し、DynamoDB の KMS キー使用を許可するグラントを取り消すことができるようにします。DynamoDB は、継続的なメンテナンス操作にグラントを使用します。

  • DynamoDB が読み取り専用オペレーションを実行して、アカウント内の DynamoDB AWS マネージドキー の を検索できるようにします。

{ "Version" : "2012-10-17", "Id" : "auto-dynamodb-1", "Statement" : [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect" : "Allow", "Principal" : { "AWS" : "*" }, "Action" : [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource" : "*", "Condition" : { "StringEquals" : { "kms:CallerAccount" : "111122223333", "kms:ViaService" : "dynamodb.us-west-2.amazonaws.com" } } }, { "Sid" : "Allow direct access to key metadata to the account", "Effect" : "Allow", "Principal" : { "AWS" : "arn:aws:iam::111122223333:root" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource" : "*" }, { "Sid" : "Allow DynamoDB Service with service principal name dynamodb.amazonaws.com to describe the key directly", "Effect" : "Allow", "Principal" : { "Service" : "dynamodb.amazonaws.com" }, "Action" : [ "kms:Describe*", "kms:Get*", "kms:List*" ], "Resource" : "*" } ] }

カスタマーマネージドキーのキーポリシー

カスタマーマネージドキーを選択して DynamoDB テーブルを保護する際、DynamoDB は、選択を行うプリンシパルの代わりに KMS キーを使用するアクセス許可を取得します。そのプリンシパル、ユーザー、ロールは、DynamoDB に必要な KMS キーに対するアクセス許可を持っている必要があります。これらの許可は、キーポリシーIAM ポリシー、またはグラントで指定できます。

DynamoDB には、少なくとも、カスタマーマネージドキーに対する次のアクセス許可が必要です。

例えば、次のキーポリシーの例では、必要なアクセス許可のみを提供します。このポリシーには、以下の影響があります。

  • DynamoDB が、DynamoDB の使用許可を持つアカウントのプリンシパルの代わりに動作している場合にのみ、DynamoDB が暗号化オペレーションで KMS キーを使用し、グラントを作成することを許可します。ポリシーステートメントで指定されたプリンシパルに DynamoDB を使用する権限がない場合、呼び出しは DynamoDB サービスからのものであっても失敗します。

  • kms:ViaService 条件キーは、ポリシーステートメントにリストされているプリンシパルに代わって DynamoDB からリクエストが送信された場合にのみアクセス許可を許可します。これらのプリンシパルは、これらのオペレーションを直接呼び出すことはできません。kms:ViaService の値である dynamodb.*.amazonaws.com は、リージョンの位置にアスタリスク (*) が付いていることに注意してください。DynamoDB では、DynamoDB グローバルテーブル をサポートするためにクロスリージョン呼び出し AWS リージョン を行うために、特定の から独立した アクセス許可が必要です。

  • KMS キー管理者 (db-team ロールを引き受けることができるユーザー) に、KMS キーへの読み取り専用アクセス許可、およびグラント (テーブルを保護するために DynamoDB が必要とするグラントを含む) を取り消す許可を付与します。

サンプルキーポリシーを使用する前に、サンプルプリンシパルを の実際のプリンシパルに置き換えてください AWS アカウント。

{ "Id": "key-policy-dynamodb", "Version":"2012-10-17", "Statement": [ { "Sid" : "Allow access through Amazon DynamoDB for all principals in the account that are authorized to use Amazon DynamoDB", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:user/db-lead"}, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey", "kms:CreateGrant" ], "Resource": "*", "Condition": { "StringLike": { "kms:ViaService" : "dynamodb.*.amazonaws.com" } } }, { "Sid": "Allow administrators to view the KMS key and revoke grants", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/db-team" }, "Action": [ "kms:Describe*", "kms:Get*", "kms:List*", "kms:RevokeGrant" ], "Resource": "*" } ] }

グラントを使用した DynamoDB の承認

キーポリシーに加えて、DynamoDB は DynamoDB (aws/dynamodb) のためにカスタマーマネージドキーまたは AWS マネージドキー の許可を設定するためのグラントを使用します。アカウントの KMS キーに対する許可を表示するには、 ListGrantsオペレーションを使用します。DynamoDB では、AWS 所有のキー を使用してテーブルを保護するために、グラントや追加のアクセス許可は必要ありません。

DynamoDB は、バックグラウンドシステムメンテナンスと継続的なデータ保護タスクを実行するときに、許可を付与します。また、テーブルキーの生成にグラントを使用します。

各グラントは、テーブルに固有です。アカウントに同じ KMS キーで暗号化された複数のテーブルがある場合、テーブルごとに各タイプのグラントがあります。許可は、テーブル名と AWS アカウント ID を含む DynamoDB 暗号化コンテキスト によって制約されます。また、許可が不要になった場合にグラントを廃止にするアクセス許可も含まれます。

グラントを作成するには、DynamoDB に、暗号化されたテーブルを作成したユーザーに代わって CreateGrant を呼び出すための許可が必要です。の場合 AWS マネージドキー、DynamoDB はキーポリシー からkms:CreateGrantアクセス許可を取得します。これにより、アカウントユーザーは、DynamoDB CreateGrant が承認されたユーザーに代わってリクエストを行った場合にのみ、KMS キーで を呼び出すことができます。

キーポリシーは、アカウントが KMS キーのグラントを取り消すことも許可できます。ただし、アクティブな暗号化されたテーブルのグラントを取り消すと、DynamoDB はテーブルを保護および維持できなくなります。

DynamoDB 暗号化コンテキスト

暗号化コンテキスト は、一連のキー値のペアおよび任意非シークレットデータを含みます。データを暗号化するリクエストに暗号化コンテキストを含めると、 は暗号化コンテキストを暗号化されたデータに AWS KMS 暗号化してバインドします。データを復号するには、同じ暗号化コンテキストに渡す必要があります。

DynamoDB は、すべての暗号化オペレーションで同じ AWS KMS 暗号化コンテキストを使用します。カスタマーマネージドキーまたは AWS マネージドキー を使用して DynamoDB テーブルを保護する場合、暗号化コンテキストを使用して監査レコードやログにおける KMS キーの使用を特定することができます。また、 AWS CloudTrailAmazon CloudWatch Logs などのログにもプレーンテキストで表示されます。

また、暗号化コンテクストはポリシーとグラントの認証用の条件としても使用できます。DynamoDB は、暗号化コンテキストを使用して、アカウントとリージョン AWS マネージドキー でカスタマーマネージドキー または へのアクセスを許可する許可を制限します。

へのリクエストでは AWS KMS、DynamoDB は 2 つのキーと値のペアを持つ暗号化コンテキストを使用します。

"encryptionContextSubset": { "aws:dynamodb:tableName": "Books" "aws:dynamodb:subscriberId": "111122223333" }
  • テーブル — 最初のキーと値のペアは、DynamoDB が暗号化しているテーブルを識別します。キーは、aws:dynamodb:tableName です。この値は、テーブルの名前です。

    "aws:dynamodb:tableName": "<table-name>"

    例:

    "aws:dynamodb:tableName": "Books"
  • アカウント - 2 番目のキーバリューペアは、 AWS アカウント を識別します。キーは、aws:dynamodb:subscriberId です。値は、アカウント ID です。

    "aws:dynamodb:subscriberId": "<account-id>"

    例:

    "aws:dynamodb:subscriberId": "111122223333"

DynamoDB と のインタラクションのモニタリング AWS KMS

カスタマーマネージドキーまたは を使用して DynamoDB テーブルAWS マネージドキーを保護する場合は、 AWS CloudTrail ログを使用して、DynamoDB が AWS KMS ユーザーに代わって に送信するリクエストを追跡できます。

このセクションでは、GenerateDataKeyDecrypt、および CreateGrant リクエストを説明します。さらに、DynamoDB は DescribeKeyオペレーションを使用して、選択した KMS キーがアカウントとリージョンに存在するかどうかを判断します。また、テーブルを削除するときに、 RetireGrantオペレーションを使用してグラントを削除します。

GenerateDataKey

テーブルで保存時の暗号化を有効にすると、DynamoDB は一意のテーブルキーを作成します。テーブルの KMS キー AWS KMS を指定する GenerateDataKey リクエストを に送信します。

GenerateDataKey 演算を記録するイベントは、次のようなサンプルイベントになります。ユーザーは DynamoDB サービスアカウントです。パラメータには、KMS キーの Amazon リソースネーム (ARN)、256 ビットキーを必要とするキー指定子、テーブルと AWS アカウント を識別する暗号化コンテキストが含まれます。

{ "eventVersion": "1.05", "userIdentity": { "type": "AWSService", "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:17Z", "eventSource": "kms.amazonaws.com", "eventName": "GenerateDataKey", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Services", "aws:dynamodb:subscriberId": "111122223333" }, "keySpec": "AES_256", "keyId": "" }, "responseElements": null, "requestID": "229386c1-111c-11e8-9e21-c11ed5a52190", "eventID": "e3c436e9-ebca-494e-9457-8123a1f5e979", "readOnly": true, "resources": [ { "ARN": "", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333", "sharedEventID": "bf915fa6-6ceb-4659-8912-e36b69846aad" }
Decrypt

暗号化された DynamoDB テーブルにアクセスする場合、DynamoDB はテーブルキーを復号化して、階層内でその下にあるキーを復号化できるようにする必要があります。次に、テーブル内のデータを復号化します。テーブルキーを復号化するには、次が実行されます。DynamoDB は、テーブルの KMS キー AWS KMS を指定する Decrypt リクエストを に送信します。

Decrypt 演算を記録するイベントは、次のようなサンプルイベントになります。ユーザーは、テーブルにアクセス AWS アカウント している のプリンシパルです。パラメータには、暗号化されたテーブルキー (暗号文 blob として) と、テーブルと を識別する暗号化コンテキストが含まれます AWS アカウント。 AWS KMS は、暗号文から KMS キーの ID を取得します。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T16:42:15Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDT3HGFQZX4RY6RU", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T16:42:39Z", "eventSource": "kms.amazonaws.com", "eventName": "Decrypt", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "encryptionContext": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "responseElements": null, "requestID": "11cab293-11a6-11e8-8386-13160d3e5db5", "eventID": "b7d16574-e887-4b5b-a064-bf92f8ec9ad3", "readOnly": true, "resources": [ { "ARN": "", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }
CreateGrant

カスタマーマネージドキーまたは AWS マネージドキー を使用して DynamoDB テーブルを保護する場合、DynamoDB はグラントを使用して、サービスが継続的なデータ保護、メンテナンス、耐久性のタスクを実行できるようにします。これらのグラントは、AWS 所有のキー では不要です。

DynamoDB が作成するグラントは、テーブルに固有です。CreateGrant リクエストのプリンシパルは、テーブルを作成したユーザーです。

CreateGrant 演算を記録するイベントは、次のようなサンプルイベントになります。パラメータには、テーブルの KMS キーの Amazon リソースネーム (ARN)、被付与者プリンシパルと使用停止プリンシパル (DynamoDB サービス)、グラントの対象となるオペレーションが含まれます。また、指定された暗号化コンテキストを使用するすべての暗号化オペレーションを必要とする制約も含まれています。

{ "eventVersion": "1.05", "userIdentity": { "type": "AssumedRole", "principalId": "AROAIGDTESTANDEXAMPLE:user01", "arn": "arn:aws:sts::111122223333:assumed-role/Admin/user01", "accountId": "111122223333", "accessKeyId": "AKIAIOSFODNN7EXAMPLE", "sessionContext": { "attributes": { "mfaAuthenticated": "false", "creationDate": "2018-02-14T00:12:02Z" }, "sessionIssuer": { "type": "Role", "principalId": "AROAIGDTESTANDEXAMPLE", "arn": "arn:aws:iam::111122223333:role/Admin", "accountId": "111122223333", "userName": "Admin" } }, "invokedBy": "dynamodb.amazonaws.com" }, "eventTime": "2018-02-14T00:15:15Z", "eventSource": "kms.amazonaws.com", "eventName": "CreateGrant", "awsRegion": "us-west-2", "sourceIPAddress": "dynamodb.amazonaws.com", "userAgent": "dynamodb.amazonaws.com", "requestParameters": { "keyId": "", "retiringPrincipal": "dynamodb.us-west-2.amazonaws.com", "constraints": { "encryptionContextSubset": { "aws:dynamodb:tableName": "Books", "aws:dynamodb:subscriberId": "111122223333" } }, "granteePrincipal": "dynamodb.us-west-2.amazonaws.com", "operations": [ "DescribeKey", "GenerateDataKey", "Decrypt", "Encrypt", "ReEncryptFrom", "ReEncryptTo", "RetireGrant" ] }, "responseElements": { "grantId": "5c5cd4a3d68e65e77795f5ccc2516dff057308172b0cd107c85b5215c6e48bde" }, "requestID": "2192b82a-111c-11e8-a528-f398979205d8", "eventID": "a03d65c3-9fee-4111-9816-8bf96b73df01", "readOnly": false, "resources": [ { "ARN": "", "accountId": "111122223333", "type": "AWS::KMS::Key" } ], "eventType": "AwsApiCall", "recipientAccountId": "111122223333" }