管理后台 企业版 数据权限
fail-closed 已启用

数据权限

行级隔离单一收口(buildScope)· role-caps 管"看不看得到",guards 管"写不写得动",交互级守卫管"触发得了什么操作"

OWNER
租户所有者,全部数据 + 🔒 敏感操作独占(解散组 / 任免经理 / 转让)
scope: {tenantId}
MANAGER
经理,全租户数据可见可写,无敏感操作权限
scope: {tenantId}
LEADER
组长,可见本组组员数据 + 未分配数据,未绑组不放大权限
OR: [组员, null]
MEMBER
成员,仅见自己数据 + 公共数据,未知角色兜底至此
OR: [self, null]

角色 × 数据范围矩阵

操作OWNERMANAGERLEADERMEMBER
查看客户列表全租户全租户本组 + 公共自己 + 公共
编辑客户本组自己
删除客户
查看他人会话记录本组
导出报表本组数据自己数据
解散小组 + 二次验证
任免经理 + 二次验证
转让主账户 + 三步验证

角色 × 操作权限矩阵

交互级守卫(FR-ROLE-01):不仅定义"谁能看什么数据",还定义"谁能触发什么操作" · 审计员为只读标记(auditorFlag),非独立角色枚举

操作OWNERMANAGERMEMBER审计员 只读
查看自己客户
查看全局数据只读
创建定时任务 仅自己范围
批量导入数据
修改 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 · 详见越权矩阵测试模板