为应用和数据存储区配置精细的访问权限控制

本页介绍了 Gemini Enterprise 管理员如何使用Google Cloud 控制台、Google Cloud CLI 或 REST API 配置精细的资源级 IAM 权限,以限制对特定 Gemini Enterprise 应用和数据存储区的访问权限。

如果您只需要在应用级别限制最终用户访问权限,而无需配置数据存储区权限或自定义项目级角色,请参阅为应用配置访问权限控制。

概览

默认情况下,在 Google Cloud项目级层授予的 IAM 权限适用于项目中的所有 Gemini Enterprise 应用和数据存储区。如果您的组织需要将用户限制为只能访问单个项目中的特定应用或数据存储区,则可以使用资源级访问权限控制。

借助资源级访问权限控制,管理员可以:

  • 向用户授予对特定应用和关联数据存储区的访问权限,而不会公开同一项目中的其他应用。
  • 委托特定应用的管理员权限或只读监控权限,而无需授予广泛的项目级管理权限。
  • 强制执行组织数据边界和合规性政策。

访问控制的运作方式

如需授予资源级访问权限,管理员必须为每个目标用户或群组配置两个角色绑定。权限是单独评估的:如需从应用中的数据存储区接收回答,用户必须同时获得目标应用和目标数据存储区的权限。

角色绑定级别 角色类型 用途、范围和角色示例
项目级 自定义角色

您在本指南中创建的自定义角色会授予用户在整个项目中进行身份验证或加载管理中心商品详情页面所需的权限,而不会公开特定应用或数据存储区内容。

角色示例:

资源层级 预定义角色

您在应用或数据存储区资源上分配的预定义角色会授予仅针对该资源的操作权限,例如聊天、配置设置或查看分析。

角色示例:

示例情境

假设 Cymbal 有一个名为 cymbal-ai-project 的 Google Cloud 项目,其中包含两个应用和多个数据存储区:

示例场景:限制应用和数据存储区之间的访问权限
上下文 Cymbal 的一个 Google Cloud 项目(名为 cymbal-ai-project)包含两个应用:
  • Cymbal Finance 应用,该应用连接到两个数据存储区:General Finance 数据存储区和 Confidential Payroll 数据存储区。
  • Cymbal HR 应用,该应用已连接到 Cymbal HR 数据存储区。
目标 授予 Alex (alex@cymbal.com) 访问权限,使其可以使用 Cymbal Finance 应用并仅查询常规财务数据存储区,同时拒绝其访问机密薪资数据存储区和 Cymbal HR 应用。
所需配置 请按以下步骤配置访问权限控制:
  1. 项目级:在 cymbal-ai-project 上启用应用和数据存储区访问权限控制,并向 Alex 授予项目的 customRestrictedEndUser 角色,以便其浏览器可以向服务进行身份验证。
  2. 资源级:仅向 Alex 授予 Cymbal Finance 应用和常规财务数据存储区的 Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 角色。
结果 当 Alex 登录后,他们可以打开 Cymbal Finance 应用并查询常规财务数据存储区。 即使机密薪资数据存储区连接到同一应用,Alex 也无法查看或查询该数据存储区。尝试访问 Cymbal HR 应用或查询 Cymbal HR 数据存储区也会被拒绝。

下图说明了在此场景中,项目级设置和独立的资源级 IAM 权限如何协同工作:

图表:应用和数据存储区之间的精细 IAM 政策配置。

准备工作

  • 确认您拥有 Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin) 角色。
  • 确保需要受限访问权限的用户未被分配项目级 Discovery Engine 角色。
  • 按照创建自定义项目级角色中的说明,为目标买家角色创建所需的自定义项目级角色。

启用应用和数据存储区访问权限控制

在 Google Cloud 控制台中配置应用和数据存储区的精细权限或查看用户权限标签页之前,请使用 Google Cloud 控制台或 REST API 在您的项目中启用应用和数据存储区访问权限控制:

控制台

如需在 Google Cloud 控制台中启用应用和数据存储区访问权限控制,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,依次前往 Gemini Enterprise > 设置页面。

    转到“设置”

  2. 选择资源访问权限控制标签页。

  3. 开启资源访问权限控制切换开关。

  4. 点击保存。

  5. 在启用资源访问权限控制?对话框中,点击启用。

