デフォルトでは、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 でこの機能を使用する前に、以下の準備を行う必要があります。
コンソール
-
Enable the Cloud KMS and Eventarc APIs.
- キーリングを作成します。
- 指定したキーリングの鍵を作成します。
gcloud
gcloud
コンポーネントを更新します。gcloud components update
- 暗号鍵を格納するプロジェクトで Cloud KMS API と Eventarc API を有効にします。
gcloud services enable cloudkms.googleapis.com eventarc.googleapis.com
- キーリングを作成します。
- 指定したキーリングの鍵を作成します。
すべてのフラグと有効な値については、--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 鍵をトリガーごとに適用することはできません。
コンソール
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 チャネルのロケーション。使用する鍵の場所と一致する必要があります。KEY
: Cloud KMS 鍵の完全修飾名。projects/PROJECT_NAME/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
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 を有効にするには:
コンソール
Google Cloud コンソールで、[Eventarc] > [チャネル] ページに移動します。
サードパーティのプロバイダがあるチャネルをクリックします。
[チャネルの詳細] ページで、[編集] をクリックします。
[チャネルの編集] ページで、[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオンにします。
[CMEK 暗号鍵] リストで、リージョンに作成したキーリングを選択します。チャネルの暗号鍵は、リージョンごとに 1 つだけ追加できます。
(省略可)使用する鍵のリソース名を手動で入力するには、[CMEK 暗号鍵] リストで [手動でキーを入力] をクリックして、指定された形式で鍵の名前を入力します。
プロンプトが表示されたら、
eventarc.serviceAgent
ロールを持つ Eventarc サービス アカウントにcloudkms.cryptoKeyEncrypterDecrypter
ロールを付与します。[保存] をクリックします。
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 に対応していることを確認するには:
コンソール
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 鍵を示しています。
CMEK を無効にする
チャネルに関連付けられた CMEK による保護を無効にできます。このようなチャネルを通じて配信されるイベントは、Google が所有し管理する鍵によって引き続き保護されます。チャネルに関連付けられた CMEK による保護を削除するには:
コンソール
Google Cloud コンソールで、[Eventarc] > [チャネル] ページに移動します。
チャネルのタイプに応じて、次の操作を行います。
Google チャネル
- Google プロバイダがあるチャネルをクリックします。
- [チャネルの編集] ページで、[CMEK 暗号鍵] リストにポインタを置くと、 「項目を削除」ボタンが表示されます。
- 「項目を削除」をクリックします。
- [保存] をクリックします。
サードパーティ チャネル
- サードパーティのプロバイダがあるチャネルをクリックします。
- [チャネルの詳細] ページで、[編集] をクリックします。
- [チャネルの編集] ページで、[顧客管理の暗号鍵(CMEK)を使用する] チェックボックスをオフにします。
- [保存] をクリックします。
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 が鍵を使用してイベントデータを暗号化または復号できないようにするには、次のいずれかを行います。
- チャネルに構成した鍵バージョンを無効にすることをおすすめします。この操作は、特定の鍵に関連付けられている Eventarc チャネルとトリガーにのみ影響します。
- 省略可: Eventarc サービス アカウントで
cloudkms.cryptoKeyEncrypterDecrypter
ロールを取り消します。この操作は、CMEK で暗号化されたイベントをサポートするすべてのプロジェクトの Eventarc チャネルとトリガーに影響します。
いずれのオペレーションでも即時のアクセス取り消しは保証されませんが、通常は Identity and Access Management(IAM)の変更のほうがより速く反映されます。詳細については、Cloud KMS リソースの整合性とアクセス権の変更の伝播をご覧ください。
Cloud KMS 鍵を再度有効にする
イベントの配信と公開を再開するには、Cloud KMS へのアクセスを復元します。
料金
この統合により、鍵オペレーション以外の追加の費用は発生しません。鍵オペレーションの費用は Google Cloud プロジェクトに課金されます。チャネルで CMEK を使用すると、Pub/Sub の料金に基づいて Cloud KMS サービスへのアクセスに対して課金されます。
最新の料金に関する詳細については、Cloud KMS の料金をご覧ください。