View a markdown version of this page

カスタムイベントバスでのイベントの暗号化 - Amazon EventBridge

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

カスタムイベントバスでのイベントの暗号化

バスは、イベントペイロード、イベントメタデータ、サブスクライバーフィルター、サブスクライバーターゲット設定など、保存するすべてのものを暗号化します。デフォルトでは、 AWS が所有するキーを使用し、何も設定しません。代わりに独自の AWS KMS キーを使用してバスを暗号化するには、バスを作成または更新EncryptionConfiguration.KmsKeyIdentifierするときに を設定しaws eventsv2 create-event-bus --name orders --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab、 の 3 つのステートメントキーポリシーの記述をキーポリシーに追加します。

バスを暗号化するキーの選択

を省略EncryptionConfigurationし、EventBridge は AWS 所有キーで 256 ビット AES を使用してバスを暗号化します。そのキーを表示または管理することはできません。その使用は CloudTrail ログに表示されず、コストは発生せず、 AWS KMS クォータにはカウントされず、毎月 AWS ローテーションされます。 はそのようなバスEncryptionConfigurationには をDescribeEventBus返しません。詳細については、「AWS KMS デベロッパーガイド」の「AWS 所有キー」を参照してください。

Set EncryptionConfiguration.KmsKeyIdentifierと EventBridge は、カスタマーマネージドキーを使用してバスを暗号化します。次に、キーポリシー、ローテーション、無効化、削除を制御し、CloudTrail でキーを使用するたびに表示されます。キーには、 AWS KMS 月額キー料金とリクエスト料金が発生します。EventBridge はキャッシュされたブランチキーでローカルにイベントを暗号化および復号するため (「」を参照バスがキーを使用する方法)、キャッシュウィンドウとローテーションごとにバスごとにいくつかの AWS KMS リクエストを行います。リクエスト数はイベントボリュームとともに増加しません。詳細については、AWS KMS 料金表を参照してください。

KmsKeyIdentifier は、キー ID、キー ARN、 などのエイリアス名alias/orders、またはエイリアス ARN を受け入れます。EventBridge はアカウントとリージョンのベアキー ID またはエイリアス名を認定するため、別のアカウントのキーは完全なキー ARN で名前を付ける必要があります。バスを作成または更新すると、エイリアスはそのキーに解決され、作成および記述レスポンスはそのキー ARN を返します。エイリアスを後で再指定しても、バスが使用するキーは変更されません。キーは対称暗号化キー (SYMMETRIC_DEFAULT、キーの使用法 ENCRYPT_DECRYPT) である必要があります。EventBridge は非対称キーと HMAC キーを拒否します。マルチリージョンキーは通常のキーとして機能します。EventBridge はデータもキーマテリアルもリージョン間でレプリケートしないため、バスのリージョンでレプリカに名前を付けます。外部キーストアにインポートされたキーマテリアルとキーを持つキーがサポートされています。

aws eventsv2 create-event-bus \ --name orders \ --encryption-configuration KmsKeyIdentifier=arn:aws:kms:us-east-1:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab

キーは、バスが保持するイベントペイロードとメタデータ、配信中に各サブスクライバーに保持されるコピー、サブスクライバーフィルタとターゲット設定を暗号化します。EventBridge はイベントをルーティングおよび検索するためにそれらを必要とするため、キーでは暗号化されません。バス名、ARN、アカウント ID、FIFO 配信を注文するイベントグループ ID、EventBridge が一方向ハッシュとして保存する重複排除 ID、内部一致の結果とシーケンス番号です。ストレージサービスは、保管中のものを独自のキーで暗号化します。

バスがキーを使用する方法

カスタマーマネージドキーを設定すると、EventBridge はバスのブランチキーを作成します。中間キーは、サービスマネージドテーブルに保存され、 AWS Encryption SDK 階層キーリングに従って AWS KMS キーでラップされます。EventBridge はイベントごとにブランチキーからデータキーを取得するため、イベントごとに AWS KMS 呼び出しを行わずにローカルでイベントを暗号化および復号します。

  • イベントを発行すると、EventBridge はイベントをバスのブランチキーで暗号化してからストレージに書き込みます。

  • EventBridge がイベントを配信すると、イベントを復号してフィルターを評価し、配信します。ターゲットは復号されたイベントを受け取ります。ターゲットでの暗号化はターゲットサービスの責任です。

  • EventBridge は、ブランチキーを最大 15 分間メモリにキャッシュします。キャッシュの有効期限が切れると、 キーkms:Decryptを呼び出してブランチキーを再度ラップ解除します。

  • EventBridge は、約 30 日ごとに新しいブランチキーバージョンを作成し、古いバージョンを保持するため、以前に書き込まれたイベントはバスの保持期間にわたって読み取ることができます。

