Brain 访问控制分两层,Document access 是第二层。默认 source scope 是唯一门禁:能看到源的人能检索源里一切。Document access 让 Google Drive 源可进一步按每份文档自己的 Drive 权限约束检索。
┌──────────────────────────────────────────────────────────────────────┐ │ Brain 访问控制 — 两层模型 │ ├──────────────────────────────────────────────────────────────────────┤ │ 第 1 层:Source scope(所有源都有) │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ 决定"谁能看到并搜索这个源":Personal / Team / Organization │ │ │ └──────────────────────────────────────────────────────────────┘ │ │ │ 默认:scope 是唯一门禁 │ │ ▼ │ │ 第 2 层:Document access(仅 Google Drive 源,v10.10.0 新) │ │ ┌──────────────────────────────────────────────────────────────┐ │ │ │ Gumloop access(默认)/ Original source(权限继承) │ │ │ └──────────────────────────────────────────────────────────────┘ │ └──────────────────────────────────────────────────────────────────────┘
| 模式 | 行为 | 适用 |
|---|---|---|
| Gumloop access(默认) | 源 scope 内任何人可检索全部文档,忽略原始权限 | 无文档级权限边界的小团队 |
| Original source(v10.10.0 新) | 只有在 Drive 里有访问权的人才能经 Brain 检索到该文档,逐文档检查 | 有文档级权限边界的企业 |
「Original source」分两阶段工作:同步时快照每份文档的 Drive 权限(按邮箱);检索时按用户连接的 Google 邮箱逐文档检查快照。权限不是实时查 Drive,而是同步快照——Drive 权限变更要等下一次同步才生效。
┌──────────────────────────────────────────────────────────────────────┐ │ 阶段 1 — 同步时(Sync time):权限快照 │ │ Gumloop 读取每份文档,快照其当前 Drive 权限(谁有访问权,按邮箱) │ │ │ 权限快照随索引一起存储 │ │ ▼ │ │ 阶段 2 — 检索时(Search time):逐文档强制 │ │ 用户检索 → 对每个候选文档检查该用户是否有权 │ │ 匹配依据:用户【连接的 Google 账户邮箱】 │ │ │ │ │ ┌────┴────┐ │ │ ▼ ▼ │ │ 有权 无权 │ │ │ │ │ │ ▼ ▼ │ │ 返回内容 文档不浮现(fail-closed) │ └──────────────────────────────────────────────────────────────────────┘
Gumloop 原则:"fails closed rather than over-share"(宁可少给也不过度分享)。并非所有 Drive 授予方式都能被强制:
| Drive 权限授予方式 | Brain 行为 |
|---|---|
| 直接用户访问 | ✅ 遵守——有权用户可检索 |
| 组织/域访问(匹配已验证邮箱域) | ✅ 遵守——同域用户可检索 |
| Google Group 共享 | ✅ 遵守(v10.21.0 起)——需 org admin 连接 Google Workspace directory,组成员可检索 |
| "任何拥有链接的人" | ❌ 仍视为无权限,不浮现(fail-closed 保持) |
Drive 只报告 Group 地址不报告成员。v1.0 时 Group 共享因"无法映射到特定用户"被一律视为无权限。v10.21.0 的解法:Brain 通过组织级 Google Workspace directory 连接(Organization settings > General,admin 用有权读目录的账号连接一次,只读 group memberships)展开 Group → 成员,适用于组织内所有 Drive 源。链接分享仍保守不浮现——原则不变(不确定仍 fail-closed),"不确定"的范围通过目录集成缩小。
改变源的 Document access 设置会排队重新同步,按新模式重新快照权限。切到 Original source → 重新快照所有文档权限;切到 Gumloop access → 丢弃快照、回到 scope-only 门禁。
Document access 选项只出现在支持它的源上。当前支持 Google Drive 与 Salesforce(v10.23.0 起);其他源(Notion/Slack/GitHub/Confluence/Zendesk/文件上传)始终用 Gumloop access。Gumloop access 模式下不检查逐文档权限——能看到源的人能检索源里任何内容,文档建议把此类源 scope 到预期受众。
Salesforce 是第 8 个 native source(CRM 域首个):同步 CRM records + Knowledge articles,object 粒度勾选;每条 record 一个文档,字段值带标签索引为文本,ID/系统时间戳/复合字段剔除。权限继承比 GDrive 更深一层:
| 层级 | 机制 | 效果 |
|---|---|---|
| 记录级 | sync 时快照每条记录的可读者,按 Salesforce 用户记录上的邮箱匹配 | 无权读该记录的用户检索不到 |
| 字段级(FLS) | 用户在 Salesforce 无权读的字段不进其检索结果 | 同一记录两人搜出不同字段——字段级裁剪 |
| fail-closed | 记录无 owner 或应匹配用户无邮箱 → 视为无权限 | 宁可漏检不越权 |
| 降级路径 | 带 data categories 的 Knowledge 文章在连接账号无 Metadata API 权限时整类跳过 | 按用户类别可见性过滤的前提是能查到类别 |
| ID | 触发场景 | 系统行为 | 优先级 |
|---|---|---|---|
| A1 | 添加 GDrive 源时 | 出现 Document access 选项(其他源不出现) | P0 |
| A2 | 选 Original source | 启用权限继承:同步快照 + 检索逐文档强制 | P0 |
| A3 | 选 Gumloop access(默认) | 仅 scope 门禁,不检查逐文档权限 | P0 |
| A4 | 编辑源设置 | 可修改 Document access 模式 | P0 |
| A5 | 添加 Salesforce 源时(v2.0) | 出现 Document access 选项 + object 粒度勾选清单 | P0 |
| ID | 触发场景 | 系统行为 | 优先级 |
|---|---|---|---|
| B1 | Original source 模式同步 | 快照每份文档 Drive 权限(按邮箱),随索引存储 | P0 |
| B2 | 用户检索 | 按用户连接 Google 邮箱逐文档检查快照权限 | P0 |
| B3 | 用户对文档无权 | 文档不浮现(fail-closed) | P0 |
| B4 | 文档为 link-sharing / Group 共享 | link-sharing 一律视为无权限;Group 在 directory 连接后按成员展开(v10.21.0) | P0 |
| B5 | 文档为直接用户/域授权 | 遵守,有权用户可检索 | P0 |
| B6 | Salesforce 源同步(v2.0) | 快照每条记录可读者 + 字段级 FLS;每 record 一文档,字段值带标签索引 | P0 |
| B7 | Salesforce 记录无 owner / 用户无邮箱(v2.0) | 视为无权限(fail-closed) | P0 |
| B8 | Knowledge 文章带 data categories 且账号无 Metadata API 权限(v2.0) | 整类跳过索引;提示重连有权限账号 | P1 |
| ID | 触发场景 | 系统行为 | 优先级 |
|---|---|---|---|
| C1 | 切换 Document access | 排队重新同步,按新模式重新快照 | P0 |
| C2 | 切到 Gumloop access | 丢弃权限快照,回到 scope-only | P0 |
作为 HRBP,我希望员工问 HR agent "我的薪酬明细"时,agent 不会把别的员工的薪酬文件返回给他——即使那文件在 HR Brain 源里被索引了。
画像:王芳,35 岁,企业 HRBP。公司 Organization scope 索引全员 Drive,但薪酬/绩效机密文件在 Drive 里只有 HRBP 团队有访问权。
验收标准:
作为 CISO,我希望向审计师证明 Brain 不会把员工在 Drive 里无权查看的文件经 AI 检索泄露——这样我才能放行 Brain 进生产。
画像:陈总,40 岁,金融企业 CISO。公司想用 Brain 索引 Drive 知识库,但 SOC2 要求"AI 检索必须尊重源系统 ACL"。
验收标准:
| 竞品 | 文档级权限能力 | 优势 | 劣势 |
|---|---|---|---|
| Glean | 文档级 ACL 继承多年 | 权限模型成熟,覆盖源广 | 搜索工具非 agent 平台 |
| Copilot for M365 | 尊重 Microsoft Graph 权限 | 与 M365 深度集成 | 绑定微软生态,非跨源 |
| ChatGPT/Claude(文件上传) | 无文档级权限 | — | 孤立文件,无源连接,无 ACL |
| Gumloop Brain(v10.10.0 前) | 仅源 scope 粗粒度 | — | 数据越权风险,企业不敢采购 |
| Gumloop Brain(v10.23.0 后) | GDrive 文档级 + Salesforce 记录级/字段级 FLS + fail-closed + Group 目录展开 | agent 平台少见的文档级权限;CRM 域最深;保守姿态 | 仅 2 源支持;同步快照非实时;link-sharing 漏检 |
| 漏斗阶段 | 事件名称 | 指标/KPI | 优先级 |
|---|---|---|---|
| 采用 | brain_doc_access_original_source_enabled | GDrive 源启用率 | P0 |
| 安全 | brain_doc_access_denied | 拦截次数/日(去标识) | P0 |
| 安全 | brain_doc_access_link_group_private | 保守拦截次数 | P1 |
| 采用 | brain_sf_source_original_source_enabled | CRM 源权限继承启用率(v2.0) | P0 |
| 安全 | brain_sf_fls_filtered | 字段级拦截次数/日(v2.0) | P1 |
| 影响 | brain_enterprise_adoption_post_acl | 受监管企业采纳数 | P0 |
| 质量 | brain_doc_access_false_negative | 漏检投诉率 | P1 |
| 阶段 | 时间线 | 里程碑 | 状态 |
|---|---|---|---|
| Phase 1 — GDrive 文档级权限 | v10.10.0 | Original source + fail-closed + 同步快照 | 已发布 |
| Phase 1.5 — Google Group 授权 | v10.21.0 | Workspace directory 只读连接,Group 按成员展开 | 已发布 |
| Phase 2 — Salesforce 记录/字段级权限 | v10.23.0 | 第二个支持源,记录级 + 字段级 FLS,权限继承多源框架化 | 已发布(v2.0) |
| Phase 2.5 — 扩展到更多源 | v10.x+ | Notion/Confluence/Slack/Zendesk 的文档级权限继承 | 推断/规划 |
| Phase 3 — 实时权限校验 | v11.x | 权限变更近实时生效或缓存失效机制 | 探索 |
| Phase 4 — 可解释访问拒绝 | 远期 | 告知"文档存在但无权"(可审计 deny)而非静默不浮现 | 探索 |
docs.gumloop.com/core-concepts/brain(Document access 章节,完整验证)
父规格:Gumloop Brain(公司知识库) — 10/13