このページでは、Gemini Enterprise の管理者が API を使用して、個々の Gemini Enterprise アプリのきめ細かいアクセス制御を管理する方法について説明します。
アプリとデータストアの両方で、きめ細かいリソースレベルのアクセス制御を構成する必要がある場合は、アプリとデータストアのきめ細かいアクセス制御を構成するをご覧ください。
デフォルトでは、IAM 権限はプロジェクト レベルで管理されることがよくあります。アプリレベルの IAM を使用すると、よりきめ細かい制御が可能になり、管理者は次のことができます。
- 同じ Google Cloud プロジェクト内の特定のアプリへのユーザー アクセスを制限する。
- Gemini Enterprise のデプロイで、組織のニーズとデータサイロに合わせて権限を調整します。
たとえば、人事アプリと全社アプリを使用している組織を考えてみましょう。プロジェクト レベルの権限を持つ人事チームのメンバーは、両方のアプリにアクセスできます。一方、アプリレベルの IAM ポリシーを使用すると、セールスチームのメンバーに全社アプリへのアクセス権のみを付与できるため、HR アプリへのアクセスを防ぐことができます。

始める前に
Gemini Enterprise 管理者(
roles/discoveryengine.agentspaceAdmin)ロールがあることを確認します。すべての Gemini Enterprise 企業ユーザーに有効なライセンスがあり、プロジェクト レベルで Gemini Enterprise 制限付きユーザー(
roles/discoveryengine.agentspaceRestrictedUser)ロールが付与されていることを確認します。手順については、ユーザーに権限を付与するをご覧ください。このロール自体では、どのアプリへのアクセス権も付与されません。ユーザーが必要とするプロジェクト レベルのアクセス権を付与し、個々のアプリへのアクセス権を付与します。事前定義された
roles/discoveryengine.agentspaceRestrictedUserロールの代わりにカスタムのプロジェクト レベルのロールを使用する場合は、カスタムロールにdiscoveryengine.locations.buildAuthorizationUrl、discoveryengine.dataStores.get、discoveryengine.collections.get、discoveryengine.devToolsConfigs.getの権限が含まれていることを確認してください。discoveryengine.devToolsConfigs.getを省略すると、ウェブアプリがdevToolsConfigを確認するときに Cloud Audit Logs で403 PERMISSION_DENIEDエラーが発生します。
プロジェクト レベルのアクセスからアプリレベルのアクセスに移行する
ユーザーを特定のアプリに制限するには、プロジェクト レベルの Gemini Enterprise ユーザーロールを Gemini Enterprise 制限付きユーザーロールに置き換え、個々のアプリレベルで Gemini Enterprise ユーザーロールを付与する必要があります。
ユーザーをプロジェクト レベルのアクセスからアプリレベルのアクセスに移行する手順は次のとおりです。プロジェクト レベルの変更には Google Cloud コンソールを使用し、アプリレベルの付与には API を使用します。 Google Cloud コンソールはアプリレベルの付与をサポートしていません。
- Google Cloud コンソールで、[IAM] ページに移動します。
- ユーザーを見つけて、プロジェクト レベルの権限から Gemini Enterprise ユーザー(
roles/discoveryengine.agentspaceUser)ロールを削除します。 - まだ付与していない場合は、プロジェクト レベルで Gemini Enterprise 制限付きユーザー(
roles/discoveryengine.agentspaceRestrictedUser)ロールをユーザーに付与します。 setIamPolicyメソッドを使用して、ユーザーがアクセスする必要がある特定のアプリごとに、Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)ロールをユーザーに付与します。詳細については、アプリの IAM ポリシーを管理するをご覧ください。
アプリの IAM ポリシーを管理する
Gemini Enterprise アプリへのアクセスを管理するには、getIamPolicy API メソッドと setIamPolicy API メソッドを使用します。
次の手順では、現在のポリシーを取得し、それを更新してユーザー アクセス権を付与または取り消す方法について説明します。
アプリの IAM ポリシーを取得する
getIamPolicy メソッドを使用して、アプリの現在の IAM ポリシーを取得します。現在の権限を上書きしないように、まず既存のポリシーを取得することをおすすめします。
REST
curl -X GET \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:getIamPolicy"
次のように置き換えます。
PROJECT_ID: 実際のプロジェクトの ID。ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。- 米国のマルチリージョンの場合は
us - EU のマルチリージョンの場合は
eu - グローバル ロケーションの場合は
global
- 米国のマルチリージョンの場合は
LOCATION: データストアのマルチリージョン(global、us、eu)APP_ID: 構成するアプリの ID。
アプリの IAM ポリシーを更新する
アプリへのユーザー アクセス権を付与または取り消すには、setIamPolicy メソッドを使用してアプリの IAM ポリシーを更新します。
IAM ポリシーは、Gemini Enterprise ユーザー(roles/discoveryengine.agentspaceUser)ロールを使用して、ユーザーにアプリへの直接アクセス権を付与します。
REST
curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json" \
-d '{
"policy": {
"etag": "ETAG",
"bindings": [
{
"role": "roles/discoveryengine.agentspaceUser",
"members": [
"user:USER_EMAIL",
"group:GROUP_EMAIL",
"principal://iam.googleapis.com/locations/global/workloadIdentityPools/POOL_ID/subject/SUBJECT_ID",
"principalSet://iam.googleapis.com/locations/global/workloadIdentityPools/POOL_ID/attribute.NAME/VALUE"
]
}
]
}
}' \
"https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:setIamPolicy"
次のように置き換えます。
ETAG:getIamPolicyメソッドを使用したときにレスポンスとして取得したetag値。USER_EMAIL、GROUP_EMAIL: 1 つ以上のユーザーまたはグループのメールアドレス。userとgroupに加えて、principalとprincipalSetは Workload Identity 連携の有効なメンバータイプです。アクセス権を付与するには、プリンシパルを
members配列に追加します。例:"user:cloudysanfrancisco@gmail.com"、"group:mcymbalgroup@google.com"アクセス権を取り消すには、
members配列からプリンシパルを削除します。
POOL_ID: Workload Identity プールの ID。SUBJECT_ID: 特定の ID のサブジェクト識別子。NAME: 属性の名前。VALUE: 属性の値。PROJECT_ID: 実際のプロジェクトの ID。ENDPOINT_LOCATION: API リクエストのマルチリージョン。次のいずれかの値を指定します。- 米国のマルチリージョンの場合は
us - EU のマルチリージョンの場合は
eu - グローバル ロケーションの場合は
global
- 米国のマルチリージョンの場合は
LOCATION: データストアのマルチリージョン(global、us、eu)。APP_ID: 構成するアプリの ID。
次のステップ
IAM ポリシーが適用されているアプリを削除する場合は、アプリを削除する前にポリシーからユーザーを削除できます。詳細については、IAM ポリシーが適用されているアプリを削除する際のベスト プラクティスをご覧ください。