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

准备工作
确认您拥有 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 政策
如需授予或撤消用户对应用的访问权限,请使用应用的 IAM
政策更新
setIamPolicy
方法。
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 政策的应用的最佳实践。