顧客管理の暗号鍵(CMEK)

デフォルトでは、Dialogflow CX はお客様のコンテンツを保存時に 暗号化します。Dialogflow CX は、お客様が追加の操作を行うことなく暗号化を処理します。このオプションは、Google のデフォルトの暗号化と呼ばれます。 Google のデフォルト の暗号化では、Google 独自の暗号化データに使用されているのと同じ堅牢な鍵管理システムが使用されます。このシステムには、鍵の厳格なアクセス制御と 監査が含まれます。

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

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

保護対象データ

すべての Dialogflow CX エージェント の保存データを CMEK で保護できます。

制限事項

  • 鍵のローテーションはサポートされていますが、データの再暗号化はサポートされていません。以前に暗号化されたデータを新しい鍵バージョンで再暗号化することはサポートされていません。
  • 次のリージョンはサポートされていません:
    • global
  • プロジェクトのロケーションごとに 1 つの鍵を使用する必要があります。
  • CMEK が有効になっているエージェントを復元するには、Cloud Storage オプションを選択する必要があります。
  • CMEK 統合されていないプロジェクトの既存のリソースを、CMEK 統合に遡って統合することはできません。代わりに、CMEK 用の新しいプロジェクトでリソースをエクスポートして復元します。
  • Vertex AI Agent Builder には Cloud Key Management Service の制限がいくつかあります

キーの作成

鍵を作成するには、Cloud KMS を使用します。手順については、 対称鍵の作成をご覧ください。鍵を作成または選択するときは、次の点を構成してください。

  • ロケーションが一致しない場合、リクエストが失敗するため、エージェントに使用するロケーションを選択します。

Dialogflow サービス アカウントを特定する

Dialogflow サービス アカウントを特定する手順は次のとおりです。

  1. 会話エージェント コンソールを開きます。
  2. プロジェクトを選択します。
  3. エージェントを選択します。
  4. ナビゲーション メニューで [設定] をクリックし、[セキュリティ] [タブ] に移動します。
  5. [セキュリティ設定を管理する] をクリックして、 CCAI コンソールにリダイレクトします。
  6. CCAI コンソールで、[CMEK] タブに移動します。
  7. [サービス アカウントを確認または作成] をクリックします。
  8. 表示されるサービス アカウント名(service-665989447347@gcp-sa-ccai-cmek.IAM.gserviceaccount.com など)をメモします。

サービス アカウントに権限を付与する

サービス アカウントに権限を付与する手順は次のとおりです。

  1. Cloud KMS ページに移動します。
  2. 作成したキーリングを選択します。
  3. そのキーリング内で作成した鍵を選択します。
  4. [権限] タブに移動します。
  5. [アクセス権を付与] をクリックします。
  6. [新しいプリンシパル] フィールドに、前の手順で特定した Dialogflow サービス アカウントを入力します。
  7. [ロールを選択] リストで、[Cloud KMS 暗号鍵の暗号化/復号] を選択します。
  8. [保存] をクリックします。

鍵のリソース名をコピーする

鍵のリソース名をコピーする手順は次のとおりです。

  1. KMS 鍵の詳細ページに移動します。
  2. [アクション] メニューをクリックし、[リソース名をコピー] を選択します。

この操作により、KMS 鍵のフルパス(たとえば、 projects/<var>PROJECT_ID</var>/locations/<var>LOCATION_ID</var>/keyRings/<var>KEY_RING</var>/cryptoKeys/<var>KEY_ID</var>)がコピーされます。

Dialogflow で CMEK を有効にする

Dialogflow で CMEK を有効にする手順は次のとおりです。

  1. CCAI コンソールの [CMEK] タブに戻ります。
  2. コピーした鍵のリソース名を、CMEK を有効にするロケーションの [] フィールドに貼り付けます。
  3. [保存] をクリックします。

これにより、選択したロケーションで CMEK を有効にする長時間実行オペレーション(LRO)が開始されます。このプロセスには 2 ~ 3 分かかります。

鍵を使用するようにエージェントを構成する

エージェントを作成するときに、そのロケーション と、その ロケーションに を使用するか CMEK を使用するかを指定します。 Google-managed encryption key

CLI を使用して CMEK を設定する

次のコマンドを使用して CMEK を設定することもできます。これは、複数のリージョンに設定する場合に便利です。

  1. Google Cloud CLI を使用して、プロジェクトの CCAI CMEK サービス アカウントを作成します。 詳細については、gcloud services identity のドキュメントをご覧ください。

     gcloud beta services identity create --service=dialogflow.googleapis.com --project=PROJECT_ID

    サービス アカウントが作成されます。作成レスポンスでは返されませんが、次の形式になります。

     service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com
  2. CCAI CMEK サービス アカウントに Cloud KMS 暗号鍵の暗号化/復号のロールを付与して、サービスが鍵を使用して暗号化と復号を行えるようにします 。

     gcloud kms keys add-iam-policy-binding KMS_KEY_ID \
     --project=PROJECT_ID \
     --location=LOCATION_ID \
     --keyring=KMS_KEY_RING \
     --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-ccai-cmek.iam.gserviceaccount.com \
     --role=roles/cloudkms.cryptoKeyEncrypterDecrypter

API を使用して鍵を構成し、設定を確認する

  1. Dialogflow CX ロケーションの鍵を構成するには、InitializeEncryptionSpec API を呼び出して、次の変数を指定します。

    • PROJECT_ID: プロジェクト ID。 Google Cloud
    • LOCATION_ID: Dialogflow CX で CMEK を有効にするために選択したロケーション。
    • KMS_KEY_RING: KMS 鍵が作成されたキーリング。キーリング内のロケーション( projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING など)は、CMEK を有効にするロケーションと一致する必要があります。
    • KMS_KEY_ID: 選択したロケーションで Dialogflow CX データの暗号化と復号に使用される KMS 鍵の名前。

    次に例を示します。

     curl -X POST \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        -H "Content-Type: application/json; charset=utf-8" \
        -d "{ encryption_spec: { kms_key: 'projects/PROJECT_ID/locations/LOCATION_ID/keyRings/KMS_KEY_RING/cryptoKeys/KMS_KEY_ID' } }" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec:initialize"

    JSON レスポンスは次の例のようになります。

     {
       "name": "projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
     }
  2. 長時間実行オペレーション(LRO)の結果を取得するには、GetOperation API を呼び出します。

    次に例を示します。

     curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/operations/OPERATION_ID"
  3. ロケーションに構成された暗号鍵を取得するには、GetEncryptionSpec API を呼び出します。

    次に例を示します。

     curl -X GET \
        -H "Authorization: Bearer $(gcloud auth print-access-token)" \
        "https://LOCATION_ID-dialogflow.googleapis.com/v2/projects/PROJECT_ID/locations/LOCATION_ID/encryptionSpec"

鍵を取り消す

鍵に対する Dialogflow CX のアクセス権を取り消すには、KMS 鍵のバージョンを無効にする か、サービス アカウントの Cloud KMS 暗号鍵の暗号化/復号ロールを KMS 鍵から削除します

鍵を取り消すと、暗号化されたデータに Dialogflow CX からアクセスできなくなり、鍵の権限が復元されるまでサービスは動作しなくなります。