顧客管理の暗号鍵

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

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

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

Vertex AI Search での Cloud KMS の制限事項

Vertex AI Search の CMEK(Cloud KMS)鍵には、次の制限が適用されます。

  • データストアにすでに適用されている鍵は変更できません。
  • 鍵を登録すると、登録解除やデータストアからの削除はできません。
  • US または EU のマルチリージョン データストアとアプリ(グローバルでないもの)を使用する必要があります。マルチリージョンとデータ所在地(グローバル以外のロケーションの使用に関連する上限など)の詳細については、ロケーションをご覧ください。
  • プロジェクトに複数の鍵を登録する必要がある場合は、Google アカウント チームに連絡して、CMEK 構成の割り当ての増加をリクエストしてください。その際、複数の鍵が必要な理由を説明してください。

  • CMEK で外部鍵マネージャー(EKM)を使用することは、許可リスト付きで一般提供されています。CMEK で EKM を使用するには、Google アカウント チームにお問い合わせください。

    CMEK を使用する EKM または HSM には次の制限が適用されます。

    • 暗号化と復号の呼び出しの EKM と HSM の割り当てには、1,000 QPM 以上のヘッドルームが必要です。割り当てを確認する方法については、Cloud KMS の割り当てを確認するをご覧ください。

    • EKM を使用している場合、鍵は 30 秒を超える任意の時間枠の 90% 以上でアクセス可能である必要があります。この時間内に鍵にアクセスできないと、インデックス登録と検索の鮮度に悪影響を及ぼす可能性があります。

    • 課金に関する問題、継続した割り当て不足の問題、または 12 時間以上の継続したアクセス不可能の問題がある場合、サービスは EKM 鍵または HSM 鍵に関連付けられた CmekConfig を自動的に停止します。

  • 鍵がプロジェクトに登録される前に作成されたデータストアは、鍵で保護できません。
  • 複数のデータストアがあるアプリの場合、1 つのデータストアで CMEK 構成を使用している場合は、他のすべてのデータストアでも同じ CMEK 構成を使用する必要があります。

  • サードパーティ コネクタの単一リージョン鍵では、鍵のローテーションはサポートされていません。サードパーティ コネクタに関連付けられているデータストアを保護する鍵バージョンを無効にするか破棄すると、コネクタは機能しなくなります。

  • 鍵のローテーションは分析に対応していません。データストアの鍵をローテーションすると、そのデータストアを使用するアプリでアナリティクスが表示されなくなります。

  • Terraform を使用して Vertex AI Search の CMEK を構成することはできません。

サードパーティ コネクタの単一リージョンキーについて

サードパーティのコネクタを使用していて、独自の鍵を使用して接続されたデータを保護する場合は、マルチリージョン鍵に加えて、3 つの補足的な単一リージョン鍵を作成する必要があります。鍵を作成するコマンドは、次の手順(Cloud KMS 鍵を登録する)で説明します。

単一キーは次のリージョンで作成する必要があります。

マルチリージョン シングル リージョン
eu europe-west1 europe-west4 europe-north1
us us-east1 us-central1 us-west1

始める前に

次の前提条件を満たしていることを確認してください。

  • マルチリージョン対称 Cloud KMS 鍵を作成します。Cloud KMS ドキュメントのキーリングを作成する鍵を作成するをご覧ください。

    • ローテーション期間を [なし(手動ローテーション)] に設定します。

    • [ロケーション] で [マルチリージョン] を選択し、プルダウンから [europe] または [us] を選択します。

  • 鍵に対する CryptoKey Encrypter/Decrypter IAM ロール(roles/cloudkms.cryptoKeyEncrypterDecrypter)が Discovery Engine サービス エージェントに付与されいる。 サービス エージェント アカウントのメールアドレスは、service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.gserviceaccount.com という形式です。サービス エージェントにロールを追加する一般的な手順については、単一のロールの付与または取り消しをご覧ください。

  • 鍵に対する CryptoKey Encrypter/Decrypter IAM ロール(roles/cloudkms.cryptoKeyEncrypterDecrypter)が Cloud Storage サービス エージェントに付与されています。このロールが付与されていない場合、Discovery Engine はインポートに必要な CMEK で保護された一時バケットとディレクトリを作成できないため、CMEK で保護されたデータストアのデータ インポートは失敗します。

  • このページの鍵の登録手順を完了するまで、鍵で管理するデータストアやアプリを作成しないでください。

Cloud KMS 鍵を登録する

CMEK を使用してデータを暗号化するには、マルチリージョン鍵を登録する必要があります。必要に応じて、データに単一リージョン鍵が必要な場合(サードパーティ コネクタを使用する場合など)は、単一リージョン鍵を登録する必要があります。

始める前に

