デフォルトでは、Eventarc はお客様のコンテンツを保存時に暗号化します。Eventarc では、ユーザーが追加で操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。
暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Eventarc などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。
CMEK を使用してリソースを設定した後は、Eventarc リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
顧客管理の暗号鍵は、ソフトウェア鍵として Cloud HSM クラスタに保存されるか、Cloud External Key Manager を使用して外部で保存されます。
鍵を有効または無効にすると、Cloud KMS により監査ログが生成されます。このログは、メッセージの暗号化または復号で Eventarc Advanced リソースが鍵を使用したときにも生成されます。詳細については、Cloud KMS 監査ロギングの情報をご覧ください。
CMEK による保護対象
Eventarc Standard が使用するチャネルに CMEK を構成し、そのチャネルを通過するイベントを暗号化できます。CMEK を使用してチャネルを有効にすると、自分だけがアクセスできる暗号鍵を使用して、関連するデータが保護されます。
Google Cloud プロジェクトで Google チャネルに対して CMEK を有効にすると、そのプロジェクトとリージョンの Google イベントタイプのすべての Eventarc Standard トリガーがその CMEK 鍵で完全に暗号化されます。CMEK 鍵をトリガーごとに適用することはできません。
始める前に
Eventarc でこの機能を使用する前に、以下の準備を行う必要があります。
コンソール
-
Cloud KMS API と Eventarc API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限が必要です。プロジェクトを作成した場合は、オーナーロール(roles/owner)を介してこの権限がすでに付与されている可能性があります。それ以外の場合は、Service Usage 管理者ロール(roles/serviceusage.serviceUsageAdmin)を介してこの権限を取得できます。ロールを付与する方法をご覧ください。 - キーリングを作成します。
- 指定したキーリングの鍵を作成します。
gcloud
gcloudコンポーネントを更新します。gcloud components update
- 暗号鍵を格納するプロジェクトで Cloud KMS API と Eventarc API を有効にします。
gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
- キーリングを作成します。
- 指定したキーリングの鍵を作成します。
すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。
Terraform
google_project_serviceリソースを構成して、暗号鍵を格納するプロジェクトで Cloud KMS API と Eventarc API を有効にします。google_kms_key_ringリソースとgoogle_kms_crypto_keyリソースを構成して、キーリングと鍵を作成します。
Terraform の使用方法の詳細については、 Google Cloudでの Terraform のドキュメントをご覧ください。
Cloud KMS と Eventarc はリージョン サービスです。Cloud KMS 鍵と保護された Eventarc チャネルのリージョンは同じにする必要があります。
Eventarc サービス アカウントに鍵へのアクセス権を付与する
Eventarc サービス アカウントに Cloud KMS 鍵へのアクセス権を付与するには、サービス アカウントを鍵のプリンシパルとして追加し、サービス アカウントに Cloud KMS 暗号鍵の暗号化 / 復号ロールを付与します。
コンソール
コンソールを使用して Google またはサードパーティのチャネルで CMEK を有効にすると、サービス アカウントに Cloud KMS 暗号鍵の暗号化 / 復号ロールを付与するように求められます。詳細については、このドキュメントの Google イベントタイプで CMEK を有効にするまたはサードパーティのイベント チャネルで CMEK を有効にするをご覧ください。
gcloud
gcloud kms keys add-iam-policy-binding KEY_NAME \ --keyring RING_NAME \ --location LOCATION \ --member serviceAccount:SERVICE_AGENT_EMAIL \ --role roles/cloudkms.cryptoKeyEncrypterDecrypter
次のように置き換えます。
KEY_NAME: 鍵の名前。例:my-keyRING_NAME: キーリングの名前。例:my-keyringLOCATION: 鍵のロケーション。例:us-central1SERVICE_AGENT_EMAIL:eventarc.serviceAgentロールを持つサービス アカウントのメールアドレス。たとえば、
service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.comとします。詳細については、サービス エージェントをご覧ください。
Terraform
google_project_service_identityリソースを構成して、Eventarc サービスのサービス ID を生成します。google_kms_crypto_key_iam_memberリソースを構成して、Cloud KMS ロールを Eventarc サービス アカウントに付与します。
Google イベントタイプで CMEK を有効にする
Google イベントタイプをルーティングする Eventarc トリガーは、プロジェクトとリージョンに固有の仮想チャネル(Google チャネル)にイベントを公開します。この仮想チャネルは、すべての Eventarc リージョンで使用できます。
Google Cloud プロジェクトで Google チャネルに対して CMEK を有効にすると、そのプロジェクトとリージョンの Google イベントタイプのすべての Eventarc トリガーがその CMEK 鍵で完全に暗号化されます。複数の CMEK 鍵を追加して、それぞれを Google チャネルの特定のリージョンに関連付けることができます。CMEK 鍵をトリガーごとに適用することはできません。
コンソール
Google Cloud コンソールで、[Eventarc] > [チャネル] ページに移動します。
Google プロバイダがあるチャネルをクリックします。
[チャネルの編集] ページで、[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオンにします。
[暗号鍵を追加] をクリックします。
リージョンを選択し、[CMEK 暗号鍵] リストで、リージョンに作成したキーリングを選択します。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。
(省略可)鍵のリソース名を手動で入力するには、[CMEK 暗号鍵] リストで [鍵が表示されない場合は、鍵のリソース ID を入力してください。] をクリックして、指定された形式で鍵の名前を入力します。
プロンプトが表示されたら、
eventarc.serviceAgentロールを持つ Eventarc サービス アカウントにcloudkms.cryptoKeyEncrypterDecrypterロールを付与します。(省略可)[暗号鍵を追加] をクリックして、別のリージョン用に作成した別のキーリングを追加します。
[保存] をクリックします。
gcloud
gcloud eventarc google-channels update \ --location=LOCATION \ --crypto-key=KEY
次のように置き換えます。
LOCATION: 保護される Google チャネルのリージョン。使用する鍵の場所と一致する必要があります。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。KEY: Cloud KMS 鍵の完全修飾名。projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME形式で指定します。
Terraform
google_eventarc_google_channel_config リソースを構成して、特定のプロジェクトとロケーションの GoogleChannelConfig リソースに対して CMEK を有効にします。
REST
projects.locations.updateGoogleChannelConfig メソッドを使用して GoogleChannelConfig リソースを更新し、特定のプロジェクトとロケーションの CMEK 鍵を指定できます。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: 保護する Google チャネルのリージョン。使用する鍵の場所(us-central1など)と一致する必要があります。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。KEY_NAME: 鍵の名前(例:my-key)。RING_NAME: キーリングの名前(例:my-keyring)。
リクエストの本文(JSON):
{
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には、更新された GoogleChannelConfig のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
"updateTime": "2025-03-05T17:56:54.106390447Z",
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
CMEK で包括的な保護を行うために、独自のトピックを使用して Pub/Sub トリガーを作成する場合は、トピックで KMS 鍵を構成することをおすすめします。詳細については、Pub/Sub トピックの構成をご覧ください。
Cloud KMS の使用状況を確認する
チャネルが CMEK に対応していることを確認するには:
コンソール
Google Cloud コンソールで、[Eventarc] > [トリガー] ページに移動します。
Google Cloud ソースがイベント プロバイダとして表示され、CMEK を使用して保護したリージョンが表示されているトリガーをクリックします。
[トリガーの詳細] ページで、[暗号化] ステータスに「
Events encrypted using Customer-managed encryption keys」というメッセージが表示されます。
gcloud
CMEK 鍵を確認するには、google-channels describe コマンドを使用します。
gcloud eventarc google-channels describe \ --location=LOCATION
出力例を以下に示します。
cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig updateTime: '2022-06-28T17:24:56.365866104Z'
cryptokeyName 値は、Google チャネルに使用される Cloud KMS 鍵を示しています。
Terraform
CMEK 鍵を確認するには、Terraform の state show コマンドを使用します。
terraform state show google_eventarc_google_channel_config.default
出力例を以下に示します。
# google_eventarc_google_channel_config.default: resource "google_eventarc_google_channel_config" "default" { crypto_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" id = "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig" location = "LOCATION" name = "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig" project = "PROJECT_ID" update_time = "2025-03-24T17:15:08.809635011Z" }
REST
CMEK 鍵を確認するには、projects.locations.getGoogleChannelConfig メソッドを使用して GoogleChannelConfig リソースを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: 保護された Google チャネルのリージョン。
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には GoogleChannelConfig のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
"updateTime": "2025-03-05T17:56:54.106390447Z",
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
サードパーティ チャネルで CMEK を有効にする
サードパーティの Eventarc チャネルは、Eventarc ソースを提供する Google 以外のエンティティが宛先とやり取りするためのリソースです。Google Cloud このチャネルはリージョンに固有であり、サードパーティ チャネルごとに鍵を 1 つだけ追加できます。
サードパーティ チャネルで CMEK を有効にするには:
コンソール
Google Cloud コンソールで、[Eventarc] > [チャネル] ページに移動します。
サードパーティのプロバイダがあるチャネルをクリックします。
[チャネルの詳細] ページで、[ 編集] をクリックします。
[チャネルの編集] ページの [暗号化] で、[Cloud KMS 鍵] を選択します。
[鍵のタイプ] リストで、鍵を管理する方法を選択します。
鍵は手動で管理することも、Autokey を使用してオンデマンドでキーリングと鍵を生成することもできます。Autokey オプションが無効になっている場合、このオプションは現在のリソースタイプとまだ統合されていません。
[Cloud KMS 鍵の選択] リストで、鍵を選択します。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。
(省略可)鍵のリソース名を手動で入力するには、[Cloud KMS 鍵を選択] リストで [手動でキーを入力] をクリックして、指定された形式で鍵の名前を入力します。
プロンプトが表示されたら、Eventarc サービス エージェントに
cloudkms.cryptoKeyEncrypterDecrypterロールを付与します。[保存] をクリックします。
gcloud
gcloud eventarc channels update CHANNEL_NAME \ --location=LOCATION \ --crypto-key=KEY
次のように置き換えます。
CHANNEL_NAME: サードパーティ チャネルの名前。新しいサードパーティ チャネルを作成するには、チャネルを作成するをご覧ください。LOCATION: 保護するサードパーティ チャネルのリージョン。鍵の場所と一致する必要があります。KEY: Cloud KMS 鍵の完全修飾名。projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME形式で指定します。
Terraform
google_eventarc_channel リソースを構成して、サードパーティ チャネルの CMEK 鍵を指定します。次に例を示します。
resource "google_eventarc_channel" "default" { location = "us-central1" name = "CHANNEL_NAME" crypto_key_name = google_kms_crypto_key.default.id }
CHANNEL_NAME は、サードパーティ チャネルの名前に置き換えます。
REST
projects.locations.channels.patch メソッドを使用して Channel リソースを更新し、特定のプロジェクトとロケーションの CMEK 鍵を指定できます。
リクエストのデータを使用する前に、次のように置き換えます。
CHANNEL_NAME: チャンネル名。PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: 保護するチャネルのリージョン。使用する鍵の場所(us-central1など)と一致する必要があります。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。KEY_NAME: 鍵の名前(例:my-key)。RING_NAME: キーリングの名前(例:my-keyring)。
リクエストの本文(JSON):
{
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には、新しく作成された Operation のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
"metadata": {
"@type": "type.googleapis.com/google.cloud.eventarc.v1.OperationMetadata",
"createTime": "2024-01-25T17:17:45.782370139Z",
"target": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
"verb": "update",
"requestedCancellation": false,
"apiVersion": "v1"
},
"done": false
}
Cloud KMS の使用状況を確認する
チャネルが CMEK に対応していることを確認するには:
コンソール
Google Cloud コンソールで、[Eventarc] > [トリガー] ページに移動します。
イベント プロバイダとしてサードパーティのソースが使用され、CMEK を使用して保護したリージョンが使用されているトリガーをクリックします。
[トリガーの詳細] ページで、[暗号化] のステータスに「
Events encrypted using Customer-managed encryption keys」というメッセージが表示されます。
gcloud
gcloud eventarc channels describe CHANNEL_NAME \ --location=LOCATION
出力例を以下に示します。
createTime: '2022-06-28T18:05:52.403999904Z' cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME name: projects/PROJECT_ID/locations/LOCATION/googleChannelConfig pubsubTopic: projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID state: ACTIVE uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3 updateTime: '2022-06-28T18:09:18.650727516Z'
cryptokeyName 値は、サードパーティ チャネルに使用される Cloud KMS 鍵を示しています。
Terraform
CMEK 鍵を確認するには、Terraform の state show コマンドを使用します。
terraform state show google_eventarc_channel.default
出力例を以下に示します。
# google_eventarc_channel.default: resource "google_eventarc_channel" "default" { create_time = "2025-03-31T13:07:44.721274062Z" crypto_key_name = "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME" id = "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME" location = "LOCATION" name = "CHANNEL_NAME" project = "PROJECT_ID" pubsub_topic = "projects/PROJECT_ID/topics/PUBSUB_TOPIC_ID" state = "ACTIVE" uid = "406302e9-1d41-4479-8f4f-2524a803790e" update_time = "2025-03-31T13:07:49.708241490Z" }
REST
チャネルの CMEK 鍵を確認するには、projects.locations.channels.get メソッドを使用して Channel リソースを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
CHANNEL_NAME: チャンネル名。PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: 保護されたチャネルのリージョン。
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には Channel のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
"uid": "12f941a6-196a-457b-bfdb-ca21138859d0",
"createTime": "2025-01-29T15:05:12.113912689Z",
"updateTime": "2025-01-29T15:05:17.210986285Z",
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"state": "ACTIVE",
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
チャネルに使用される鍵を表示する
Eventarc チャネルの説明を取得し、そのチャネルで使用されている Cloud KMS 鍵を表示できます。
コンソール
Google Cloud コンソールで、[Eventarc] > [チャネル] ページに移動します。
チャンネル名をクリックします。
チャネルで使用されている CMEK 暗号鍵が表示されます。
gcloud
チャネルのタイプに応じて、次のコマンドを実行します。
Google チャネル
gcloud eventarc google-channels describe \ --location=LOCATION
サードパーティ チャネル
gcloud eventarc channels describe CHANNEL_NAME \ --location=LOCATION
出力には、次のような行が含まれます。
cryptoKeyName: projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAMEcryptoKeyName 値は、チャネルに使用されている Cloud KMS 鍵を示しています。
Terraform
チャネルのタイプに応じて、次のコマンドを実行します。
Google チャネル
terraform state show google_eventarc_google_channel_config.default
サードパーティ チャネル
terraform state show google_eventarc_channel.default
出力には、次のような行が含まれます。
crypto_key_name= "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
crypto_key_name 値は、チャネルに使用されている Cloud KMS 鍵を示しています。
REST
チャネルのタイプに応じて、次のリクエストを行います。
Google チャネル
特定のプロジェクトとロケーションの CMEK 鍵を確認するには、projects.locations.getGoogleChannelConfig メソッドを使用して GoogleChannelConfig リソースを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: 保護された Google チャネルのリージョン。
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には GoogleChannelConfig のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/googleChannelConfig",
"updateTime": "2025-03-05T17:56:54.106390447Z",
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
サードパーティ チャネル
特定のプロジェクトとロケーションの CMEK 鍵を確認するには、projects.locations.channels.get メソッドを使用して Channel リソースを取得します。
リクエストのデータを使用する前に、次のように置き換えます。
CHANNEL_NAME: チャンネル名。PROJECT_ID: 実際の Google Cloudプロジェクト ID。LOCATION: 保護されたチャネルのリージョン。
リクエストを送信するには、次のいずれかのオプションを展開します。
成功した場合、レスポンスの本文には Channel のインスタンスが含まれます。
{
"name": "projects/PROJECT_ID/locations/LOCATION/channels/CHANNEL_NAME",
"uid": "12f941a6-196a-457b-bfdb-ca21138859d0",
"createTime": "2025-01-29T15:05:12.113912689Z",
"updateTime": "2025-01-29T15:05:17.210986285Z",
"pubsubTopic": "projects/PROJECT_ID/topics/TOPIC_ID",
"state": "ACTIVE",
"cryptoKeyName": "projects/PROJECT_ID/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME"
}
CMEK を無効にする
チャネルに関連付けられた CMEK による保護を無効にできます。このようなチャネルを通じて配信されるイベントは、Google-owned and Google-managed encryption keys によって引き続き保護されます。チャネルに関連付けられた CMEK による保護を削除するには:
コンソール
Google Cloud コンソールで、[Eventarc] > [チャネル] ページに移動します。
チャネルのタイプに応じて、次の手順を行います。
Google チャネル
- Google プロバイダがあるチャネルをクリックします。
- [チャネルの編集] ページで、[CMEK 暗号鍵] リストにポインタを置くと、「項目を削除」ボタンが表示されます。
- [項目を削除] をクリックします。
[保存] をクリックします。
[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスを有効にするには、ページを更新する必要があります。
サードパーティ チャネル