顧客管理の暗号鍵(CMEK)

デフォルトでは、Dialogflow はお客様のコンテンツを保存時に暗号化します。暗号化は Dialogflow が行うため、ユーザー側での操作は必要ありません。このオプションは、Google のデフォルトの暗号化と呼ばれます。

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

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

保護対象データ

すべての会話エージェント(Dialogflow CX)エージェントの保存データは、CMEK で保護できます。

制限事項

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

キーの作成

鍵を作成するには、KMS サービスを使用します。手順については、対称鍵の作成をご覧ください。鍵を作成または選択するときは、次のように構成する必要があります。

  • エージェントに使用するロケーションを選択する必要があります。そうしないと、リクエストが失敗します。

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

エージェントを作成する際は、エージェントのロケーションと、Google が管理する鍵または顧客管理の暗号鍵のどちらをエージェントが使用するか指定できます。このときに選択します。

前提条件

  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

会話エージェント(Dialogflow CX)のロケーションのキーを構成する

  1. InitializeEncryptionSpec API を使用してキーを構成します。

    次の変数を指定する必要があります。

    • PROJECT_ID: Google Cloud プロジェクト ID。
    • 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. 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"

CMEK の設定を確認する

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 鍵のバージョンを無効にするか、KMS 鍵からサービス アカウントの Cloud KMS CryptoKey の暗号化/復号ロールを削除します。

鍵が取り消されると、暗号化されたデータに会話エージェント(Dialogflow CX)がアクセスできなくなり、鍵の権限が復元されるまでサービスは動作状態になりません。