REST

如需使用 REST API 启用应用和数据存储区访问权限控制,请调用 projects.patch 方法:

curl -X PATCH \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -H "x-goog-user-project: PROJECT_ID" \
  "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID?updateMask=customer_provided_config.resource_access_control_config.data_store_access_control_enabled" \
  -d '{
    "customer_provided_config": {
      "resource_access_control_config": {
        "data_store_access_control_enabled": true
      }
    }
  }'

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
    • us(表示美国多区域)
    • eu(表示欧盟多区域)
    • global(表示全球位置)
    如需了解详情,请参阅为数据存储区指定多区域。

创建自定义项目级角色

自定义项目级角色可授予权限,而无需公开所有项目资源。您只需为每个Google Cloud 项目创建一次自定义角色。

创建自定义受限最终用户角色

customRestrictedEndUser 角色授予最终用户加载 Gemini Enterprise 授权端点和开发者工具配置(discoveryengine.locations.buildAuthorizationUrl 和 discoveryengine.devToolsConfigs.get)所需的项目级权限。它不会授予检查或查询特定应用或数据存储区的权限。

控制台

如需在 Google Cloud 控制台中创建自定义角色,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往角色页面。

    打开“角色”

  2. 选择您的 Google Cloud 项目。

  3. 点击 + 创建自定义角色。

  4. 输入角色详细信息:

    • Title(标题):Custom Gemini Enterprise Restricted End User
    • 说明:Base project-level permissions to access Gemini Enterprise apps。
    • 角色 ID:customRestrictedEndUser
    • 角色发布阶段:选择正式版
  5. 点击 + 添加权限。

  6. 过滤并选择以下权限:

    • discoveryengine.devToolsConfigs.get
    • discoveryengine.locations.buildAuthorizationUrl
  7. 点击 Add(添加)。

  8. 点击创建。

gcloud

如需使用 Google Cloud CLI 创建自定义角色,请按以下步骤操作:

  1. 运行 gcloud iam roles describe 以验证角色是否存在于您的项目中:

    gcloud iam roles describe customRestrictedEndUser --project=PROJECT_ID
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  2. 运行 gcloud iam roles create 以创建角色:

    gcloud iam roles create customRestrictedEndUser \
      --project=PROJECT_ID \
      --title="Custom Gemini Enterprise Restricted End User" \
      --description="Base project-level permissions to access Gemini Enterprise apps." \
      --stage=GA \
      --permissions=discoveryengine.devToolsConfigs.get,discoveryengine.locations.buildAuthorizationUrl
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

REST

如需使用 REST API 创建自定义角色,请调用 roles.create 方法:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "roleId": "customRestrictedEndUser",
    "role": {
      "title": "Custom Gemini Enterprise Restricted End User",
      "description": "Base project-level permissions to access Gemini Enterprise apps.",
      "stage": "GA",
      "includedPermissions": [
        "discoveryengine.devToolsConfigs.get",
        "discoveryengine.locations.buildAuthorizationUrl"
      ]
    }
  }' \
  "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles"

将 PROJECT_ID 替换为您的 Google Cloud项目的 ID。

创建自定义受限管理员角色

customRestrictedAdmin 角色授予项目级权限,使委托管理员和查看者能够在 Google Cloud 控制台中查看资源列表和边栏,而无需授予查看或修改特定应用或数据存储区内容的权限。如需委托对特定应用或数据存储区的管理控制权,请在项目级层分配此自定义角色,然后直接在目标资源上分配 Gemini Enterprise 管理员 (roles/discoveryengine.agentspaceAdmin) 角色。

控制台

如需在 Google Cloud 控制台中创建自定义角色,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往角色页面。

    打开“角色”

  2. 选择您的 Google Cloud 项目。

  3. 点击 + 创建角色。

  4. 输入角色详细信息:

    • Title(标题):Custom Gemini Enterprise Restricted Admin
    • 说明:Base project-level permissions to list and view Gemini Enterprise configuration pages。
    • 角色 ID:customRestrictedAdmin
    • 角色发布阶段:选择正式版。
  5. 点击 + 添加权限。

  6. 过滤并选择以下权限:

    • discoveryengine.aclConfigs.get
    • discoveryengine.collections.list
    • discoveryengine.dataStores.list
    • discoveryengine.devToolsConfigs.get
    • discoveryengine.engines.list
    • discoveryengine.licenseConfigs.list
    • discoveryengine.locations.buildAuthorizationUrl
    • discoveryengine.locations.getConnectorSource
    • discoveryengine.locations.listConnectorSources
    • discoveryengine.projects.get
    • discoveryengine.userStores.listUserLicenses
    • resourcemanager.projects.get
  7. 点击 Add(添加)。

  8. 点击创建。

