管理后台
企业版
数据权限
fail-closed 已启用
数据权限
行级隔离单一收口(buildScope)· role-caps 管"看不看得到",guards 管"写不写得动",交互级守卫管"触发得了什么操作"
OWNER
租户所有者,全部数据 + 🔒 敏感操作独占(解散组 / 任免经理 / 转让)
scope: {tenantId}
MANAGER
经理,全租户数据可见可写,无敏感操作权限
scope: {tenantId}
LEADER
组长,可见本组组员数据 + 未分配数据,未绑组不放大权限
OR: [组员, null]
MEMBER
成员,仅见自己数据 + 公共数据,未知角色兜底至此
OR: [self, null]
角色 × 数据范围矩阵
| 操作 | OWNER | MANAGER | LEADER | MEMBER |
|---|---|---|---|---|
| 查看客户列表 | 全租户 | 全租户 | 本组 + 公共 | 自己 + 公共 |
| 编辑客户 | 本组 | 自己 | ||
| 删除客户 | ||||
| 查看他人会话记录 | 本组 | |||
| 导出报表 | 本组数据 | 自己数据 | ||
| 解散小组 | + 二次验证 | |||
| 任免经理 | + 二次验证 | |||
| 转让主账户 | + 三步验证 |
角色 × 操作权限矩阵
交互级守卫(FR-ROLE-01):不仅定义"谁能看什么数据",还定义"谁能触发什么操作" · 审计员为只读标记(auditorFlag),非独立角色枚举
| 操作 | OWNER | MANAGER | MEMBER | 审计员 只读 |
|---|---|---|---|---|
| 查看自己客户 | ||||
| 查看全局数据 | 只读 | |||
| 创建定时任务 | 仅自己范围 | |||
| 批量导入数据 | ||||
| 修改 Agent 提示词 | ||||
| 审批退款操作 | ||||
| 管理知识库 | ||||
| 查看审计日志 | 只读 |
允许
拒绝(403)
只读 仅查看 / 导出,所有写操作 403
Agent 角色感知(方案 D 分层)
① 数据级过滤(强制 · 安全核心)
withScope(ctx, fn) 自动注入查询条件,MEMBER 的 Agent 无论如何提问都读不到他人数据 —— 与 prompt 无关的硬隔离。
② ctx 注入(体验增强)
system prompt 注入 tenantRole / teamId,行业插件可生成角色化提示,让 Agent 应答更贴合身份。
③ 工具级 minRole(可选 · 默认不启用)
工具元数据声明最低角色,registry 按角色过滤工具可见性。
越权矩阵测试(验收)
MEMBER 读取他人客户 → 404(隐藏存在性)通过
MEMBER 写入他人客户 → 403通过
未知角色字符串 → 兜底 MEMBER(fail-closed)通过
LEADER 未绑组 → 不静默放大为全租户通过
MEMBER Agent 调 search_customers → 仅自己数据通过
读恒走 scope / 写他人 403 / 详情 404 · 详见越权矩阵测试模板