为自定义数据源配置访问权限控制

本页面介绍了如何为使用 Cloud Storage 或 BigQuery 创建的搜索应用强制执行数据源访问权限控制(也称为 ACL)。

概览

Gemini Enterprise 中数据源的访问权限控制功能可限制用户在搜索应用的结果中查看的数据。Google 会使用您的身份提供方来识别执行搜索的最终用户,并确定他们是否有权访问作为搜索结果返回的文档。

例如,假设贵公司的员工使用您的搜索应用搜索 BigQuery 文档。不过,您需要确保他们无法通过该应用查看他们无权访问的内容。如果您已在 Google Cloud 中为组织的身份提供方设置了员工池,那么您还可以在 Gemini Enterprise 中指定该员工池。现在,如果员工使用您的应用,他们只会获得其账号在 BigQuery 中已有权访问的文档的搜索结果。

启用访问权限控制是一次性操作。如需对 BigQuery 或 Cloud Storage 数据源应用访问权限控制,请根据数据类型(例如结构化数据或非结构化数据)按以下步骤操作。

Cloud Storage 中的非结构化数据

为 Cloud Storage 中的非结构化数据设置数据存储区时,您还需要上传 ACL 元数据并将数据存储区设置为受访问权限控制:

  1. 准备数据时,请使用 acl_info 字段在元数据中添加 ACL 信息。例如:

    {
       "id": "<your-id>",
       "jsonData": "<JSON string>",
       "content": {
         "mimeType": "<application/pdf or text/html>",
         "uri": "gs://<your-gcs-bucket>/directory/filename.pdf"
       },
       "acl_info": {
         "readers": [
           {
             "principals": [
               { "group_id": "group_1" },
               { "user_id": "user_1" }
             ]
           }
         ]
       }
     }
    

    如需详细了解包含元数据的非结构化数据,请参阅准备数据以便提取的“非结构化数据”部分。

  2. 按照创建第一方数据存储区中的步骤创建数据存储区时,您可以在控制台中或使用 API 执行以下操作来启用访问权限控制:

    • 控制台:创建数据存储区时,请在创建数据存储区期间选择此数据存储区包含访问权限控制信息
    • API:创建数据存储区时,请在 JSON 载荷中添加 "aclEnabled": "true" 字段。
  3. 按照创建第一方数据存储区中的数据导入步骤操作时,请务必执行以下操作:

    • 从与非结构化数据相同的存储桶上传包含 ACL 信息的元数据
    • 如果使用 API,请将 GcsSource.dataSchema 设置为 document

Cloud Storage 中的结构化数据

为 Cloud Storage 中的结构化数据设置数据存储区时,您还需要上传 ACL 元数据并将数据存储区设置为受访问权限控制:

  1. 准备数据时,请使用 acl_info 字段在元数据中添加 ACL 信息。例如:

    {
       "id": "<your-id>",
       "jsonData": "<JSON string>",
       "acl_info": {
         "readers": [
           {
             "principals": [
               { "group_id": "group_1" },
               { "user_id": "user_1" }
             ]
           }
         ]
       }
     }
    
  2. 按照创建第一方数据存储区中的步骤创建数据存储区时,您可以在控制台中或使用 API 执行以下操作来启用访问权限控制:

    • 控制台:创建数据存储区时,请在创建数据存储区期间选择此数据存储区包含访问权限控制信息
    • API:创建数据存储区时,请在 JSON 载荷中添加 "aclEnabled": "true" 字段。
  3. 按照创建第一方数据存储区中的数据导入步骤操作时,请务必执行以下操作:

    • 从与结构化数据相同的存储桶上传包含 ACL 信息的元数据
    • 如果使用 API,请将 GcsSource.dataSchema 设置为 document

来自 BigQuery 的非结构化数据

为来自 BigQuery 的非结构化数据设置数据存储区时,您需要将数据存储区设置为受访问控制,并使用 Gemini Enterprise 的预定义架构提供 ACL 元数据:

  1. 准备数据时,请指定以下架构。请勿使用自定义架构。

    [
      {
        "name": "id",
        "mode": "REQUIRED",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "jsonData",
        "mode": "NULLABLE",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "content",
        "type": "RECORD",
        "mode": "NULLABLE",
        "fields": [
          {
            "name": "mimeType",
            "type": "STRING",
            "mode": "NULLABLE"
          },
          {
            "name": "uri",
            "type": "STRING",
            "mode": "NULLABLE"
          }
        ]
      },
      {
        "name": "acl_info",
        "type": "RECORD",
        "mode": "NULLABLE",
        "fields": [
          {
            "name": "readers",
            "type": "RECORD",
            "mode": "REPEATED",
            "fields": [
              {
                "name": "principals",
                "type": "RECORD",
                "mode": "REPEATED",
                "fields": [
                  {
                    "name": "user_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  },
                  {
                    "name": "group_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
    
  2. 将 ACL 元数据作为列包含在 BigQuery 表中。

  3. 按照创建第一方数据存储区中的步骤操作时,请在控制台中或使用 API 启用访问权限控制:

    • 控制台:创建数据存储区时,请在创建数据存储区期间选择此数据存储区包含访问权限控制信息
    • API:创建数据存储区时,请在 JSON 载荷中添加 "aclEnabled": "true" 字段。
  4. 按照创建第一方数据存储区中的数据导入步骤操作时,如果使用 API,请将 BigQuerySource.dataSchema 设置为 document

来自 BigQuery 的结构化数据

为来自 BigQuery 的结构化数据设置数据存储区时,您需要将数据存储区设置为受访问权限控制,并使用 Gemini Enterprise 的预定义架构提供 ACL 元数据:

  1. 准备数据时,请指定以下架构。请勿使用自定义架构。

    [
      {
        "name": "id",
        "mode": "REQUIRED",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "jsonData",
        "mode": "NULLABLE",
        "type": "STRING",
        "fields": []
      },
      {
        "name": "acl_info",
        "type": "RECORD",
        "mode": "NULLABLE",
        "fields": [
          {
            "name": "readers",
            "type": "RECORD",
            "mode": "REPEATED",
            "fields": [
              {
                "name": "principals",
                "type": "RECORD",
                "mode": "REPEATED",
                "fields": [
                  {
                    "name": "user_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  },
                  {
                    "name": "group_id",
                    "type": "STRING",
                    "mode": "NULLABLE"
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
    
  2. 将 ACL 元数据作为列包含在 BigQuery 表中。

  3. 按照创建第一方数据存储区中的步骤操作时,请在控制台中或使用 API 启用访问权限控制:

    • 控制台:创建数据存储区时,请在创建数据存储区期间选择此数据存储区包含访问权限控制信息
    • API:创建数据存储区时,请在 JSON 载荷中添加 "aclEnabled": "true" 字段。
  4. 按照创建第一方数据存储区中的数据导入步骤操作时,请务必执行以下操作:

    • 如果使用控制台,请在指定要上传的数据类型时选择包含结构化数据及其元数据的 JSONL
    • 如果使用 API,请将 BigQuerySource.dataSchema 设置为 document