跳到主要内容

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 规则配置

每条行级规则包含以下配置项:

配置项说明
角色该规则适用的角色。不填则对所有非管理员生效
字段数据表中的列名
操作符支持:=!=<>>>=<<=likein
固定值,或切换为动态变量
动态变量开启后使用系统变量替代固定值(见下表)

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. 配置示例

场景:销售数据按区域隔离 + 薪资脱敏

需求

  • 区域经理只能查看自己所在区域的销售数据
  • 分析师不能看到员工薪资,手机号需要脱敏
  • 仅销售部和管理层可使用该数据域

配置步骤

  1. 访问授权:授权角色添加「销售经理」「区域经理」「分析师」
  2. 行级数据权限:添加规则 — 角色「区域经理」,字段 org_code,操作符 =,动态变量 sys_org_code
  3. 列级规则
    • 角色「分析师」,字段 salary,动作「隐藏」
    • 角色「分析师」,字段 phone,动作「脱敏」
  4. 字段敏感度salary 设为「高」,phone 设为「中」(作为其他角色的默认兜底)

效果

用户角色能看到的数据行salary 列phone 列
管理员全部正常显示正常显示
区域经理仅本部门隐藏(敏感度默认)脱敏(敏感度默认)
分析师全部隐藏(列级规则)脱敏(列级规则)
未授权用户无法访问

11. 常见问题

Q:配了访问授权但用户说看不到助理? A:检查是否同时在助理级别也配置了访问授权。数据域和助理的访问授权是独立的,两者都需要放行。

Q:行级权限配了但没生效? A:确认规则中的「角色」是否与用户实际拥有的角色编码 一致(注意区分角色名和角色编码)。

Q:管理员能不能也受权限限制? A:不能。管理员身份被自动识别为全权放行,不受任何权限配置影响。如需限制某人的权限,请勿将其设为管理员角色。