本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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 Managed Knowledge Base 会从 Google 云端硬盘抓取文件级共享权限,包括:
直接用户共享(个人文件权限)
谷歌群组成员资格
共享云端硬盘会员资格
启用 ACL 感知
要启用 Google 云端硬盘数据源的 ACL 感知功能,true请在中设置aclEnabled为connectorParameters并使用SERVICE_ACCOUNT身份验证类型。服务帐号必须在您的 Google Workspace 管理员控制台中启用全网域委托。
重要
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 实时验证文档访问权限,从而确认查询用户仍然可以访问每个候选文档。
验证配置
您可以独立于检索请求来验证您的服务帐号配置。执行以下每项检查:
-
Domain-wide 代表团:
在 Google Workspace 管理员控制台中,确认服务帐号客户端 ID 已获得所需范围(Google 云端硬盘只读和管理员 SDK directory/group 读取范围)的授权。
-
云端硬盘访问权限(抓取和验证):
使用服务帐号(
clientEmail和privateKey)进行模拟adminAccountEmail,调用 Google 云端硬盘 API 来列出用户的文件并确认其成功。
-
群组分辨率:
调用 Admin SDK 目录 API 来列出用户的群组成员资格并确认它返回预期的群组。
问题排查
注意
ACL 配置错误不会在检索期间产生明显的错误。检索失败关闭:受影响的文档会被静默忽略,因此查询返回的结果较少或为零,而不是错误。使用上面的验证检查来诊断这些问题。
| 症状 | 可能原因 | Fix |
|---|---|---|
| 检索返回 0 个结果,但用户在 Google 云端硬盘中拥有访问权限。 | Domain-wide 未配置委托,或者服务帐号缺少必需的范围,因此无法验证访问权限。 | 在 Google Workspace 管理员控制台中为所需的云端硬盘和管理员 SDK 范围授权服务帐号客户端 ID。 |
| Group-based 不支持访问权限。 | 委托中缺少 Admin SDK directory/group 读取范围。 | 将 Admin SDK 群组读取范围添加到服务帐号的全域委托中。 |
| 抓取或同步失败。 | clientEmail/privateKey无效,或者adminAccountEmail不是工作空间管理员。 |
验证服务帐号凭据,adminAccountEmail即工作空间管理员。 |
| 所有用户在先前工作后都将被拒绝。 | 服务帐号密钥已轮换或撤销。 | 在机密privateKey中更新。 |