EventBridge は 2 つのパスでキーに到達し、キーポリシーで両方を許可する必要があります。API コールの進行中に実行されるチェックでは、呼び出しから転送された認証情報を使用します。イベントの配信やブランチキーの管理など、呼び出しが戻った後に実行される作業では、認証情報が利用できなくなるため、events.amazonaws.comサービスプリンシパルとして機能します。

キーポリシーの記述

キーポリシーに 3 つのステートメントを追加します。1 つはプリンシパルがキーを検証できるようにするステートメント、もう 1 つは EventBridge が認証情報を使用して実行するアクセスチェックを渡すステートメント、もう 1 つはevents.amazonaws.comサービスプリンシパル用です。EventBridge がバスに対して行うすべての AWS KMS リクエストは、バス ARN aws:events:event-busv2:arnを含む暗号化コンテキストキーを両方のアクセスパスに保持するため、2 番目と 3 番目のステートメントは 1 つのバスにスコープされます。バス ARN は、作成時に EventBridge が生成するサフィックスで終わるため、 StringLikeおよび末尾の と一致させます/*。独自のキー管理ステートメントもポリシーに保持します。次の例のアカウント、リージョン、ロール、バス名を置き換えます。

{ "Version": "2012-10-17", "Id": "eventbridge-custom-event-bus-key-policy", "Statement": [ { "Sid": "AllowKeyValidationThroughEventBridge", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": "kms:DescribeKey", "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" } } }, { "Sid": "AllowKeyUseThroughEventBridge", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/ExampleRole" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringEquals": { "kms:ViaService": "events.us-east-1.amazonaws.com" }, "StringLike": { "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } } }, { "Sid": "AllowEventBridgeServicePrincipal", "Effect": "Allow", "Principal": { "Service": "events.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKeyWithoutPlaintext", "kms:ReEncryptFrom", "kms:ReEncryptTo" ], "Resource": "*", "Condition": { "StringLike": { "kms:EncryptionContext:aws:events:event-busv2:arn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } } } ] }

AllowKeyValidationThroughEventBridge では、プリンシパルがバスを作成または更新するときにキーを検証できます。EventBridge は、認証情報kms:DescribeKeyを使用して を呼び出して、キーが存在し、対称で、有効になっていることを確認します。 は暗号化コンテキストDescribeKeyを使用しないため、このステートメントには何もありません。 は EventBridge を通過するリクエストkms:ViaServiceに制限します。

AllowKeyUseThroughEventBridge は、EventBridge がキー設定を受け入れる前、および暗号化されたデータを書き込んだり読み取ったりする前に、認証情報を使用して実行するアクセスチェックを承認するため、サービスの後で非同期作業で使用できないキーを設定することはできません。チェックは AWS KMS ドライランであり、何も許可しませんが、暗号化および復号しません。これらは標準 AWS KMS リクエストとして請求され、 AWS KMS リクエストクォータにカウントされます。「 AWS KMS デベロッパーガイド」の「アクセス許可のテスト」を参照してください。各オペレーションは、後の作業で実行されるアクションをチェックします。

  • CreateEventBus カスタマーマネージドキーチェック kms:GenerateDataKeyWithoutPlaintext、、kms:ReEncryptFromkms:ReEncryptTo、および ではkms:Decrypt、ブランチキーの作成後に読み取るアクションが実行されます。

  • UpdateEventBus 現在のキー、kms:Encryptおよびkms:Decrypt新しいキーkms:Decryptのキーチェックを変更する 。

  • PutEvents カスタマーマネージドキーチェック を使用するバスPutRawEvents上の および kms:Decrypt。バスのイベントを読み取ることができないプロデューサーもそれらを書き込むことはできません。これがないと、パブリッシュ呼び出しは というAccessDeniedException名前で失敗しますKMS_ACCESS_DENIED。

  • CreateSubscriber サブスクライバー設定はバスキーで暗号化されるためkms:Decrypt、 と UpdateSubscriberをチェックします。

したがって、このステートメントPrincipalの は、バスを作成または更新する、バスに発行する、またはバスにサブスクライバーを作成するすべてのロールをカバーする必要があります。ロール ARNs を一覧表示するか、アカウントルートプリンシパルに名前を付け、決定をアカウントの IAM ポリシーに委任します。

AllowEventBridgeServicePrincipal は、呼び出しの完了後に EventBridge がサービスとして実行する作業を承認します。kms:GenerateDataKeyWithoutPlaintext、kms:ReEncryptFrom、 は、ローテーション時にバスのブランチキーとその新しいバージョンkms:ReEncryptToを作成します。 は、ブランチキーをラップkms:Decrypt解除してイベントを配信し、サブスクライバー設定をロードし、describe 呼び出しで復号化された設定を返します。 kms:Decryptは、バスのキーを変更するときにブランチキーkms:Encryptを再ラップします。

キーは、中央セキュリティアカウントなど、別のアカウントに存在することができます。バスアカウントのロールを最初の 2 つのプリンシパルとし、バスアカウントのバス ARN を暗号化コンテキスト値として、そのキーのポリシーに 3 つのステートメントをすべて配置します。バスアカウントのロールには、キー ARN で同じ AWS KMS アクションを許可する IAM ID ポリシーも必要です。これは、クロスアカウント AWS KMS アクセスには両側のアクセス許可が必要なためです。フルキー ARN でキーに名前を付けます。

キーポリシーを 1 つのバスにスコープする

ステートメントを 1 つのバスに制限するには、 を条件としますkms:EncryptionContext:aws:events:event-busv2:arn。バスが存在する前に、前のポリシーのように/*、末尾の StringLikeで を使用します。既存のバスの場合、 が でDescribeEventBus返す正確な ARN を一致させることができますStringEquals。認証情報を使用して行われたすべてのリクエストには も入力されるためevents.region.amazonaws.com、EventBridge kms:ViaService を介してのみプリンシパルがキーを使用するように制限できます。

EventBridge がサービスプリンシパルとして行うリクエストはaws:SourceArn、バス ARN とバスアカウントaws:SourceAccountで処理されます。EventBridge が独自のバスにのみキーを使用AllowEventBridgeServicePrincipalできるように、これらを に追加します。

"Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" }, "ArnLike": { "aws:SourceArn": "arn:aws:events:us-east-1:111122223333:event-busv2/orders/*" } }

個々の発行および配信オペレーションは、キャッシュされたブランチキーを使用し、イベントごとにキーポリシーを再チェックしません。EventBridge のアクセスを削除するものを含むキーポリシーの変更は、キャッシュされたブランチキーの有効期限が切れると、15 分以内にバスのデータ処理に適用されます。

バスのキーの変更または削除

UpdateEventBus を呼び出して、バスを AWS 所有キーからカスタマーマネージドキーに移動するか、あるカスタマーマネージドキーから別のカスタマーマネージドキーに移動するか、 AWS 所有キーに戻します。 AWS 所有キーに戻るには、EncryptionConfiguration現在および空の を として送信します--encryption-configuration '{}'。EncryptionConfiguration を完全に省略すると、バスは現在のキーを保持します。

EventBridge が新しいキーでブランチキーを再ラップUPDATINGしている間にバスが入り、 に戻りますACTIVE。ブランチキー自体は変更されないため、EventBridge は保存されたイベントを再暗号化せず、バスが保持するすべての変更をすばやく完了し、以前に書き込まれたイベントは古いキーの状態に関係なく読み取ることができます。がバスACTIVEに新しいキーDescribeEventBusを表示したら、古いキーを無効にすることができます。

EventBridge が新しいキーを使用できない場合、バスは に定着UPDATE_FAILEDし、以前のキーを操作し続けます。イベントを受け入れて配信し、古いキーを報告しDescribeEventBus続けます。失敗したキーがバスキーになることはありません。使用可能なキー、またはポリシーを修正した後で同じキーを使用して UpdateEventBus を再度呼び出すと、バスは に戻りますACTIVE。キーの作成が失敗するバスは、 AWS KMS 拒否というStateReason名前CREATE_FAILEDで に解決されます。その状態UpdateEventBusは のみを受け入れDeleteEventBus、受け入れる状態 という名前のメッセージで拒否されます[ACTIVE, UPDATE_FAILED]。キーポリシーを修正し、バスを削除して、再度作成します。状態については、「」を参照してくださいバスの状態とそれぞれの許可。

キーで自動キーローテーションを有効にすると、 は同じキー ARN の背後にあるバッキングマテリアルを AWS KMS ローテーションします。ブランチキーは最後にラップしたマテリアルでラップされたままで、約 30 日ごとに作成された次のブランチキーバージョンは現在のマテリアルを使用します。したがって、 AWS KMS ローテーションは約 1 か月以内にバスに到達します。

キーが使用できなくなった場合

キーを無効にしたり、削除をスケジュールしたり、EventBridge のアクセスを削除したりした場合、バスはキャッシュされたブランチキーの有効期限が切れるまで 15 分以内に動作し続けます。その後、バスへの発行が AWS KMS アクセスエラーで失敗し、配信が一時停止します。EventBridge は、既に承諾したイベントを削除せず、デッドレターキューに送信しません。キーアクセスの失敗は修正できる条件であるため、イベントを保持して再試行します。アクセスを復元すると、パブリッシュと配信が単独で再開されます。停止がバスの保持期間を超過しない限り、イベントは失われません。

キーの削除は永続的です。がバスに設定されたキー AWS KMS を削除すると、EventBridge はバスのブランチキーをラップ解除できなくなり、バスに保存されているすべてのイベントは残りの保持期間にわたって読み取りできなくなります。最初にキーを無効にし、効果を確認し、削除のみをスケジュールします。「 AWS KMS デベロッパーガイド」のAWS KMS 「キーの削除」を参照してください。 DeleteEventBus はキーを必要としません。キーが無効または削除されると成功します。

CloudTrail でのキー使用のモニタリング

EventBridge がカスタマーマネージドキーに対して行うすべてのリクエストは CloudTrail に記録されます。CloudTrail を使用した AWS KMS API コールのログ記録」を参照してください。次の表に、予想されるイベントを示します。

eventName メトリクス ID の呼び出し
DescribeKey バスの作成と更新時のキー検証 EventBridge を介したプリンシパル
Decrypt、Encrypt、GenerateDataKeyWithoutPlaintext、 ReEncrypt (ドライラン) バスの作成と更新、公開、サブスクライバーの作成と更新のアクセスチェック EventBridge を介したプリンシパル
GenerateDataKeyWithoutPlaintext, ReEncrypt バス作成時のブランチキーの作成、および約 30 日ごとのブランチキーのローテーション events.amazonaws.com
Decrypt キャッシュの有効期限が切れたときにブランチキーをラップ解除する: イベント配信、サブスクライバー設定のロード、呼び出しの説明 events.amazonaws.com
Decrypt および Encrypt がキーUpdateEventBusを変更したときのブランチキーの再ラップ events.amazonaws.com

CloudTrail はReEncrypt呼び出しを 1 つのイベントとして記録します。 アクセス許可kms:ReEncryptFromと アクセスkms:ReEncryptTo許可の両方で許可します。が示すドライランエントリDryRunOperationExceptionは、設定の障害ではなく、アクセスチェックに合格することです。 が示すエントリは、発信者にチェック対象のアクセス許可がないAccessDeniedExceptionことを意味します。すべてのエントリrequestParameters.encryptionContextの は、バス ARN aws:events:event-busv2:arnに含まれます。ブランチキーエントリには、階層キーリングのフィールド branch-key-id (バス ARN)type、、create-time、、tablenamehierarchy-version、および も含まれますkms-arn。イベントごとの暗号化と復号では、キャッシュされたブランチキーからローカルに派生したデータキーが使用されるため、個々のイベントは CloudTrail に表示されません。

転送中の暗号化

すべてのカスタムイベントバス API コールは HTTPS エンドポイント、eventsv2.region.amazonaws.com、およびすべてのリクエストが認証情報で署名されている必要があります。FIPS エンドポイント はeventsv2-fips.region.amazonaws.com、必要な場所で利用できます。EventBridge のデータ保護全般については、「」を参照してくださいAmazon EventBridge のセキュリティ。