gcloud

如需使用 Google Cloud CLI 创建自定义角色,请按以下步骤操作:

  1. 运行 gcloud iam roles describe 以验证角色是否存在于您的项目中:

    gcloud iam roles describe customRestrictedAdmin --project=PROJECT_ID
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  2. 运行 gcloud iam roles create 以创建角色:

    gcloud iam roles create customRestrictedAdmin \
      --project=PROJECT_ID \
      --title="Custom Gemini Enterprise Restricted Admin" \
      --description="Base project-level permissions to list and view Gemini Enterprise configuration pages." \
      --stage=GA \
      --permissions=discoveryengine.aclConfigs.get,discoveryengine.collections.list,discoveryengine.dataStores.list,discoveryengine.devToolsConfigs.get,discoveryengine.engines.list,discoveryengine.licenseConfigs.list,discoveryengine.locations.buildAuthorizationUrl,discoveryengine.locations.getConnectorSource,discoveryengine.locations.listConnectorSources,discoveryengine.projects.get,discoveryengine.userStores.listUserLicenses,resourcemanager.projects.get
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

REST

如需使用 REST API 创建自定义角色,请调用 roles.create 方法:

curl -X POST \
  -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type: application/json" \
  -d '{
    "roleId": "customRestrictedAdmin",
    "role": {
      "title": "Custom Gemini Enterprise Restricted Admin",
      "description": "Base project-level permissions to list and view Gemini Enterprise configuration pages.",
      "stage": "GA",
      "includedPermissions": [
        "discoveryengine.aclConfigs.get",
        "discoveryengine.collections.list",
        "discoveryengine.dataStores.list",
        "discoveryengine.devToolsConfigs.get",
        "discoveryengine.engines.list",
        "discoveryengine.licenseConfigs.list",
        "discoveryengine.locations.buildAuthorizationUrl",
        "discoveryengine.locations.getConnectorSource",
        "discoveryengine.locations.listConnectorSources",
        "discoveryengine.projects.get",
        "discoveryengine.userStores.listUserLicenses",
        "resourcemanager.projects.get"
      ]
    }
  }' \
  "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles"

将 PROJECT_ID 替换为您的 Google Cloud项目的 ID。

更新现有自定义角色

如果您的项目中已存在自定义角色,并且您需要添加缺少的权限,请更新该角色:

控制台

如需在 Google Cloud 控制台中更新自定义角色,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往角色页面。

    打开“角色”

  2. 选择您在其中创建了自定义角色的 Google Cloud 项目。

  3. 选择自定义标签页,或过滤列表以找到您的自定义角色(customRestrictedEndUser 或 customRestrictedAdmin)。

  4. 点击自定义角色的名称。

  5. 点击修改角色。

  6. 点击 + 添加权限。

  7. 搜索并选择您要添加的权限,然后点击添加。

  8. 点击保存。

gcloud

如需使用 Google Cloud CLI 更新现有自定义角色,请运行 gcloud iam roles update:

  • 对于受限的最终用户角色,请运行以下命令:

    gcloud iam roles update customRestrictedEndUser \
      --project=PROJECT_ID \
      --add-permissions=discoveryengine.devToolsConfigs.get,discoveryengine.locations.buildAuthorizationUrl
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  • 对于受限管理员角色,请运行以下命令:

    gcloud iam roles update customRestrictedAdmin \
      --project=PROJECT_ID \
      --add-permissions=discoveryengine.locations.buildAuthorizationUrl,discoveryengine.locations.listConnectorSources
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

REST

