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

デフォルトでは、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 が使用するチャネルに CMEK を構成し、そのチャネルを通過するイベントを暗号化できます。

CMEK でチャネルを有効にすると、本人だけがアクセスできる暗号鍵を使用して、関連するデータ(トランスポート レイヤとして使用される Pub/Sub トピックなど)が保護されます。

Google Cloud プロジェクトで Google チャネルに対して CMEK を有効にすると、そのプロジェクトとリージョンの Google イベントタイプのすべての Eventarc トリガーがその CMEK 鍵で完全に暗号化されます。CMEK 鍵をトリガーごとに適用することはできません。

始める前に

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 フラグを指定してコマンドを実行してください。

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 KEY_RING \
    --location LOCATION \
    --member serviceAccount:SERVICE_AGENT_EMAIL \
    --role roles/cloudkms.cryptoKeyEncrypterDecrypter

以下を置き換えます。

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

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

Google イベントタイプで CMEK を有効にする

Google イベントタイプをルーティングする Eventarc トリガーは、プロジェクトとリージョンに固有の仮想チャネル(Google チャネル)にイベントを公開します。この仮想チャネルは、すべての Eventarc リージョンで使用できます。

Google Cloud プロジェクトで Google チャネルに対して CMEK を有効にすると、そのプロジェクトとリージョンの Google イベントタイプのすべての Eventarc トリガーがその CMEK 鍵で完全に暗号化されます。複数の CMEK 鍵を追加して、それぞれを Google チャネルの特定のリージョンに関連付けることができます。CMEK 鍵をトリガーごとに適用することはできません。

コンソール

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

    Eventarc に移動

  2. Google プロバイダがあるチャネルをクリックします。

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

  4. [暗号鍵を追加] をクリックします。

  5. リージョンを選択し、[CMEK 暗号鍵] リストで、リージョンに作成したキーリングを選択します。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。

  6. (省略可)鍵のリソース名を手動で入力するには、[CMEK 暗号鍵] リストで [鍵が表示されない場合は、鍵のリソース ID を入力してください。] をクリックして、指定された形式で鍵の名前を入力します。

  7. プロンプトが表示されたら、eventarc.serviceAgent ロールを持つ Eventarc サービス アカウントに cloudkms.cryptoKeyEncrypterDecrypter ロールを付与します。

  8. (省略可)[暗号鍵を追加] をクリックして、別のリージョン用に作成した別のキーリングを追加します。

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

gcloud

 gcloud eventarc google-channels update \
    --location=LOCATION \
    --crypto-key=KEY

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

  • LOCATION: 保護される Google チャネルのロケーション。使用する鍵の場所と一致する必要があります。
  • KEY: Cloud KMS 鍵の完全修飾名。projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 形式で指定します。

CMEK で包括的な保護を行うために、独自のトピックを使用して Pub/Sub トリガーを作成する場合は、トピックで KMS 鍵を構成することをおすすめします。詳細については、Pub/Sub トピックの構成をご覧ください。

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

チャネルが CMEK に対応していることを確認するには:

コンソール

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

    Eventarc に移動

  2. イベント プロバイダとして Google Cloud ソースが表示され、CMEK を使用して保護したリージョンが表示されているトリガーをクリックします。

  3. [トリガーの詳細] ページで、[暗号化] ステータスに「Events encrypted using Customer-managed encryption keys」というメッセージが表示されます。

gcloud

 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 鍵を示しています。

サードパーティ チャネルで CMEK を有効にする

サードパーティの Eventarc チャネルは、Eventarc ソースを提供する Google Cloud 以外のエンティティが宛先とやり取りするためのリソースです。このチャネルはリージョンに固有であり、サードパーティ チャネルごとに鍵を 1 つだけ追加できます。

サードパーティ チャネルで CMEK を有効にするには:

コンソール

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

    Eventarc に移動

  2. サードパーティのプロバイダがあるチャネルをクリックします。

  3. [チャネルの詳細] ページで、[編集] をクリックします。

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

  5. [CMEK 暗号鍵] リストで、リージョンに作成したキーリングを選択します。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。

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

  7. プロンプトが表示されたら、eventarc.serviceAgent ロールを持つ Eventarc サービス アカウントに cloudkms.cryptoKeyEncrypterDecrypter ロールを付与します。

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

gcloud

 gcloud eventarc channels update CHANNEL_NAME \
    --location=LOCATION \
    --crypto-key=KEY

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

  • CHANNEL_NAME: サードパーティ チャネルの名前。新しいサードパーティ チャネルを作成するには、チャネルを作成するをご覧ください。
  • LOCATION: 保護するサードパーティ チャネルのロケーション。鍵の場所と一致する必要があります。
  • KEY: Cloud KMS 鍵の完全修飾名。projects/PROJECT_NAME/locations/LOCATION/keyRings/RING_NAME/cryptoKeys/KEY_NAME 形式で指定します。

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

チャネルが CMEK に対応していることを確認するには:

コンソール

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

    Eventarc に移動

  2. イベント プロバイダとしてサードパーティのソースが使用され、CMEK を使用して保護したリージョンが使用されているトリガーをクリックします。

  3. [トリガーの詳細] ページで、[暗号化] のステータスに「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 鍵を示しています。

CMEK を無効にする

チャネルに関連付けられた CMEK による保護を無効にできます。このようなチャネルを通じて配信されるイベントは、Google が所有し管理する鍵によって引き続き保護されます。チャネルに関連付けられた CMEK による保護を削除するには:

コンソール

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

    Eventarc に移動

  2. チャネルのタイプに応じて、次の操作を行います。

    Google チャネル

    1. Google プロバイダがあるチャネルをクリックします。
    2. [チャネルの編集] ページで、[CMEK 暗号鍵] リストにポインタを置くと、項目を削除」ボタンが表示されます。
    3. 項目を削除」をクリックします。
    4. [保存] をクリックします。

    サードパーティ チャネル

    1. サードパーティのプロバイダがあるチャネルをクリックします。
    2. [チャネルの詳細] ページで、[編集] をクリックします。
    3. [チャネルの編集] ページで、[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオフにします。
    4. [保存] をクリックします。

gcloud

チャネルのタイプに応じて、次の操作を行います。

Google チャネル

gcloud eventarc google-channels \
    update --clear-crypto-key

サードパーティ チャネル

gcloud eventarc channels CHANNEL_NAME \
    update --clear-crypto-key

Cloud KMS 鍵の無効化と有効化

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

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

Cloud KMS 鍵を無効にする

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

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

Cloud KMS 鍵を再度有効にする

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

料金

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

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

次のステップ