

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

# カスタムイベントバスでのイベントの暗号化
<a name="eb-custom-bus-encryption"></a>

バスは、イベントペイロード、イベントメタデータ、サブスクライバーフィルター、サブスクライバーターゲット設定など、保存するすべてのものを暗号化します。デフォルトでは、 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 つのステートメント[キーポリシーの記述](#eb-custom-bus-encryption-key-policy)をキーポリシーに追加します。

## バスを暗号化するキーの選択
<a name="eb-custom-bus-encryption-at-rest"></a>

を省略`EncryptionConfiguration`し、EventBridge は AWS 所有キーで 256 ビット AES を使用してバスを暗号化します。そのキーを表示または管理することはできません。その使用は CloudTrail ログに表示されず、コストは発生せず、 AWS KMS クォータにはカウントされず、毎月 AWS ローテーションされます。 はそのようなバス`EncryptionConfiguration`には を`DescribeEventBus`返しません。詳細については、「*AWS KMS デベロッパーガイド*」の「[AWS 所有キー](https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-owned-cmk)」を参照してください。

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

`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、内部一致の結果とシーケンス番号です。ストレージサービスは、保管中のものを独自のキーで暗号化します。

## バスがキーを使用する方法
<a name="eb-custom-bus-encryption-branch-key"></a>

カスタマーマネージドキーを設定すると、EventBridge はバスの*ブランチキー*を作成します。中間キーは、サービスマネージドテーブルに保存され、 AWS Encryption SDK [階層キーリング](https://docs.aws.amazon.com/encryption-sdk/latest/developer-guide/use-hierarchical-keyring.html)に従って AWS KMS キーでラップされます。EventBridge はイベントごとにブランチキーからデータキーを取得するため、イベントごとに AWS KMS 呼び出しを行わずにローカルでイベントを暗号化および復号します。
+ イベントを発行すると、EventBridge はイベントをバスのブランチキーで暗号化してからストレージに書き込みます。
+ EventBridge がイベントを配信すると、イベントを復号してフィルターを評価し、配信します。ターゲットは復号されたイベントを受け取ります。ターゲットでの暗号化はターゲットサービスの責任です。
+ EventBridge は、ブランチキーを最大 15 分間メモリにキャッシュします。キャッシュの有効期限が切れると、 キー`kms:Decrypt`を呼び出してブランチキーを再度ラップ解除します。
+ EventBridge は、約 30 日ごとに新しいブランチキーバージョンを作成し、古いバージョンを保持するため、以前に書き込まれたイベントはバスの保持期間にわたって読み取ることができます。

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

## キーポリシーの記述
<a name="eb-custom-bus-encryption-key-policy"></a>

キーポリシーに 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 デベロッパーガイド*」の[「アクセス許可のテスト](https://docs.aws.amazon.com/kms/latest/developerguide/testing-permissions.html)」を参照してください。各オペレーションは、後の作業で実行されるアクションをチェックします。
+ `CreateEventBus` カスタマーマネージドキーチェック `kms:GenerateDataKeyWithoutPlaintext`、、`kms:ReEncryptFrom``kms: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 つのバスにスコープする
<a name="eb-custom-bus-encryption-scope"></a>

ステートメントを 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 分以内にバスのデータ処理に適用されます。

## バスのキーの変更または削除
<a name="eb-custom-bus-encryption-change"></a>

`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]`。キーポリシーを修正し、バスを削除して、再度作成します。状態については、「」を参照してください[バスの状態とそれぞれの許可](eb-custom-bus-create.md#eb-custom-bus-lifecycle-states)。

キーで[自動キーローテーション](https://docs.aws.amazon.com/kms/latest/developerguide/rotate-keys.html)を有効にすると、 は同じキー ARN の背後にあるバッキングマテリアルを AWS KMS ローテーションします。ブランチキーは最後にラップしたマテリアルでラップされたままで、約 30 日ごとに作成された次のブランチキーバージョンは現在のマテリアルを使用します。したがって、 AWS KMS ローテーションは約 1 か月以内にバスに到達します。

## キーが使用できなくなった場合
<a name="eb-custom-bus-encryption-key-unusable"></a>

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

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

## CloudTrail でのキー使用のモニタリング
<a name="eb-custom-bus-encryption-cloudtrail"></a>

EventBridge がカスタマーマネージドキーに対して行うすべてのリクエストは CloudTrail に記録されます。[CloudTrail を使用した AWS KMS API コールのログ記録](https://docs.aws.amazon.com/kms/latest/developerguide/logging-using-cloudtrail.html)」を参照してください。次の表に、予想されるイベントを示します。


| `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`、、`tablename``hierarchy-version`、および も含まれます`kms-arn`。イベントごとの暗号化と復号では、キャッシュされたブランチキーからローカルに派生したデータキーが使用されるため、個々のイベントは CloudTrail に表示されません。

## 転送中の暗号化
<a name="eb-custom-bus-encryption-transit"></a>

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