如需使用 REST API 更新自定义角色,请调用 roles.patch 方法。 请注意,roles.patch 会替换 includedPermissions 列表;请指定您希望角色包含的所有权限:

  • 对于受限的最终用户角色,请运行以下命令:

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "includedPermissions": [
          "discoveryengine.devToolsConfigs.get",
          "discoveryengine.locations.buildAuthorizationUrl"
        ]
      }' \
      "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles/customRestrictedEndUser?updateMask=includedPermissions"
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  • 对于受限管理员角色,请运行以下命令:

    curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "includedPermissions": [
          "discoveryengine.aclConfigs.get",
          "discoveryengine.collections.list",
          "discoveryengine.dataStores.list",
          "discoveryengine.devToolsConfigs.get",
          "discoveryengine.engines.list",
          "discoveryengine.licenseConfigs.list",
          "discoveryengine.locations.buildAuthorizationUrl",
          "discoveryengine.locations.getConnectorSource",
          "discoveryengine.locations.listConnectorSources",
          "discoveryengine.projects.get",
          "discoveryengine.userStores.listUserLicenses",
          "resourcemanager.projects.get"
        ]
      }' \
      "https://iam.googleapis.com/v1/projects/PROJECT_ID/roles/customRestrictedAdmin?updateMask=includedPermissions"
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

在项目级层分配自定义角色

将自定义项目角色分配给目标用户或群组。

控制台

如需使用 Google Cloud 控制台分配自定义角色,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 选择您在其中创建了自定义角色的 Google Cloud 项目。

  3. 点击授予访问权限以添加新的主账号或修改现有主账号。

  4. 在新的主体中,输入用户或群组邮箱的电子邮件地址。

  5. 选择为您的角色创建的自定义角色,例如以下角色之一:

    • 自定义 Gemini Enterprise 受限最终用户
    • 自定义 Gemini Enterprise 受限管理员
  6. 点击保存。

gcloud

如需使用 Google Cloud CLI 分配自定义角色,请运行以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="projects/PROJECT_ID/roles/CUSTOM_ROLE_ID"

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • CUSTOM_ROLE_ID:您要分配的自定义角色的 ID:customRestrictedEndUser 或 customRestrictedAdmin。
  • USER_EMAIL:用户或群组的电子邮件地址。

REST

如需使用 Cloud Resource Manager API 分配自定义角色,请使用“读取-修改-写入”模式完成以下步骤:

  1. 使用 getIamPolicy 方法获取当前 IAM 政策,以检索当前政策及其 etag:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  2. 使用 setIamPolicy 方法设置更新后的 IAM 政策,并提供更新后的政策载荷:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "projects/PROJECT_ID/roles/CUSTOM_ROLE_ID",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
    

    替换以下内容:

    • ETAG:使用 getIamPolicy 方法时,您作为响应获得的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主体绑定。
    • PROJECT_ID:您的 Google Cloud项目的 ID。
    • CUSTOM_ROLE_ID:您要分配的自定义项目级角色的 ID。指定以下其中一项:
      • customRestrictedEndUser:授予项目权限,以便最终用户进行身份验证和访问应用。
      • customRestrictedAdmin:授予项目权限,以便管理员在 Google Cloud 控制台中查看资源列表。
    • USER_EMAIL:用户或群组的电子邮件地址。

配置应用权限

使用Google Cloud 控制台或 REST API 授予目标应用资源资源级权限。

如果您想在应用级 IAM 政策中分配自定义角色(而非预定义角色),请确保自定义角色包含相应预定义角色的所有权限,例如 Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 或 Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin)。

控制台

如需在 Google Cloud 控制台中配置应用权限,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,依次前往 Gemini Enterprise > 应用页面。

    前往应用

  2. 选择目标应用。

  3. 点击用户权限,然后点击添加用户。

  4. 为用户或群组选择角色:

  5. 点击保存。

REST