以下のことを確認してください。

  • リージョンが鍵で保護されていない。REST コマンドを使用してリージョンにキーがすでに登録されている場合、次の手順は失敗します。ロケーションの Vertex AI Search に有効な鍵があるかどうかを確認するには、Cloud KMS 鍵を表示するをご覧ください。

  • ディスカバリー エンジン管理者roles/discoveryengine.admin)のロールがある。

手順

REST

Vertex AI Search に独自の鍵を登録する手順は次のとおりです。

  1. 登録するキーを使用して UpdateCmekConfig メソッドを呼び出します。

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{"kmsKey":"projects/KMS_PROJECT_ID/locations/KMS_LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME"}' \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID?set_default=SET_DEFAULT"
    

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

    • KMS_PROJECT_ID: 鍵を含むプロジェクトの ID。プロジェクト番号は使用できません。
    • KMS_LOCATION: 鍵のマルチリージョン(us または europe)。
    • KEY_RING: 鍵を含むキーリングの名前。
    • KEY_NAME: 鍵の名前
    • PROJECT_ID: データストアを含むプロジェクトの ID。
    • LOCATION: データストアのマルチリージョン(us または eu)。
    • CMEK_CONFIG_ID: CmekConfig リソースの一意の ID を設定します(例: default_cmek_config)。
    • SET_DEFAULT: マルチリージョンで作成される後続のデータストアのデフォルト鍵としてこの鍵を使用するには、true に設定します。
  2. 省略可: メソッドから返された name 値を記録し、長時間実行オペレーションの詳細を取得するの手順に沿って、オペレーションが完了するタイミングを確認します。

    通常、キーの登録には数分かかります。

    オペレーションが完了すると、そのマルチリージョン内の新しいデータストアが鍵で保護されます。データストアの作成に関する一般的な情報については、アプリとデータストアについてをご覧ください。

コンソール

手順

Vertex AI Search に独自の鍵を登録する手順は次のとおりです。

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

    AI Applications

  2. [設定] をクリックして、[CMEK] タブを選択します。

  3. us または eu のロケーションの [キーを追加] をクリックします。

    場所のキーを追加します。
    [鍵を追加] をクリックします。
    1. [Cloud KMS 鍵の選択] プルダウンをクリックして、鍵を選択します。

      • 鍵が別のプロジェクトにある場合は、[プロジェクトを切り替え] をクリックし、プロジェクト名をクリックして、作成した鍵の名前を入力し、鍵を選択します。

      • 鍵のリソース名がわかっている場合は、[手動で入力] をクリックし、鍵のリソース名を貼り付けて [保存] をクリックします。

    2. [OK] > [保存] をクリックします。

これにより、鍵が登録され、default_cmek_config という CmekResource が作成されます。

取り込まれたデータが検索結果に表示されるまでには数時間かかることがあります。

Cloud KMS 鍵を表示する

Vertex AI Search に登録されている鍵を表示するには、次のいずれかを行います。

  • CmekConfig リソース名がある場合は、GetCmekConfig メソッドを呼び出します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"
    

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

    • LOCATION: データストアのマルチリージョン(us または eu)。
    • PROJECT_ID: データを含むプロジェクトの ID。
    • CMEK_CONFIG_ID: CmekConfig リソースの ID。コンソールを使用して鍵を登録した場合、ID は default_cmek_config です。

    curl 呼び出しとレスポンスの例を次に示します。

    $ curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
    
    { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true }

  • CmekConfig リソース名がない場合は、ListCmekConfigs メソッドを呼び出します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs"
    

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

    • LOCATION: データストアのマルチリージョン(us または eu)。
    • PROJECT_ID: データを含むプロジェクトの ID。

    curl 呼び出しとレスポンスの例を次に示します。

    $ curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs"
    
    { "cmek_configs": [ { "name": "projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config", "kmsKey": "projects/key-project-456/locations/us/keyRings/my-key-ring/cryptoKeys/my-key" "state": "ACTIVE" "isDefault": true } ] }

Cloud KMS 鍵の登録を解除する

Vertex AI Search から鍵の登録を解除する手順は次のとおりです。

  1. 登録解除する CmekConfig リソース名を指定して DeleteCmekConfig メソッドを呼び出します。

    curl -X DELETE \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID"
    

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

    • LOCATION: データストアのマルチリージョン(us または eu)。
    • PROJECT_ID: データストアを含むプロジェクトの ID。
    • CMEK_CONFIG_ID: CmekConfig リソースの ID。コンソールを使用して鍵を登録した場合、ID は default_cmek_config です。

    curl 呼び出しとレスポンスの例を次に示します。

    $ curl -X DELETE
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/cmekConfigs/default_cmek_config"
     
    {
     "name": "projects/my-ai-app-project-123/locations/us/operations/delete-cmek-config-56789",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.discoveryengine.v1.DeleteCmekConfigMetadata"
     }
    }
    

  2. 省略可: メソッドから返された name 値を記録し、長時間実行オペレーションの詳細を取得するの手順に沿って、オペレーションが完了するタイミングを確認します。

    通常、キーの削除には数分かかります。

