デフォルトでは、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 KMS の制限事項がいくつかあります。
キーの作成
鍵を作成するには、KMS サービスを使用します。手順については、対称鍵の作成をご覧ください。鍵を作成または選択するときは、次のように構成する必要があります。
- エージェントに使用する ロケーション を選択する必要があります。 そうしないと、リクエストが失敗します。
鍵を使用するようにエージェントを構成する
エージェントを作成する際は、エージェントのロケーションと、Google が管理する鍵または顧客管理の暗号鍵のどちらをエージェントが使用するか指定できます。このときに選択します。
前提条件
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
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 ロケーションの鍵を構成する
InitializeEncryptionSpecAPI を使用して鍵を構成します。次の変数を指定する必要があります。
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" }
GetOperationAPI を使用して、長時間実行オペレーションの結果を確認します。次に例を示します。
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 鍵バージョンを無効にするか、サービス アカウントのCloud KMS 暗号鍵の暗号化/復号ロールを KMS 鍵から削除します。
鍵を取り消すと、暗号化されたデータに Dialogflow CX からアクセスできなくなり、鍵の権限が復元されるまでサービスは動作しなくなります。