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

このページでは、顧客管理の暗号鍵(CMEK)を使用して、Service Extensions プラグインに保存されているコンテンツを暗号化する方法について説明します。

概要

デフォルトでは、Service Extensions はお客様のコンテンツを保存時に暗号化します。Service Extensions では、ユーザーが追加で操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Service Extensions などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。

CMEK を使用してリソースを設定した後は、Service Extensions リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。

すべての暗号オペレーションは、鍵のタイプに関係なく、鍵を所有する Google Cloud プロジェクトに課金されます。料金情報については、Cloud KMS の料金をご覧ください。

鍵を作成して権限を付与する

次の手順では、プラグインの鍵を作成し、その鍵を使用してプラグイン データを暗号化および復号する権限を付与する方法について説明します。

  1. 鍵を管理する Google Cloud プロジェクトで、次の操作を行います。

    1. キーを作成するには、Cloud Key Management Service API を有効にします

    2. 次のいずれかのオプションを使用してキーリングと鍵を作成します。

      Cloud KMS 鍵のロケーションは、暗号化するプラグインのロケーションと一致する必要があります。

  2. Service Extensions サービス アカウントは、Service Extensions プロジェクトに存在する必要があります。サービス アカウント名は service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com です。ここで、PROJECT_NUMBER は Service Extensions が実行されている Google Cloud プロジェクトのプロジェクト番号です。

    サービス アカウントは、Service Extensions プロジェクトで最初のプラグインを作成するときに自動的に作成されます。プロジェクトでまだプラグインを作成していない場合は、次のコマンドを実行してサービス アカウントを作成します。

    gcloud beta services identity create \
        --service=networkactions.googleapis.com \
        --project=PROJECT
    

    PROJECT は、Service Extensions が実行されているプロジェクトの ID に置き換えます。

  3. 作成した鍵の Service Extensions サービス アカウントに Cloud KMS CryptoKey の暗号化/復号のロールroles/cloudkms.cryptoKeyEncrypterDecrypter)を付与します。

    コンソール

    1. Google Cloud コンソールで、[鍵管理] ページに移動します。

      [鍵管理] に移動

    2. 作成した鍵を選択します。

    3. Service Extensions サービス アカウントにアクセス権を付与します。

      1. [情報パネルを表示] を選択します。
      2. [メンバーを追加] をクリックします。
      3. Service Extensions サービス アカウントを追加します。サービス アカウントは service-PROJECT_NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com です。
      4. [ロールを選択] で、[Cloud KMS > Cloud KMS 暗号鍵の暗号化/復号] を選択します。
      5. [保存] をクリックします。
    4. 前の手順を繰り返して、プラグイン作成者のアカウントにアクセス権を付与します。

    5. [鍵管理] ページに戻り、鍵をもう一度選択します。

    6. [情報パネルを表示] を選択します。[ロール/メンバー] 列にロールが表示されます。

    gcloud

    1. gcloud kms keys add-iam-policy-binding コマンドを実行して、Service Extensions サービス アカウントにアクセス権を付与します。

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] KEY_NAME \
          --location LOCATION
          --keyring=KEYRING_NAME \
          --member=serviceAccount:service-PROJECT-NUMBER@gcp-sa-networkactions.iam.gserviceaccount.com \
          --role=roles/cloudkms.cryptoKeyEncrypterDecrypter
      

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

      • PROJECT: 鍵を含むプロジェクトの ID
      • KEY_NAME: 鍵名
      • LOCATION: 鍵のロケーション
      • KEYRING_NAME: キーリング名
      • PROJECT-NUMBER: Google Cloud プロジェクトのプロジェクト番号
    2. member をプラグイン作成者のアカウントに設定して、前の手順を繰り返します。

プラグインを作成するとき、またはプラグインを更新するときに、CMEK 鍵を指定します。この鍵は、プラグインのイメージと構成データの暗号化に使用されます。その他のプラグイン データは、Google のデフォルトの暗号化によって保護されます。

自動再暗号化

KMS 鍵のプライマリ バージョンが変更されると(ユーザーによる手動変更または自動ローテーションによる変更)、その鍵で保護されているプラグイン データは、新しい鍵バージョンで自動的に再暗号化されます。

鍵のトラッキング

鍵のトラッキングを使用すると、鍵が保護するプラグイン リソースを一覧表示できます。詳細については、鍵の使用状況を表示するをご覧ください。

Cloud Key Management Service の割り当てとサービス拡張機能

サービス拡張機能で CMEK 鍵を使用すると(次のオペレーションなど)、プロジェクトで Cloud KMS 暗号リクエストの割り当てが消費されることがあります。

  • CMEK で保護されたプラグインの作成または更新
  • CMEK で保護されたプラグインの新しいバージョンを追加する、またはメイン バージョンを変更する
  • plugin_config_data フィールドが設定されている CMEK で保護されたプラグインのバージョンを一覧表示する
  • プラグインを拡張機能に接続する

アタッチされたプラグインでは、復号オペレーションも時間とともに発生します。

ハードウェア(Cloud HSM)鍵または外部(Cloud EKM)鍵を使用する場合、CMEK 鍵を使用する暗号化と復号のオペレーションは Cloud KMS の割り当てに影響します。

CMEK で暗号化されたプラグインへのアクセス権を削除する

CMEK で暗号化されたプラグインへのアクセス権を削除する方法はいくつかあります。

鍵を無効にするか破棄する前に、Service Extensions サービス アカウントから権限を取り消すことをおすすめします。

アクセス権を削除した場合の影響

CMEK で保護されたデータは、Artifact Registry からダウンロードされたイメージと、直接提供された(plugin_config_data フィールド経由)プラグイン構成データで構成されます。

プラグインの暗号鍵を無効にするか破棄すると、CMEK で保護されているすべてのプラグイン データに数分以内にアクセスできなくなります。プラグインのキーが取り消されてから、プラグインのすべてのサービング レプリカがトラフィックのサービングを停止するまでに、数十分かかることがあります。

プラグイン名、説明、ラベル、ロギング構成などのプラグイン メタデータには引き続きアクセスできます。

その結果、アクティブなプラグイン(拡張機能に接続されているプラグイン)を保護するキーへのアクセスを削除すると、プラグインがトラフィックを処理できなくなります。プラグインへのすべてのリクエストが失敗します。

プラグインの呼び出しが失敗した場合、拡張機能の動作は fail_open フィールドによって異なります。

  • フィールドが true に設定されている場合、リクエストはターゲット サービスに進みます。プラグインの呼び出しが失敗したことを示すことはありません。
  • フィールドが false に設定されている場合、リクエストはターゲット サービスに到達しません。

制限事項

  • プラグインに設定された CMEK 保護は、Service Extensions に限定されます。

    他の Google プロダクトのプラグイン リソースを保護するには、それらのプロダクトで CMEK を有効にします。Artifact Registry にアップロードされたプラグイン イメージについては、Artifact Registry の CMEK を設定します。プラグインで生成されたログを保護するには、Cloud Logging の CMEK を構成します。

  • プラグインの暗号化モード(Google 管理または CMEK)は変更できません。ただし、別の KMS 鍵を使用するようにプラグインを更新できます。

  • リージョン プラグインのみがサポートされています。また、プラグインは、プラグインと同じリージョンにある鍵でのみ暗号化できます。

次のステップ