本頁說明 Gemini Enterprise 管理員如何使用 API,管理個別 Gemini Enterprise 應用程式的精細存取權控管。
如需在應用程式和資料儲存庫中,設定資源層級的精細存取控管,請參閱「為應用程式和資料儲存庫設定精細存取控管」。
根據預設,IAM 權限通常是在專案層級管理。應用程式層級的 IAM 可提供更精細的控制選項,讓管理員:
- 限制使用者存取同一 Google Cloud 專案中的特定應用程式。
- 根據機構需求和資料孤島,調整 Gemini Enterprise 部署作業的權限。
舉例來說,假設某個機構有 HR 應用程式和全公司適用的應用程式。如果 HR 小組成員擁有專案層級的權限,就能存取這兩個應用程式。相較之下,使用應用程式層級的 IAM 政策時,您可以只授予銷售團隊成員公司全體適用的應用程式存取權,防止他們存取人力資源應用程式。

事前準備
確認您具備 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 稽核記錄會發生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 政策
如要管理 Gemini Enterprise 應用程式的存取權,可以使用 getIamPolicy 和 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代表歐盟多區域global適用於全域位置
LOCATION:資料儲存庫的多區域:global、us或euAPP_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: 一或多個使用者或群組電子郵件地址。除了user和group,principal和principalSet也是 Workload Identity Federation 的有效成員類型。如要授予存取權,請將主體新增至
members陣列。例如"user:cloudysanfrancisco@gmail.com"或"group:mcymbalgroup@google.com"。如要撤銷存取權,請從
members陣列中移除主體。
POOL_ID:Workload Identity Pool 的 ID。SUBJECT_ID:特定身分的受試者 ID。NAME:屬性的名稱。VALUE:屬性的值。PROJECT_ID:專案的 ID。ENDPOINT_LOCATION:API 要求適用的多區域。請指定下列其中一個值:us適用於美國多區域eu代表歐盟多區域global適用於全域位置
LOCATION:資料儲存庫的多區域:global、us或eu。APP_ID:要設定的應用程式 ID。
後續步驟
如要刪除含有 IAM 政策的應用程式,請先從政策中移除使用者,再刪除應用程式。詳情請參閱「刪除含有 IAM 政策的應用程式的最佳做法」。