顧客管理の暗号鍵(CMEK)を使用する

デフォルトでは、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 を使用して外部で保存されます。

CMEK による保護対象

次のリソースを通過するイベント メッセージを暗号化するように CMEK を構成できます。

  • MessageBus - Eventarc Advanced バス
  • Pipeline - Eventarc Advanced パイプライン
  • GoogleApiSource - 特定のバスに関する Google API イベントのサブスクリプションを表すリソース

詳細については、Eventarc Advanced の概要をご覧ください。

リソースで CMEK を有効にすると、本人だけがアクセスできる暗号鍵を使用して、そのリージョンのリソースに関連付けられたデータが保護されます。

Cloud KMS と Eventarc はリージョン サービスです。Cloud KMS 鍵と保護された Eventarc Advanced リソースのリージョンは同じにする必要があります。

始める前に

Eventarc でこの機能を使用する前に、次の操作を行う必要があります。

コンソール

  1. Enable the Cloud KMS and Eventarc APIs.

    Enable the APIs

  2. キーリングを作成します
  3. 指定したキーリングの鍵を作成します

gcloud

  1. gcloud コンポーネントを更新します。
    gcloud components update
  2. 暗号鍵を格納するプロジェクトで Cloud KMS API と Eventarc API を有効にします。
    gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
  3. キーリングを作成します
  4. 指定したキーリングの鍵を作成します

すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。

Eventarc サービス アカウントに鍵へのアクセス権を付与する

Eventarc サービス アカウントに Cloud KMS 鍵へのアクセス権を付与するには、サービス アカウントを鍵のプリンシパルとして追加し、サービス アカウントに Cloud KMS 暗号鍵の暗号化/復号ロールを付与します。

コンソール

Google Cloud コンソールを使用してバスまたはパイプラインで CMEK を有効にすると、サービス アカウントに Cloud KMS 暗号鍵の暗号化/復号ロールを付与するように求められます。詳細については、このドキュメントの バスで CMEK を有効にするまたはパイプラインで CMEK を有効にするをご覧ください。

gcloud

 gcloud kms keys add-iam-policy-binding KEY_NAME \
     --keyring KEY_RING \
     --location REGION \
     --member serviceAccount:SERVICE_AGENT_EMAIL \
     --role roles/cloudkms.cryptoKeyEncrypterDecrypter

