JimuChatBI 角色权限配置
本文面向管理员,讲解 JimuChatBI 的角色与权限体系。功能介绍与建模配置见 JimuChatBI 介绍与建模配置;业务用户如何提问取数,见 JimuChatBI 问数对话使用。
1. 权限体系概述
JimuChatBI 采用三层权限模型,从"谁能访问"到"能看到什么数据"逐层细化:
| 层级 | 名称 | 控制粒度 | 效果 |
|---|---|---|---|
| A 层 | 访问授权 | 数据域 / 助理 | 控制用户是否能使用该数据域或助理 |
| B 层 | 行级数据权限 | 数据域内的数据行 | 按角色过滤查询结果的行(如:区域经理只看本区域数据) |
| C 层 | 列级权限 / 字段脱敏 | 数据域内的数据列 | 按角色隐藏或脱敏敏感字段(如:隐藏薪资列、脱敏手机号) |
三层权限在用户提问时自动串行执行,无需用户感知。管理员(admin)不受任何权限限制,全权放行。
2. 角色与权限
2.1 角色权限说明
| 角色 | 角色编码 | 说明 |
|---|---|---|
| 管理员 | admin | 拥有所有权限,不受任何限制 |
| Chat2BI 配置员 | chat2bi | 可管理助理、语义建模、数据表、数据源等配置功能 |
管理员不需要额外分配
chat2bi角色,系统自动识别管理员身份并全权放行。
若既没有admin也没有chat2bi角色,则只能使用对话模块,无法进行任何配置。
2.2 按钮菜单权限
Chat2BI 菜单下提供了一个按钮级权限,用于细粒度控制权限配置的编辑能力:
| 权限名称 | 权限编码 | 说明 |
|---|---|---|
| 高级权限配置 | jimu:chat2bi:permEdit | 控制访问授权、行级权限、列级权限/脱敏的编辑权限 |
拥有 chat2bi 角色但没有此按钮权限时,用户仅能做基础配置(新增/编辑数据域、助理等),不能修改权限相关设置(访问授权、行级规则、列级规则)。
需要在系统管理 → 角色管理中,将该按钮权限授权给对应角色。
4. A 层 — 访问授权
4.1 配置位置
- 数据域级:语义建模 → 选择数据域 → 权限标签页 → 访问授权
- 助理级:助理管理 → 对应助理卡片 → 权限开关

4.2 配置项
| 配置项 | 说明 |
|---|---|
| 授权角色 | 允许访问的角色列表。从系统已有角色中下拉选择,可多选 |
| 授权用户 | 允许访问的用户列表。从系统已有用户中下拉选择,可多选 |
4.3 判定逻辑
| 场景 | 结果 |
|---|---|
| 授权角色和授权用户均未配置 | 不限制,所有人可访问 |
| 已配置,当前用户在授权用户中 | 放行 |
| 已配置,当前用户拥有授权角色中的任一角色 | 放行 |
| 已配置,但均未命中 | 拒绝访问,不执行取数 |
| 管理员 | 恒放行,不受配置影响 |
4.4 助理级访问授权
助理也有独立的访问授权配置,控制哪些用户可看到并使用该助理。
未开启助理权限的情况下,不限制助理的访问权限。
开启助理权限后,则只有被授权的用户、角色或创建人可以访问,若没有授权给任何用户或角色,则只能创建人使用。

5. B 层 — 行级数据权限
5.1 配置位置
语义建模 → 选择数据域 → 权限标签页 → 行级数据权限

5.2 规则配置
每条行级规则包含以下配置项:
| 配置项 | 说明 |
|---|---|
| 角色 | 该规则适用的角色。不填则对所有非管理员生效 |
| 字段 | 数据表中的列名 |
| 操作符 | 支持:=、!=、<>、>、>=、<、<=、like、in |
| 值 | 固定值,或切换为动态变量 |
| 动态变量 | 开启后使用系统变量替代固定值(见下表) |
5.3 系统上下文变量
当行级规则的值需要根据当前登录用户动态变化时,可开启「动态变量」并选择系统上下文变量:
| 变量名 | 含义 | 典型用途 |
|---|---|---|
sys_user_code | 当前登录用户的账号 | 仅看自己创建的数据 |
sys_user_name | 当前登录用户的姓名 | 按姓名过滤 |
sys_date | 当前日期 | 按日期过滤(如:仅看今天的数据) |
sys_org_code | 当前登录用户的部门编码 | 仅看本部门数据 |
sys_multi_org_code | 当前用户拥有的所有部门编码 | 看用户所有关联部门的数据 |
示例:配置一条规则「角色 = 区域经理,字段 = org_code,操作符 = =,动态变量 = sys_org_code」,效果为:区域经理用户提问时,只能查到自己所在部门的数据。
5.4 行为说明
- 多条规则之间使用 AND 连接
- 系统会自动将行级过滤条件追加到 AI 生成的查询中,用户无需关心 SQL 细节
- 管理员不受行级规则限制
6. C 层 — 列级权限与字段脱敏
6.1 配置位置
语义建模 → 选择数据域 → 权限标签页:
- 列级权限/字段脱敏:按角色为特定字段配置隐藏或脱敏
- 字段敏感度分级:为每个字段设置默认的敏感度等级