如需使用 REST API 配置应用权限,请使用“读取-修改-写入”模式完成以下步骤:

  1. 使用 getIamPolicy 方法获取当前 IAM 政策,以检索当前政策及其 etag:

    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 或 eu。
    • APP_ID:要配置的应用的 ID。
  2. 使用 setIamPolicy 方法设置更新后的 IAM 政策,并提供更新后的政策载荷:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "PREDEFINED_ROLE",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/engines/APP_ID:setIamPolicy"
    

    替换以下内容:

    • ETAG:使用 getIamPolicy 方法时,您作为响应获得的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主体绑定。
    • USER_EMAIL:用户或群组的电子邮件地址(例如 alex@example.com)。
      • 如需授予访问权限,请将用户电子邮件地址添加到 members 数组中,每个电子邮件地址都以 user: 为前缀。避免在电子邮件地址前后添加多余空格。
      • 如需撤消访问权限,请从 members 数组中移除相应用户电子邮件地址。
    • PREDEFINED_ROLE:要分配给应用的预定义角色。例如,Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 适用于最终用户,Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin) 适用于管理员,Gemini Enterprise Viewer (roles/discoveryengine.agentspaceViewer) 适用于查看者。如需了解详情,请参阅预定义角色。
    • PROJECT_ID:您的Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • APP_ID:要配置的应用的 ID。

配置数据存储区权限

如需配置数据权限,请使用 Google Cloud 控制台或 REST API 授予目标数据存储区资源级权限。最终用户只能连接到已明确授予其权限的数据存储区并查询其中的数据。

如果您想在数据存储区 IAM 政策中分配自定义角色(而非预定义角色),请确保自定义角色包含相应预定义角色的所有权限,例如 Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 或 Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin)。

对于强制执行最终用户文档权限的第三方连接器,最终用户对各个文档的访问权限仍受从源系统同步的访问权限控制列表 (ACL) 的控制(授予 IAM 访问权限不会绕过源 ACL)。

如需查找数据存储区、集合和实体 ID,请参阅获取数据存储区和实体详情。

控制台

如需在 Google Cloud 控制台中配置数据存储区权限,请按以下步骤操作。在 Google Cloud 控制台中分配给数据存储区的权限会自动传播到任何底层子实体:

  1. 在 Google Cloud 控制台中,依次前往 Gemini Enterprise > 数据存储区页面。

    前往“数据存储区”页面

  2. 点击您的数据存储区的名称。

  3. 依次点击用户权限 > 添加用户。

  4. 为用户或群组选择角色:

  5. 点击保存。

REST

如需使用 REST API 配置数据存储区权限,请展开与您的数据存储区配置相符的部分:

包含实体的数据存储区

对于包含多种实体类型的第三方连接器(例如 Jira、Salesforce、Confluence 或 SharePoint Online),请使用此选项。 使用 REST API 时,权限不会自动从父连接器集合级联到子实体。您必须对父集合资源和所有底层实体数据存储区授予相同的权限(请勿仅为部分实体配置权限)。

