View a markdown version of this page

Document-level 访问控制 - Amazon Bedrock

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Document-level 访问控制

ACL 感知不是授权

Bedrock 托管知识库提供 ACL-aware 筛选功能,而不是安全边界。Bedrock Managed Knowledge Base 不对最终用户进行身份验证——您的应用程序负责对用户进行身份验证并传递经过验证的身份上下文。由于 Bedrock Managed Knowledge Base 无法验证您提供的用户上下文的真实性,因此此功能会根据您提供的身份筛选结果,但并不构成真正的授权。如果没有上游身份验证,则不得依赖此功能作为唯一的访问控制机制。

Google 云端硬盘数据源可以选择支持文档级别的访问控制。启用后,Bedrock Managed Knowledge Base 会在每次抓取期间同步来自 Google 云端硬盘的访问控制列表 (ACL),并在查询时验证每位用户的权限,因此用户只能在 Google 云端硬盘中看到他们有权访问的文档的结果。有关所有连接器上的 ACL 感知概述,请参阅访问控制列表感知启用

工作原理

当用户查询使用 ACL-enabled Google 云端硬盘数据源的知识库时,Bedrock 托管知识库会分两个阶段强制执行访问控制:

  • Pre-retrieval 筛选 — Bedrock Managed Knowledge Base 会应用上次抓取期间从 Google 云端硬盘同步的访问控制列表,仅返回允许用户(或其群组)访问的候选文档。

  • Real-time 验证 — Bedrock 托管知识库通过检查查询用户在 Google 云端硬盘中的当前访问权限来实时验证候选文档。响应中仅包含用户当前有权访问的文档。

这种两阶段方法提供了文档级访问控制,即使 Google 云端硬盘权限在两次同步之间发生变化,该控制也能保持最新状态。

爬行了什么

启用 ACL 后,Bedrock 托管知识库会从 Google 云端硬盘抓取文件级共享权限,包括:

  • 直接用户共享(个人文件权限)

  • 谷歌网上论坛会员资格

  • 共享云端硬盘会员资格

启用 ACL 感知

要为 Google 云端硬盘数据源启用 ACL 感知功能,请在true中设置为aclEnabledconnectorParameters并使用SERVICE_ACCOUNT身份验证类型。服务帐号必须在 Google Workspace 管理员控制台中启用全网域授权。

重要

ACL 配置是永久性的。您无法在没有 ACL 支持的情况下创建的数据源上启用 ACL,也无法在启用 ACL 后禁用 ACL。

AWS Secrets Manager 密钥必须包括adminAccountEmailclientEmail、和privateKey。有关创建服务帐号、配置全域委派以及获取这些值的分步说明,请参阅。为 Google 云端硬盘设置服务帐号身份验证

"connectorParameters": { "type": "GOOGLEDRIVE", "version": "1", "aclEnabled": true, "connectionConfiguration": { "authType": "SERVICE_ACCOUNT", "secretArn": "arn:aws:secretsmanager:region:account-id:secret:secret-name" }, "dataEntityConfiguration": { "crawlMyDrive": true, "crawlSharedWithMe": false, "crawlSharedDrives": false } }
注意

ACL-enabled Google 云端硬盘数据源不支持该OAUTH2身份验证类型。您必须SERVICE_ACCOUNT使用全域授权。

Real-time 访问验证

Bedrock Managed Knowledge Base 使用服务帐号的全域委托,根据 Google Drive API 实时验证文档访问权限,从而确认查询用户仍然可以访问每个候选文档。

验证配置

您可以独立于检索请求来验证您的服务帐号配置。执行以下每项检查:

  1. Domain-wide 代表团

    • 在 Google Workspace 管理员控制台中,确认服务帐号客户端 ID 已获得所需范围的授权(Google 云端硬盘只读,Admin SDK directory/group 读取范围)。

  2. 云端硬盘访问权限(抓取和验证)

    • 使用服务帐号(clientEmailprivateKey)模仿adminAccountEmail,调用 Google 云端硬盘 API 列出用户的文件并确认文件成功。

  3. 群组分辨率

    • 调用 Admin SDK Directory API 列出用户的群组成员资格,并确认它返回预期的群组。

问题排查

注意

ACL 配置错误不会在检索过程中产生明显的错误。检索失败关闭:受影响的文档被静默省略,因此查询返回的结果较少或为零,而不是错误。使用上面的验证检查来诊断这些问题。

ACL-enabled Google 云端硬盘症状、原因和修复方法
症状 可能的原因 Fix
检索会返回 0 个结果,但用户可以访问 Google 云端硬盘。 Domain-wide 未配置委托,或者服务帐号缺少必需的范围,因此无法验证访问权限。 在 Google Workspace 管理员控制台中为所需的云端硬盘和管理软件开发工具包范围授权服务帐号客户端 ID。
Group-based 访问权限不被允许。 委托中缺少 Admin SDK 的 directory/group 读取范围。 将 Admin SDK 组读取范围添加到服务帐号的全域委托中。
抓取或同步失败。 clientEmail/privateKey无效,或者adminAccountEmail不是工作区管理员。 验证服务帐户凭据,adminAccountEmail即工作区管理员。
所有用户在之前工作后都会被拒绝。 服务帐号密钥已轮换或被撤销。 更新秘密privateKey中的内容。