6.2 字段敏感度分级(默认动作)

为每个字段设置敏感度等级,作为默认动作(未配置列级规则时生效):
| 敏感度 | 默认动作 | 说明 |
|---|---|---|
| 高 | 隐藏 | 查询结果中直接删除该列,用户看不到 |
| 中 | 脱敏 | 该列所有值替换为 *** |
| 低 | 可见 | 正常展示 |
6.3 列级规则(显式覆盖)
可按角色为特定字段配置动作,优先级高于敏感度默认:
| 配置项 | 说明 |
|---|---|
| 角色 | 规则适用的角色。不填则对所有非管理员生效 |
| 字段 | 数据表中的列名或中文别名 |
| 动作 | 「隐藏」— 直接删除该列;「脱敏」— 该列值替换为 *** |
示例:配置「角色 = 分析师,字段 = salary,动作 = 隐藏」+ 「角色 = 分析师,字段 = phone,动作 = 脱敏」,效果为:分析师查数时看不到薪资列,手机号显示为 ***。
6.4 优先级
列级规则 > 字段敏感度分级。同一字段如果同时配了列级规则和敏感度,以列级规则为准。
7. 敏感词过滤
7.1 配置位置
语义建模 → 选择数据域 → 权限标签页 → 敏感词过滤

7.2 配置方式
| 配置方式 | 说明 |
|---|---|
| 内置分类开关 | 开启/关闭系统预设的敏感词分类(如政治、辱骂等) |
| 自定义敏感词 | 手动输入自定义敏感词,支持多个 |
7.3 效果
用户提问时,系统自动检查问题是否命中敏感词。命中则直接拒答,不执行查询取数。
8. 多租户隔离
JimuChatBI 支持多租户环境下的数据隔离,有两种模式:
| 模式 | 说明 |
|---|---|
| 按创建人隔离 | 用户仅能看到自己创建的数据域和助理 |
| 按租户隔离 | 同一租户下的用户共享数据域和助理 |
9. 权限执行流程
用户发起提问后,权限按以下顺序自动执行:
用户提问
│
├─① 解析候选数据域(助理绑定的域,仅保留已启用的)
│
├─② A 层:访问授权检查
│ 全部无权 → 返回"无权访问"提示
│
├─③ 多域路由(多个可用域时,AI 自动选最相关的一个)
│
├─④ 敏感词检查
│ 命中 → 直接拒答
│
├─⑤ AI 生成查询
│
├─⑥ B 层:行级权限过滤
│
├─⑦ 执行查询取数
│
├─⑧ C 层:列级权限 — 隐藏/脱敏敏感列
│
└─⑨ 返回结果给用户
10. 配置示例
场景:销售数据按区域隔离 + 薪资脱敏
需求:
- 区域经理只能查看自己所在区域的销售数据
- 分析师不能看到员工薪资,手机号需要脱敏
- 仅销售部和管理层可使用该数据域
配置步骤:
- 访问授权:授权角色添加「销售经理」「区域经理」「分析师」
- 行级数据权限:添加规则 — 角色「区域经理」,字段
org_code,操作符=,动态变量sys_org_code - 列级规则:
- 角色「分析师」,字段
salary,动作「隐藏」 - 角色「分析师」,字段
phone,动作「脱敏」
- 角色「分析师」,字段
- 字段敏感度:
salary设为「高」,phone设为「中」(作为其他角色的默认兜底)
效果:
| 用户角色 | 能看到的数据行 | salary 列 | phone 列 |
|---|---|---|---|
| 管理员 | 全部 | 正常显示 | 正常显示 |
| 区域经理 | 仅本部门 | 隐藏(敏感度默认) | 脱敏(敏感度默认) |
| 分析师 | 全部 | 隐藏(列级规则) | 脱敏(列级规则) |
| 未授权用户 | 无法访问 | — | — |
11. 常见问题
Q:配了访问授权但用户说看不到助理? A:检查是否同时在助理级别也配置了访问授权。数据域和助理的访问授权是独立的,两者都需要放行。
Q:行级权限配了但没生效? A:确认规则中的「角色」是否与用户实际拥有的角色编码 一致(注意区分角色名和角色编码)。
Q:管理员能不能也受权限限制? A:不能。管理员身份被自动识别为全权放行,不受任何权限配置影响。如需限制某人的权限,请勿将其设为管理员角色。