データストアが鍵で保護されていることを確認する

鍵の登録後に作成されたデータストアは、鍵で保護されます。特定のデータストアが鍵で保護されていることを確認する手順は次のとおりです。

  1. データストアで次の curl コマンドを実行します。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "x-goog-user-project: PROJECT_ID" \
    "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID"
    

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

    • LOCATION: データストアのマルチリージョン(us または eu)。
    • PROJECT_ID: データストアを含むプロジェクトの ID。
    • DATA_STORE_ID: データストアの ID。

    curl 呼び出しの例を次に示します。

    curl -X GET
    -H "Authorization: Bearer $(gcloud auth print-access-token)"
    -H "Content-Type: application/json"
    -H "x-goog-user-project: my-ai-app-project-123"
    "https://us-discoveryengine.googleapis.com/v1/projects/my-ai-app-project-123/locations/us/collections/default_collection/dataStores/my-data-store-1"
    

  2. コマンドの出力を確認します。cmekConfig フィールドが出力に含まれ、kmsKey フィールドに登録した鍵が表示されている場合、データストアは鍵で保護されています。

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

    {
     "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1",
     "displayName": "my-data-store-1",
     "industryVertical": "GENERIC",
     "createTime": "2023-09-05T21:20:21.520552Z",
     "solutionTypes": [
       "SOLUTION_TYPE_SEARCH"
     ],
     "defaultSchemaId": "default_schema",
     "cmekConfig": {
       "name": "projects/969795412903/locations/us/collections/default_collection/dataStores/my-data-store-1/cmekConfigs/default_cmek_config",
       "kmsKey": "projects/my-ai-app-project-123/locations/us/keyRings/my-key-ring/cryptoKeys/my-key"
     }
    }
    

Cloud KMS 鍵で保護されている他のデータ

鍵は、データストア内のデータだけでなく、フォローアップ検索中に生成されたセッション データなど、Vertex AI Search が保持するアプリ所有の他の種類のコア情報を保護することもできます。アプリに関連付けられたデータストアが CMEK で保護されている場合、この種のコア情報は CMEK で保護されます。

セッションが保護されていることを確認する特定のコマンドを実行することはできませんが、データストアが鍵で保護されていることを確認するコマンドを実行して、cmekConfig リソースに鍵が表示された場合は、セッション データが保護されていることを確認できます。

Cloud KMS 鍵をローテーションする

鍵をローテーションすると、鍵の新しいバージョンが作成され、その新しいバージョンがメインのバージョンとして設定されます。元のバージョンの鍵をしばらく有効にしてから、無効にします。これにより、古い鍵を使用している可能性のある長時間実行オペレーションを完了させます。

次の手順では、Vertex AI Search データストアの鍵をローテーションする手順について説明します。鍵のローテーションに関する一般的な情報については、Cloud KMS ガイドの鍵のローテーションをご覧ください。

重要: レコメンデーション アプリやアナリティクスを必要とするアプリに関連付けられたデータストアで鍵をローテーションしないでください。また、サードパーティ コネクタに使用される単一リージョン鍵をローテーションしないでください。Vertex AI Search での Cloud KMS の制限事項をご覧ください。

  1. 鍵を再登録します。これを行うには、Cloud KMS 鍵を登録するの手順 1 を繰り返します。

  2. Cloud KMS ガイドの鍵の管理セクションの手順に沿って、次の操作を行います。

    1. 新しい鍵バージョンを作成して有効にし、メインにします。

    2. 古い鍵バージョンを有効のままにします。

    3. 1 週間ほど経過したら、古い鍵バージョンを無効にして、すべてが以前と同じように動作していることを確認します。

    4. 後日、古い鍵バージョンを無効にしても問題が発生していないことを確認できたら、古い鍵バージョンを破棄できます。

Cloud KMS 鍵が無効または取り消された場合

鍵が無効になった場合、または鍵の権限が取り消された場合、データストアは 15 分以内にデータの取り込みとデータの提供を停止します。 ただし、鍵の再有効化や権限の復元には時間がかかります。データストアがデータの提供を再開するまでに最大 24 時間かかることがあります。

したがって、必要な場合を除き、キーを無効にしないでください。データストアで鍵を無効化または有効化するのは時間のかかるオペレーションです。たとえば、鍵を無効と有効の間で繰り返し切り替えると、データストアが保護状態になるまでに時間がかかります。鍵を無効にしてすぐに再度有効にすると、鍵が最初にデータストアから無効になり、その後再度有効になるため、数日間のダウンタイムが発生する可能性があります。