本页面介绍了 Gemini Enterprise 管理员如何使用 API 为各个 Gemini Enterprise 应用管理精细访问权限控制。
如果您需要为应用和数据存储区配置精细的资源级访问权限控制,请参阅为应用和数据存储区配置精细访问权限控制。
默认情况下,IAM 权限通常在项目级层进行管理。应用级 IAM 可实现更精细的控制,使管理员能够:
- 限制用户对同一 Google Cloud 项目中特定应用的访问权限。
- 根据组织需求和数据孤岛,为 Gemini Enterprise 部署调整权限。
例如,假设某个组织有一个 HR 应用和一个公司级应用。拥有项目级权限的 HR 团队成员可以访问这两个应用。相比之下,使用应用级 IAM 政策,您可以仅向销售团队成员授予对公司级应用的访问权限,从而阻止他们访问 HR 应用。

准备工作
确认您拥有 Gemini Enterprise Admin (
roles/discoveryengine.agentspaceAdmin) 角色。确认所有 Gemini Enterprise 企业用户都拥有有效许可,并且在项目级被授予 Gemini Enterprise Restricted User (
roles/discoveryengine.agentspaceRestrictedUser) 角色。如需查看相关说明,请参阅向用户授予权限。此角色本身不授予对任何应用的访问权限。它会提供用户所需的项目级访问权限,然后您再授予对各个应用的访问权限。如果您使用自定义项目级角色而不是预定义的
roles/discoveryengine.agentspaceRestrictedUser角色,请确保您的自定义角色包含discoveryengine.locations.buildAuthorizationUrl、discoveryengine.dataStores.get、discoveryengine.collections.get和discoveryengine.devToolsConfigs.get权限。如果省略discoveryengine.devToolsConfigs.get,当 Web 应用检查devToolsConfig时,会导致 Cloud Audit Logs 中出现403 PERMISSION_DENIED错误。
从项目级访问权限过渡到应用级访问权限
如需限制用户只能访问特定应用,您必须将其项目级 Gemini Enterprise User 角色替换为 Gemini Enterprise Restricted User 角色,然后在单个应用级别授予 Gemini Enterprise User 角色。
如需将用户的项目级访问权限转换为应用级访问权限,请按以下步骤操作。您可以使用 Google Cloud 控制台进行项目级更改,并使用 API 进行应用级授权, Google Cloud 控制台不支持此操作。
- 在 Google Cloud 控制台中,前往 IAM 页面。
- 找到该用户,然后从其项目级权限中移除 Gemini Enterprise User (
roles/discoveryengine.agentspaceUser) 角色。 - 如果您尚未向用户授予 Gemini Enterprise Restricted User (
roles/discoveryengine.agentspaceRestrictedUser) 角色,请在项目级层授予该角色。 - 使用
setIamPolicy方法为用户授予其需要访问的每个特定应用的 Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 角色。如需了解详情,请参阅管理应用的 IAM 政策。
管理应用的 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 User (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 联合的有效成员类型。如需授予访问权限,请将主账号添加到
members数组中。例如,"user:cloudysanfrancisco@gmail.com"或"group:mcymbalgroup@google.com"。如需撤消访问权限,请从
members数组中移除主账号。
POOL_ID:工作负载身份池的 ID。SUBJECT_ID:特定身份的主题标识符。NAME:属性的名称。VALUE:属性的值。PROJECT_ID:您的项目的 ID。ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:us(表示美国多区域)eu(表示欧盟多区域)global(表示全球位置)
LOCATION:数据存储区的多区域:global、us或eu。APP_ID:要配置的应用的 ID。
接下来怎么做?
如果您想删除具有 IAM 政策的应用,可以在删除应用之前从政策中移除用户。如需了解详情,请参阅删除具有 IAM 政策的应用的最佳实践。