请按照以下步骤为包含实体的数据存储区配置权限:

  1. 获取数据连接器集合的当前 IAM 政策:

    调用 getIamPolicy 以检索当前政策及其 etag:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID:getIamPolicy"

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • COLLECTION_ID:数据连接器的集合 ID。如需了解详情,请参阅获取数据存储区和实体详情。
  2. 为数据连接器集合设置更新后的 IAM 政策:

    调用 setIamPolicy,包括 etag 和角色绑定:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "policy": {
        "etag": "ETAG",
        "bindings": [
          {
            "role": "EXISTING_ROLE",
            "members": [
              "user:EXISTING_USER_EMAIL"
            ]
          },
          {
            "role": "PREDEFINED_ROLE",
            "members": [
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }' \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/COLLECTION_ID:setIamPolicy"

    替换以下内容:

    • ETAG:您在第 1 步中使用 getIamPolicy 方法时作为响应获得的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主账号绑定。
    • USER_EMAIL:用户或群组的电子邮件地址。
    • PREDEFINED_ROLE:您要分配给集合的预定义角色。例如,Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 角色适用于最终用户,Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin) 角色适用于管理员,Gemini Enterprise Viewer (roles/discoveryengine.agentspaceViewer) 角色适用于查看者。如需了解详情,请参阅预定义角色。
    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • COLLECTION_ID:数据连接器的集合 ID。
  3. 获取实体数据存储区的当前 IAM 政策:

    在 Gemini Enterprise 中,子实体数据存储区位于 default_collection 下,并以连接器集合 ID 为前缀。对 default_collection 下的实体数据存储区调用 getIamPolicy:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ENTITY_ID:getIamPolicy"

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • DATA_STORE_ENTITY_ID:实体数据存储区的 ID(例如 DataConnector3_entityA)。如需了解详情,请参阅获取数据存储区和实体详情。
  4. 在实体数据存储区中设置更新后的 IAM 政策:

    对包含 etag 的实体数据存储区调用 setIamPolicy:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "policy": {
        "etag": "ETAG",
        "bindings": [
          {
            "role": "EXISTING_ROLE",
            "members": [
              "user:EXISTING_USER_EMAIL"
            ]
          },
          {
            "role": "PREDEFINED_ROLE",
            "members": [
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }' \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ENTITY_ID:setIamPolicy"

    替换以下内容:

    • ETAG:您在第 3 步中使用 getIamPolicy 方法时作为响应获得的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主账号绑定。
    • USER_EMAIL:用户或群组的电子邮件地址。
    • PREDEFINED_ROLE:您要向实体数据存储区分配的预定义角色。例如,Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 角色适用于最终用户,Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin) 角色适用于管理员,Gemini Enterprise Viewer (roles/discoveryengine.agentspaceViewer) 角色适用于查看者。如需了解详情,请参阅预定义角色。
    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • DATA_STORE_ENTITY_ID:实体数据存储区的 ID。

针对数据连接器下的每个实体数据存储区,重复执行第 3 步和第 4 步。如果您稍后将连接器配置为同步其他实体类型,请在每个新创建的实体数据存储区中配置 IAM 政策。

不含实体的数据存储区

对于 Cloud Storage、BigQuery 等独立数据存储区或不包含实体的数据源,请使用此选项。直接在 default_collection 下的单个数据存储区资源上设置权限。

如需为没有实体的数据存储区配置权限,请按以下步骤操作:

  1. 获取数据存储区的当前 IAM 政策:

    调用 getIamPolicy 以检索当前政策及其 etag:

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID:getIamPolicy"

    替换以下内容:

    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • DATA_STORE_ID:数据存储区的 ID。如需了解详情,请参阅获取数据存储区和实体详情。
  2. 在数据存储区中设置更新后的 IAM 政策:

    调用 setIamPolicy,包括 etag 和角色绑定:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "policy": {
        "etag": "ETAG",
        "bindings": [
          {
            "role": "EXISTING_ROLE",
            "members": [
              "user:EXISTING_USER_EMAIL"
            ]
          },
          {
            "role": "PREDEFINED_ROLE",
            "members": [
              "user:USER_EMAIL"
            ]
          }
        ]
      }
    }' \
    "https://ENDPOINT_LOCATION-discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/collections/default_collection/dataStores/DATA_STORE_ID:setIamPolicy"

    替换以下内容:

    • ETAG:您在第 1 步中使用 getIamPolicy 方法时作为响应获得的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主账号绑定。
    • USER_EMAIL:用户或群组的电子邮件地址。
    • PREDEFINED_ROLE:您要向数据存储区分配的预定义角色。例如,Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 角色适用于最终用户,Gemini Enterprise Admin (roles/discoveryengine.agentspaceAdmin) 角色适用于管理员,Gemini Enterprise Viewer (roles/discoveryengine.agentspaceViewer) 角色适用于查看者。如需了解详情,请参阅预定义角色。
    • PROJECT_ID:您的 Google Cloud 项目的 ID。
    • ENDPOINT_LOCATION:API 请求的多区域。请指定以下某个值:
      • us(表示美国多区域)
      • eu(表示欧盟多区域)
      • global(表示全球位置)
      如需了解详情,请参阅为数据存储区指定多区域。
    • LOCATION:数据存储区的多区域:global、us 或 eu。
    • DATA_STORE_ID:数据存储区的 ID。

授予对 Gemini Notebook Enterprise 和 AI 开发者工具功能的访问权限

在项目级层被分配 customRestrictedEndUser 的受限用户将无法访问 AI 开发者工具和 Gemini Notebook Enterprise 等功能,因为其项目角色仅包含基本授权权限。

在项目级层授予完整的 Gemini Enterprise User (roles/discoveryengine.agentspaceUser) 角色会覆盖隔离设置,并公开项目中的所有应用和数据存储区。相反,管理员可以在项目级层授予范围较窄的特定功能角色。

授予对 Gemini Notebook Enterprise 的访问权限

授予 Cloud NotebookLM User (roles/discoveryengine.notebookLmUser) 角色,以允许受限用户创建和使用笔记本,而不会暴露应用或数据存储区:

控制台

如需使用 Google Cloud 控制台授予访问权限,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 选择您的 Google Cloud 项目。

  3. 在权限列表中找到相应用户或群组,然后点击修改主账号。或者,点击授予访问权限以添加新用户。

  4. 在分配角色部分,点击添加其他角色。

  5. 在选择角色字段中,搜索并选择 Cloud NotebookLM User (roles/discoveryengine.notebookLmUser)。

  6. 点击保存。

gcloud

如需使用 Google Cloud CLI 授予访问权限,请运行以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="roles/discoveryengine.notebookLmUser"

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • USER_EMAIL:用户或群组的电子邮件地址。

REST

如需使用 REST API 授予访问权限,请使用 setIamPolicy 方法更新项目 IAM 政策:

  1. 使用 getIamPolicy 方法获取当前 IAM 政策,以检索当前政策及其 etag:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  2. 使用 setIamPolicy 方法和 roles/discoveryengine.notebookLmUser 角色设置更新后的 IAM 政策:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "roles/discoveryengine.notebookLmUser",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
    

    替换以下内容:

    • ETAG:getIamPolicy 响应中的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主体绑定。
    • PROJECT_ID:您的 Google Cloud项目的 ID。
    • USER_EMAIL:用户或群组的电子邮件地址。

授予对 AI 开发者工具的访问权限

授予 Gemini for Google Cloud User (roles/cloudaicompanion.user) 和 User role for Business AI Code API (roles/businessaicode.user) 角色,以便在不公开 Gemini Enterprise 应用或数据存储区的情况下启用 AI 开发者工具:

控制台

如需使用 Google Cloud 控制台授予访问权限,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 IAM 页面。

    转到 IAM

  2. 选择您的 Google Cloud 项目。

  3. 在权限列表中找到相应用户或群组,然后点击修改主账号。或者,点击授予访问权限以添加新用户。

  4. 在分配角色部分中,分配以下每个角色:

    • Gemini for Google Cloud User (roles/cloudaicompanion.user)
    • User role for Business AI Code API (roles/businessaicode.user)
  5. 点击保存。

gcloud

如需使用 Google Cloud CLI 授予访问权限,请运行以下命令:

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="roles/cloudaicompanion.user"

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role="roles/businessaicode.user"

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目的 ID。
  • USER_EMAIL:用户或群组的电子邮件地址。

REST

如需使用 REST API 授予访问权限,请使用 setIamPolicy 方法更新项目 IAM 政策:

  1. 使用 getIamPolicy 方法获取当前 IAM 政策,以检索当前政策及其 etag:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{}' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:getIamPolicy"
    

    将 PROJECT_ID 替换为您的Google Cloud 项目的 ID。

  2. 使用 setIamPolicy 方法设置更新后的 IAM 政策,并添加 roles/cloudaicompanion.user 和 roles/businessaicode.user 角色:

    curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      -d '{
        "policy": {
          "etag": "ETAG",
          "bindings": [
            {
              "role": "EXISTING_ROLE",
              "members": [
                "user:EXISTING_USER_EMAIL"
              ]
            },
            {
              "role": "roles/cloudaicompanion.user",
              "members": [
                "user:USER_EMAIL"
              ]
            },
            {
              "role": "roles/businessaicode.user",
              "members": [
                "user:USER_EMAIL"
              ]
            }
          ]
        }
      }' \
      "https://cloudresourcemanager.googleapis.com/v1/projects/PROJECT_ID:setIamPolicy"
    

    替换以下内容:

    • ETAG:getIamPolicy 响应中的 etag 值。
    • EXISTING_ROLE 和 EXISTING_USER_EMAIL:您要保留的 getIamPolicy 方法返回的现有角色和主体绑定。
    • PROJECT_ID:您的 Google Cloud项目的 ID。
    • USER_EMAIL:用户或群组的电子邮件地址。

接下来怎么做?

如果您想删除具有 IAM 政策的应用,可以在删除应用之前从政策中移除用户。如需了解详情,请参阅删除具有 IAM 政策的应用的最佳实践。