次のように置き換えます。

  • KEY_NAME: 鍵の名前(例: my-key
  • KEY_RING: キーリングの名前(例: my-keyring
  • REGION: 鍵のロケーション(例: us-central1
  • SERVICE_AGENT_EMAIL: eventarc.serviceAgent ロールを持つサービス アカウントのメールアドレス

    たとえば、service-PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com とします。詳細については、サービス エージェントをご覧ください。

バスで CMEK を有効にする

Eventarc Advanced バスで CMEK を有効にすると、バスを通過するすべてのメッセージがその CMEK 鍵で完全に暗号化されます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。

    [バス] に移動

  2. バスを作成するか、バスを更新する場合はバスの名前をクリックします。

  3. [バスの詳細] ページで、 [編集] をクリックします。

  4. [バスの編集] ページの [暗号化] で、[Cloud KMS 鍵] を選択します。

  5. [鍵の種類] リストで、鍵を管理する方法を選択します。

    鍵を手動で管理することも、Autokey を使用してキーリングと鍵をオンデマンドで生成することもできます。Autokey オプションが無効になっている場合、このオプションは現在のリソースタイプとまだ統合されていません。

  6. 顧客管理の暗号鍵を選択します。

  7. (省略可)鍵のリソース名を手動で入力するには、[顧客管理の暗号鍵を選択] リストで [手動でキーを入力] をクリックして、指定された形式で鍵の名前を入力します。

  8. プロンプトが表示されたら、Eventarc Service Agentcloudkms.cryptoKeyEncrypterDecrypter ロールを付与します。

  9. [保存] をクリックします。

gcloud

gcloud beta eventarc message-buses update コマンドを使用して、バスの CMEK を有効にします。

gcloud beta eventarc message-buses update BUS_NAME \
    --location=REGION \
    --crypto-key=KEY

次のように置き換えます。

Cloud KMS の使用状況を確認する

バスが CMEK に準拠していることを確認します。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。

    [バス] に移動

  2. CMEK を使用して保護したバスの名前をクリックします。

  3. [バスの詳細] ページの [暗号化] ステータスに「Event messages encrypted using customer-managed encryption keys」というメッセージが表示されます。

gcloud

gcloud beta eventarc message-buses describe コマンドを使用して、バスを記述します。

 gcloud beta eventarc message-buses describe BUS_NAME \
     --location=REGION

出力例を以下に示します。

 cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 name: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME
 updateTime: '2022-06-28T17:24:56.365866104Z'

cryptokeyName 値は、バスに使用される Cloud KMS 鍵を示しています。

バスの CMEK を無効にする

バスに関連付けられた CMEK による保護を無効にできます。バスを介して配信されるイベントは、Google が所有し管理する鍵によって引き続き保護されます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。

    [バス] に移動

  2. バスの名前をクリックします。

  3. [バスの詳細] ページで、 [編集] をクリックします。

  4. [バスの編集] ページで、[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオフにします。

  5. [保存] をクリックします。

gcloud

gcloud beta eventarc message-buses update コマンドを使用して、バスの CMEK を無効にします。

gcloud beta eventarc message-buses update BUS_NAME \
    --location=REGION \
    --clear-crypto-key

パイプラインの CMEK を有効にする

Eventarc Advanced パイプラインで CMEK を有効にすると、パイプラインを通過するすべてのメッセージがその CMEK 鍵で完全に暗号化されます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [パイプライン] ページに移動します。

    [Pipelines] に移動

  2. パイプラインを作成するか、パイプラインを更新する場合はパイプライン名をクリックします。

  3. [パイプラインの詳細] ページで、 [編集] をクリックします。

  4. [パイプラインの編集] ページの [暗号化] で、[Cloud KMS 鍵] を選択します。

  5. [鍵の種類] リストで、鍵を管理する方法を選択します。

    鍵を手動で管理することも、Autokey を使用してキーリングと鍵をオンデマンドで生成することもできます。Autokey オプションが無効になっている場合、このオプションは現在のリソースタイプとまだ統合されていません。

  6. 顧客管理の暗号鍵を選択します。

  7. (省略可)鍵のリソース名を手動で入力するには、[顧客管理の暗号鍵を選択] リストで [手動でキーを入力] をクリックして、指定された形式で鍵の名前を入力します。

  8. プロンプトが表示されたら、Eventarc Service Agentcloudkms.cryptoKeyEncrypterDecrypter ロールを付与します。

  9. [保存] をクリックします。

gcloud

gcloud beta eventarc pipelines update コマンドを使用して、パイプラインで CMEK を有効にします。

 gcloud beta eventarc pipelines update PIPELINE_NAME \
     --location=REGION \
     --crypto-key=KEY

次のように置き換えます。

Cloud KMS の使用状況を確認する

パイプラインが CMEK に準拠していることを確認します。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [パイプライン] ページに移動します。

    [Pipelines] に移動

  2. CMEK を使用して保護したパイプラインの名前をクリックします。

  3. [パイプラインの詳細] ページで、[暗号化] ステータスに「Event messages encrypted using customer-managed encryption keys」というメッセージが表示されます。

gcloud

gcloud beta eventarc pipelines describe コマンドを使用して、パイプラインの CMEK を確認します。

 gcloud beta eventarc pipelines describe PIPELINE_NAME \
     --location=REGION

出力例を以下に示します。

 createTime: '2022-06-28T18:05:52.403999904Z'
 cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
 destinations: ...
 name: projects/PROJECT_ID/locations/REGION/pipelines/PIPELINE_NAME
 uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
 updateTime: '2022-06-28T18:09:18.650727516Z'

cryptokeyName 値は、パイプラインに使用される Cloud KMS 鍵を示しています。

パイプラインの CMEK を無効にする

パイプラインに関連付けられた CMEK による保護を無効にできます。パイプラインを介して配信されるイベントは、Google が所有し管理する鍵によって引き続き保護されます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [パイプライン] ページに移動します。

    [Pipelines] に移動

  2. パイプラインの名前をクリックします。

  3. [パイプラインの詳細] ページで、 [編集] をクリックします。

  4. [パイプラインの編集] ページで、[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオフにします。

  5. [保存] をクリックします。

gcloud

gcloud beta eventarc pipelines update コマンドを使用して、パイプラインの CMEK を無効にします。

gcloud beta eventarc pipelines update PIPELINE_NAME \
    --location=REGION \
    --clear-crypto-key

Google API ソースで CMEK を有効にする

GoogleApiSource リソースで CMEK を有効にすると、そのリソースに対して収集されたすべてのメッセージが CMEK 鍵で完全に暗号化されます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。

    [バス] に移動

  2. バスを作成するか、バスを更新する場合はバスの名前をクリックします。

  3. [バスの詳細] ページで、 [編集] をクリックします。

  4. メッセージの送信元を追加するには、[] [ソースを追加] をクリックします。

    メッセージソースがすでに存在する場合は、まずそのソースを削除してから、新しいメッセージソースを追加する必要があります。

  5. [メッセージ送信元を追加] ペインで、Google API メッセージ プロバイダのデフォルト値 google-api-source を受け入れます。

  6. [暗号化] で [Cloud KMS 鍵] を選択し、次の操作を行います。

    1. [鍵の種類] リストで、鍵を管理する方法を選択します。

      鍵を手動で管理することも、Autokey を使用してキーリングと鍵をオンデマンドで生成することもできます。Autokey オプションが無効になっている場合、このオプションは現在のリソースタイプとまだ統合されていません。

    2. [顧客管理の暗号鍵を選択] で鍵を選択します。

      顧客管理の暗号鍵を表示する前に、リージョンを選択する必要があります。

    3. (省略可)鍵のリソース名を手動で入力するには、[顧客管理の暗号鍵を選択] リストで [手動でキーを入力] をクリックして、指定された形式で鍵の名前を入力します。

    4. プロンプトが表示されたら、Eventarc Service Agentcloudkms.cryptoKeyEncrypterDecrypter ロールを付与します。

  7. [作成] をクリックします。

    これにより、Google ソースから直接イベントを自動的に収集できます。すべてのイベント メッセージは CMEK 鍵で完全に暗号化されます。

    GoogleApiSource と同じ Google Cloud プロジェクトのリソースからのイベントのみが公開されます。詳細については、Google ソースからイベントを公開するをご覧ください。

  8. [保存] をクリックします。

gcloud

gcloud beta eventarc google-api-sources update コマンドを使用して、GoogleApiSource リソースの CMEK を有効にします。

gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \
    --location=REGION \
    --crypto-key=KEY

次のように置き換えます。

Cloud KMS の使用状況を確認する

リソースが CMEK に準拠していることを確認します。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。

    [バス] に移動

  2. Cloud KMS 鍵を使用してメッセージ ソースを保護したバスの名前をクリックします。

  3. [バスの詳細] ページで、 [編集] をクリックします。

    メッセージの送信元を暗号化する鍵が一覧表示されます。

gcloud

gcloud beta eventarc google-api-sources describe コマンドを使用して、GoogleApiSource リソースの CMEK を確認します。

  gcloud beta eventarc google-api-sources describe GOOGLE_API_SOURCE_NAME \
      --location=REGION

出力例を以下に示します。

  createTime: '2022-06-28T18:05:52.403999904Z'
  cryptoKeyName: projects/PROJECT_ID/locations/REGION/keyRings/RING_NAME/cryptoKeys/KEY_NAME
  destination: projects/PROJECT_ID/locations/REGION/messageBuses/BUS_NAME
  name: projects/PROJECT_ID/locations/REGION/googleApiSources/GOOGLE_API_SOURCE_NAME
  uid: 5ea277f9-b4b7-4e7f-a8e0-6ca9d7204fa3
  updateTime: '2022-06-28T18:09:18.650727516Z'

cryptokeyName 値は、パイプラインに使用される Cloud KMS 鍵を示しています。

Google API ソースの CMEK を無効にする

Google API ソースに関連付けられた CMEK による保護を無効にできます。GoogleApiSource リソースで収集されたイベントは、Google が所有し管理する鍵によって引き続き保護されます。

コンソール

  1. Google Cloud コンソールで、[Eventarc] > [バス] ページに移動します。

    [バス] に移動

  2. CMEK を使用してメッセージ ソースを保護したバスの名前をクリックします。

  3. [バスの詳細] ページで、 [編集] をクリックします。

  4. Cloud KMS 鍵で暗号化されたメッセージ送信元を削除するには、[ リソースを削除] をクリックします。

  5. 必要に応じて、メッセージの送信元を再度追加します。

gcloud

gcloud beta eventarc google-api-sources update コマンドを使用して、GoogleApiSource リソースの CMEK を無効にします。

gcloud beta eventarc google-api-sources update GOOGLE_API_SOURCE_NAME \
    --location=REGION \
    --clear-crypto-key

Cloud KMS 鍵の無効化と有効化

鍵バージョンには、データの暗号化、復号、署名、検証に使用する暗号鍵マテリアルが保存されます。この鍵バージョンを無効にすると、鍵で暗号化されたデータにアクセスできなくなります。

Eventarc が Cloud KMS 鍵にアクセスできない場合、イベント ルーティングは FAILED_PRECONDITION エラーで失敗し、イベントの配信が停止します。無効状態の鍵を有効にすると、暗号化されたデータに再度アクセスできます。

Cloud KMS 鍵を無効にする

Eventarc が鍵を使用してイベントデータを暗号化または復号できないようにするには、次のいずれかを行います。

  • バスまたはパイプラインに構成した鍵バージョンを無効にすることをおすすめします。これは、特定の鍵に関連付けられている Eventarc Advanced バスまたはパイプラインにのみ影響します。
  • 省略可: Eventarc サービス アカウントで cloudkms.cryptoKeyEncrypterDecrypter ロールを取り消します。この操作は、CMEK で暗号化されたイベントをサポートするプロジェクトのすべての Eventarc リソースに影響します。

いずれのオペレーションでも即時のアクセス取り消しは保証されませんが、通常は Identity and Access Management(IAM)の変更のほうがより速く反映されます。詳細については、Cloud KMS リソースの整合性アクセス権の変更の伝播をご覧ください。

Cloud KMS 鍵を再度有効にする

イベントの配信とルーティングを再開するには、Cloud KMS へのアクセスを復元します。

監査ロギングとトラブルシューティング

鍵を有効または無効にすると、Cloud KMS により監査ログが生成されます。このログは、メッセージの暗号化または復号で Eventarc Advanced リソースが鍵を使用したときにも生成されます。詳細については、Cloud KMS 監査ロギングの情報をご覧ください。

Cloud External Key Manager(Cloud EKM)を介して外部管理鍵を使用する場合に発生する可能性のある問題を解決するには、Cloud EKM エラー リファレンスをご覧ください。

料金

バスの統合により、鍵オペレーション以外の追加の費用は発生しません。鍵オペレーションの費用は Google Cloud プロジェクトに課金されます。パイプラインで CMEK を使用すると、Pub/Sub の料金に基づいて Cloud KMS サービスへのアクセスに対して課金されます。

最新の料金に関する詳細については、Cloud KMS の料金をご覧ください。

次のステップ