デフォルトでは、Gemini Enterprise はお客様のコンテンツを保存時に暗号化します。Gemini Enterprise では、ユーザーが追加で操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。
暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵(CMEK)を、Gemini Enterprise などの CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。 Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することも可能です。 データを保護する対称鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵を制御および管理します。
CMEK を使用してリソースを設定した後は、Gemini Enterprise リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
Gemini Enterprise の Cloud KMS の制限事項
Gemini Enterprise の 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 構成を使用する必要があります。
サードパーティ コネクタの単一リージョン鍵では、鍵のローテーションはサポートされていません。サードパーティ コネクタに関連付けられているデータストアを保護する鍵バージョンを無効にするか破棄すると、コネクタは機能しなくなります。
鍵のローテーションは分析に対応していません。データストアの鍵をローテーションすると、そのデータストアを使用するアプリでアナリティクスが表示されなくなります。
- BigQuery と Cloud Storage の「import-once」と「periodic」のデータストアを除き、ファーストパーティ コネクタは CMEK に準拠していません。
- Terraform を使用して Gemini Enterprise の CMEK を構成することはできません。
始める前に
次の前提条件を満たしていることを確認してください。
マルチリージョン対称 Cloud KMS 鍵を作成します。Cloud KMS ドキュメントのキーリングを作成すると鍵を作成するをご覧ください。
ローテーション期間を [なし(手動ローテーション)] に設定します。
[ロケーション] で [マルチリージョン] を選択し、プルダウンから [europe] または [us] を選択します。
サードパーティ コネクタを使用する場合は、単一リージョンの対称 Cloud KMS 鍵を 3 つ作成します。それ以外の場合は省略可能です。
ローテーション期間を [なし(手動ローテーション)] に設定します。
[ロケーション] で [リージョン] を選択します。
次の表の単一リージョンをロケーション プルダウンから選択します。サードパーティ コネクタ用に Cloud KMS 鍵を登録する場合は、3 つの鍵すべてが必要です。
us single-regions
europe single-regions
us-east1
europe-west1
us-central1
europe-west4
us-west1
europe-north1
鍵に対する CryptoKey Encrypter/Decrypter IAM ロール(
roles/cloudkms.cryptoKeyEncrypterDecrypter
)が Discovery Engine サービス エージェントに付与されいる。 サービス エージェント アカウントのメールアドレスは、service-PROJECT_NUMBER@gcp-sa-discoveryengine.iam.
という形式です。サービス エージェントにロールを追加する一般的な手順については、単一のロールの付与または取り消しをご覧ください。鍵に対する CryptoKey Encrypter/Decrypter IAM ロール(
roles/cloudkms.cryptoKeyEncrypterDecrypter
)が Cloud Storage サービス エージェントに付与されています。このロールが付与されていない場合、Discovery Engine はインポートに必要な CMEK で保護された一時バケットとディレクトリを作成できないため、CMEK で保護されたデータストアのデータ インポートは失敗します。このページの鍵の登録手順を完了するまで、鍵で管理するデータストアやアプリを作成しないでください。
Cloud KMS 鍵を登録する
CMEK を使用してデータを暗号化するには、マルチリージョン鍵を登録する必要があります。必要に応じて、データに単一リージョン鍵が必要な場合(サードパーティ コネクタを使用する場合など)は、単一リージョン鍵を登録する必要があります。
マルチリージョン Cloud KMS 鍵を登録する
始める前に
以下のことを確認してください。
リージョンが鍵で保護されていない。REST コマンドを使用してリージョンにキーがすでに登録されている場合、次の手順は失敗します。ロケーションの Gemini Enterprise にアクティブな鍵があるかどうかを確認するには、Cloud KMS 鍵を表示するをご覧ください。
ディスカバリー エンジン管理者(
roles/discoveryengine.admin
)のロールがある。
手順
REST
Gemini Enterprise 用に独自の鍵を登録する手順は次のとおりです。
登録するキーを使用して
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
に設定します。
省略可: メソッドから返された
name
値を記録し、長時間実行オペレーションの詳細を取得するの手順に沿って、オペレーションが完了するタイミングを確認します。通常、キーの登録には数分かかります。
オペレーションが完了すると、そのマルチリージョン内の新しいデータストアが鍵で保護されます。データストアの作成に関する一般的な情報については、アプリとデータストアについてをご覧ください。
コンソール
手順
Gemini Enterprise 用に独自の鍵を登録する手順は次のとおりです。
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
[設定] をクリックして、[CMEK] タブを選択します。
us または eu のロケーションの [キーを追加] をクリックします。
[鍵を追加] をクリックします。 [Cloud KMS 鍵の選択] プルダウンをクリックして、鍵を選択します。
鍵が別のプロジェクトにある場合は、[プロジェクトを切り替え] をクリックし、プロジェクト名をクリックして、作成した鍵の名前を入力し、鍵を選択します。
鍵のリソース名がわかっている場合は、[手動で入力] をクリックし、鍵のリソース名を貼り付けて [保存] をクリックします。
[OK] > [保存] をクリックします。
これにより、鍵が登録され、default_cmek_config
という CmekResource が作成されます。
取り込まれたデータが検索結果に表示されるまでには数時間かかることがあります。
サードパーティ コネクタ用に単一リージョンの Cloud KMS 鍵を登録する
REST
Gemini Enterprise 用に独自の鍵を登録する手順は次のとおりです。
登録するキーを指定して
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
に設定します。
省略可: メソッドから返された
name
値を記録し、長時間実行オペレーションの詳細を取得するの手順に沿って、オペレーションが完了するタイミングを確認します。通常、キーの登録には数分かかります。
オペレーションが完了すると、そのマルチリージョン内の新しいデータストアが鍵で保護されます。データストアの作成に関する一般的な情報については、アプリとデータストアについてをご覧ください。
サードパーティ コネクタを使用していて、独自の鍵でサードパーティ データを保護する場合は、次のように 3 つの追加の単一リージョン鍵を作成します。
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", "singleRegionKeys": [ \ {"kmsKey": "projects/KMS_PROJECT_ID/locations/REGION_1/keyRings/KEY_RING_1/cryptoKeys/KEY_NAME_1"}, \ {"kmsKey": "projects/KMS_PROJECT_ID/locations/REGION_2/keyRings/KEY_RING_2/cryptoKeys/KEY_NAME_2"}, \ {"kmsKey": "projects/KMS_PROJECT_ID/locations/REGION_3/keyRings/KEY_RING_3/cryptoKeys/KEY_NAME_3"} \ ] \ }' \ "https://LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/cmekConfigs/CMEK_CONFIG_ID?set_default=SET_DEFAULT"
次のように置き換えます。
KMS_PROJECT_ID
: 鍵を含むプロジェクトの ID。プロジェクト番号は使用できません。REGION
の値を設定します。REGION_1
:eu
ロケーションの場合はeurope-west1
に設定し、us
ロケーションの場合はus-east1
に設定します。REGION_2
:eu
ロケーションの場合はeurope-west4
に設定し、us
ロケーションの場合はus-central1
に設定します。REGION_3
:eu
ロケーションの場合はeurope-north1
に設定し、us
ロケーションの場合はus-west1
に設定します。
KEY_RING
: 鍵を含むキーリングの名前。KEY_NAME
: マルチリージョン鍵の名前。LOCATION
: データストアのマルチリージョン(us
またはeu
)。PROJECT_ID
: データストアを含むプロジェクトの ID。CMEK_CONFIG_ID
: CmekConfig リソースの ID に設定します。ステップ 1 と同じ値(default_cmek_config
など)を使用します。SET_DEFAULT
: マルチリージョンで作成される後続のデータストアのデフォルト鍵としてこの鍵を使用するには、true
に設定します。
コンソール
始める前に
リージョンが鍵で保護されていないことを確認します。REST コマンドを使用してリージョンにキーがすでに登録されている場合、次の手順は失敗します。
ロケーションに有効な鍵があるかどうかを確認するには、Cloud KMS 鍵を表示するをご覧ください。
手順
Gemini Enterprise のサードパーティ コネクタを使用するときに独自の鍵を登録する手順は次のとおりです。
Google Cloud コンソールで、[Gemini Enterprise] ページに移動します。
[設定] をクリックして、[CMEK] タブを選択します。
[us] または [eu] のロケーションの [キーを追加] をクリックします。
[鍵を追加] をクリックします。 [Cloud KMS 鍵の選択] プルダウンをクリックして、鍵を選択します。
鍵が別のプロジェクトにある場合は、[プロジェクトを切り替え] をクリックし、プロジェクト名をクリックして、作成した鍵の名前を入力し、鍵を選択します。
鍵のリソース名がわかっている場合は、[手動で入力] をクリックし、鍵のリソース名を貼り付けて [保存] をクリックします。
[OK] > [保存] をクリックします。
これにより、鍵が登録され、
default_cmek_config
という CmekResource が作成されます。
サードパーティのデータソースを接続する場合は、[単一リージョンキーを設定] をクリックします。
[単一リージョンキーを設定] をクリックします。 [Cloud KMS 鍵の選択] プルダウンをクリックし、各リージョンの鍵を選択します。
鍵が別のプロジェクトにある場合は、[プロジェクトを切り替え] をクリックし、プロジェクト名をクリックして、作成した鍵の名前を入力し、鍵を選択します。
鍵のリソース名がわかっている場合は、[手動で入力] をクリックし、鍵のリソース名を貼り付けて [保存] をクリックします。
[保存] をクリックします。
これにより、単一リージョンの鍵が
default_cmek_config
という CmekResource に登録されます。
取り込まれたデータが検索結果に表示されるまでには数時間かかることがあります。
Cloud KMS 鍵を表示する
Gemini Enterprise に登録されている鍵を表示するには、次のいずれかを行います。
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 鍵の登録を解除する
Gemini Enterprise からキーの登録を解除する手順は次のとおりです。
登録解除する 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" } }
省略可: メソッドから返された
name
値を記録し、長時間実行オペレーションの詳細を取得するの手順に沿って、オペレーションが完了するタイミングを確認します。通常、キーの削除には数分かかります。
データストアが鍵で保護されていることを確認する
鍵の登録後に作成されたデータストアは、鍵で保護されます。特定のデータストアが鍵で保護されていることを確認する手順は次のとおりです。
データストアで次の 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"
コマンドの出力を確認します。
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 鍵で保護されている他のデータ
鍵は、データストア内のデータだけでなく、Gemini Enterprise が保持するアプリ所有の他の種類のコア情報(フォローアップ検索中に生成されたセッション データなど)も保護できます。アプリに関連付けられたデータストアが CMEK で保護されている場合、この種のコア情報は CMEK で保護されます。
セッションが保護されていることを確認する特定のコマンドを実行することはできませんが、データストアが鍵で保護されていることを確認するコマンドを実行して、cmekConfig リソースに鍵が表示された場合は、セッション データが保護されていることを確認できます。
Cloud KMS 鍵をローテーションする
鍵をローテーションすると、鍵の新しいバージョンが作成され、その新しいバージョンがメインのバージョンとして設定されます。元のバージョンの鍵をしばらく有効にしてから、無効にします。これにより、古い鍵を使用している可能性のある長時間実行オペレーションを完了させます。
次の手順では、Gemini Enterprise データストアの鍵をローテーションする手順の概要を示します。鍵のローテーションに関する一般的な情報については、Cloud KMS ガイドの鍵のローテーションをご覧ください。
重要: レコメンデーション アプリやアナリティクスを必要とするアプリに関連付けられたデータストアで鍵をローテーションしないでください。また、サードパーティ コネクタに使用される単一リージョン鍵をローテーションしないでください。Gemini Enterprise における Cloud KMS の制限事項をご覧ください。
鍵を再登録します。これを行うには、Cloud KMS 鍵を登録するの手順 1 を繰り返します。
Cloud KMS ガイドの鍵の管理セクションの手順に沿って、次の操作を行います。
新しい鍵バージョンを作成して有効にし、メインにします。
古い鍵バージョンを有効のままにします。
1 週間ほど経過したら、古い鍵バージョンを無効にして、すべてが以前と同じように動作していることを確認します。
後日、古い鍵バージョンを無効にしても問題が発生していないことを確認できたら、古い鍵バージョンを破棄できます。
Cloud KMS 鍵が無効または取り消された場合
鍵が無効になった場合、または鍵の権限が取り消された場合、データストアは 15 分以内にデータの取り込みとデータの提供を停止します。 ただし、鍵の再有効化や権限の復元には時間がかかります。データストアがデータの提供を再開するまでに最大 24 時間かかることがあります。
したがって、必要な場合を除き、キーを無効にしないでください。データストアで鍵を無効化または有効化するのは時間のかかるオペレーションです。たとえば、鍵を無効と有効の間で繰り返し切り替えると、データストアが保護状態になるまでに時間がかかります。鍵を無効にしてすぐに再度有効にすると、鍵が最初にデータストアから無効になり、その後再度有効になるため、数日間のダウンタイムが発生する可能性があります。