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

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

概要

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

暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵 (CMEK)を、Cloud KMS の 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. Service Extensions サービス アカウントへのアクセス権を付与します 。 gcloud kms keys add-iam-policy-binding コマンドを実行します。

      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 の割り当てと Service Extensions

Service Extensions で 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 鍵を使用するようにプラグインを更新することはできます。

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

次のステップ