1. 概述
1.1 版本
FineBI服务器版本 |
---|
6.0 |
1.2 问题描述
管理员可以通过设置行列权限来实现不同用户查看不同的数据,但若同时对部门、角色、用户都设置了行列权限,或者使用了关联关系等复杂的设置,可能会达不到预期结果。
1.3 解决思路
本文来说明行列权限的一些特殊场景。
2. 设置数据表行权限
2.1 部门、角色、用户同时设置行权限后取「或」关系
2.1.1 权限设置
例:用户 Alice 是技术支持部长,同时属于普通角色,则在这三者(技术支持部长、普通角色、用户 Alice)上设置数据表「品牌维度」的权限。
1)为 Alice 设置部门行权限,选择「技术支持>部长」。
设置 数据权限 Tab 下「行业数据>零售电商>零售电商demo>品牌维度」中的「品牌描述」字段属于「新百伦」。如下图所示:
2)为 Alice 设置角色行权限,选择「普通角色」。
设置 数据权限 Tab 下「行业数据>零售电商>零售电商demo>品牌维度」中的「品牌描述」字段属于「HANG TEN」。如下图所示:
3)为 Alice 设置用户行权限,选择「用户最终权限> Alice」。
设置 数据权限 Tab 下「行业数据>零售电商>零售电商demo>品牌维度」中的「品牌描述」属于「十月妈咪」。如下图所示:
2.1.2 效果查看
Alice 账号登录 FineBI 系统,最终结果是三个行权限条件取「或」关系。如下图所示:
注:若为用户单独设置过使用/管理/授权权限,在设置权限后会出现黄色的人像标志。此时若需要恢复对部门/角色权限的继承,需要点击恢复继承权限按钮。弹出提示框「确定清除该用户关于数据权限的单独权限设置,恢复对部门/角色权限的继承」,点击确定即可。如下图所示:
2.2 部门、角色、用户部分设置行权限后对配置的行权限取「或」
2.2.1 权限设置
例:用户 Alice 既是技术支持部部长,又是普通角色,则在这三者(技术支持部部长、普通角色、用户 Alice )上设置数据表的行权限。
注:部分设置行权限。
1)为 Alice 设置部门权限,选择「技术支持>部长」。
设置 数据权限 Tab 下「行业数据>零售电商>零售电商demo>品牌维度」中的「品牌描述」字段属于「新百伦」。如下图所示:
2)为 Alice 设置角色权限,选择「普通角色」。
设置 数据权限 Tab 下「行业数据>零售电商>零售电商demo>品牌维度」中的「品牌描述」字段属于「HANG TEN」。如下图所示:
3)为 Alice 设置用户权限,选择「用户最终权限> Alice」。
设置 数据权限 Tab 下「行业数据>零售电商>零售电商demo>品牌维度」的使用权限,不设置行权限。如下图所示:
2.2.2 效果查看
最终结果是配置的行权限取「或」关系,未配置行权限的角色和用户不算在或关系中。如下图所示:
2.3 部门层级的行权限先取「且」,不同部门间行权限再取「或」
例:公司部门层级关系为测试组 - 产品线1、产品线2,开发组 - 产品线1、产品线2 。 如下图所示:
示例数据:员工信息表.xlsx
2.3.1 权限设置
1)添加员工信息表至「业务包B」文件夹下,如下图所示:
2)用户 Alice 既是产品线 1 的测试组成员,又是产品线 1 的开发组成员。
对整个测试组分配员工信息表的权限,选择 数据权限 Tab 下的「业务包B>员工信息表」
设置行权限为「员工信息表」中的「部门」字段属于「测试组」。如下图所示:
3)对测试组下的产品线 1 组分配员工信息表的权限,选择 数据权限 Tab 下的「业务包B>员工信息表」
设置行权限为「员工信息表」中的「小组别」字段属于「产品线 1」 。如下图所示:
4)对整个开发组分配员工信息表的权限,选择 数据权限 Tab 下的「业务包B>员工信息表」
设置行权限为「员工信息表」中的「部门」字段属于「开发组」。如下图所示:
5)对开发组下的产品线 1 分配员工信息表的权限,选择 数据权限 Tab 下的「业务包B>员工信息表」
设置行权限为「员工信息表」中的「小组别」字段属于「产品线 1」 。如下图所示:
2.3.2 效果查看
Alice 登录 FineBI 系统查看「员工信息表」,Alice 可以看到产品线 1 测试组和产品线 1 开发组的数据。如下图所示:
注:先根据部门层级间行权限取且,不同的部门间行权限再取或。
2.4 有关联关系的表设置行权限,主表可过滤子表(跨文件夹生效)
例:现有三张表:「产品名称维度表」、「合同事实表」、「合同回款事实表」。关联关系如下图所示:
注:「产品名称维度表」是「合同事实表」的主表,「合同事实表」是「合同回款事实表」的主表。
2.4.1 权限设置
1)将「产品名称维度表」、「合同事实表」添加至文件夹 A ,将「合同回款事实表」添加至文件夹 B ,并为用户 Alice 设置「产品名称维度表」和「合同回款事实表」的使用权限。如下图所示:
2)管理员为用户 Alice 设置 文件夹A 中「合同事实表」的行权限,选择 数据权限 Tab 下「文件夹A>合同事实表」中的购买的产品等于「1」 。如下图所示:
2.4.2 效果查看
1)普通用户 Alice 登录 FineBI 系统查看,「合同事实表」的主表「产品名称维度表」可以看到所有的数据,不会受到行权限的影响。如下图所示:
2)「合同事实表」以及作为「合同事实表」的子表「合同回款事实表」只能看到购买的产品等于 1 的数据,受到了主表的行权限影响。如下图所示:
2.5 多重主表设置行权限取「且」关系
2.5.1 权限设置
例:现有三张表:「产品名称维度表」、「合同事实表」、「客户维度表」。关联关系如下图所示:
注:「产品名称维度表」和「客户维度表」都是「合同事实表」的主表。
1)管理员为用户 Alice 设置 「产品名称维度表」的行权限,选择 数据权限 Tab 下「产品名称维度表」中的「产品ID」字段大于等于「5」 。如下图所示:
2)管理员为用户 Alice 设置 「客户维度表」的行权限,选择 数据权限 Tab 下「客户维度表」中的「省份」字段属于「上海市」 。如下图所示:
3)对「合同事实表」设置使用权限,不设置行权限。如下图所示:
2.5.2 效果查看
Alice 登录 FineBI 系统查看「合同事实表」,「合同事实表」只能看到产品 ID 大于等于 5 并且客户省份为上海市对应的客户 ID 下的相关数据。 如下图所示:
2.6 空即是真
2.6.1 逻辑说明
6.0 版本引入「空即是真」的行权限逻辑,即部门/职位/角色在配置了表权限的前提下,若没有配置行权限,则对该表的行权限为 true(可以看到该表的全部数据),并入最终的行权限取或运算中。
注:若用户上单独配置了表的行权限,则不会将部门/职位/角色上的 true 行权限代入最终的行权限取或运算中。
超级管理员可通过以下配置项开启/关闭「空即是真」的行权限逻辑,具体操作步骤请参考:填报修改fine_conf_entity 。
注:6.0 版本的新工程,默认使用「空即是真」的行权限逻辑。
由 5.x 版本升级至 6.0 版本的工程,默认不使用「空即是真」的行权限逻辑。
配置项 | 参数值 |
---|---|
SystemOptimizationConfig.roleEmptyFilterAsTrueFilter | true:使用「空即是真」的行权限逻辑 false:不使用「空即是真」的行权限逻辑 |
2.6.2 权限设置
示例:用户 Alice 同时属于角色A、角色B,则在这两者(角色A、角色B)上设置数据表「品牌维度」的权限。
结果:若角色 A 对「品牌维度」设置了行权限,角色 B 不设置行权限,则最后用户可以看到「品牌维度」所有的数据。
1)选择「角色A」,设置「行业数据>零售电商>零售电商demo>品牌维度」中的「品牌描述」字段属于「HANG TEN」。如下图所示:
2)选择「角色B」,设置「行业数据>零售电商>零售电商demo>品牌维度」的使用权限,不设置行权限。如下图所示:
2.6.3 效果查看
Alice 登录 FineBI 系统查看「品牌维度」表,可以看到所有的数据,即最终的行权限为「HANG TEN」与「true」取并集。如下图所示:
3. 设置数据表列权限
3.1 从文件夹「使用权限」切换成「管理权限」时,列权限需要重新配置
例如:在只开启文件夹使用权限的情况下对行权限、列权限进行设置,此时再开启该文件夹的管理权限,之前设置的行权限依然是生效的,而列权限则需要重新配置。
3.2 部门、角色之间的列权限设置取「或」关系,列权限用户最大原则
3.2.1 权限设置
例:用户 Alice 既属于技术支持 ,又属于普通角色。
1)选择 数据权限 Tab,对技术支持部门设置 文件夹A 中「合同事实表」的列权限,选择字段合同金额、合同付款类型、合同类型。如下图所示:
2)选择 数据权限 Tab,对普通角色设置文件夹 A 中「合同事实表」的列权限,选择字段合同类型、是否已经交货、合同签约时间。如下图所示:
3)此时再对用户 Alice 设置列权限,选择 数据权限 Tab,选择「合同事实表」的「购买的产品」字段。如下图所示:
3.2.2 效果查看
用户 Alice登录 FineBI 系统查看 「合同事实表」的界面,只显示「购买的产品」字段,则该用户的列权限完全取决于对该用户的设置,对部门角色的设置不再影响该用户。如下图所示: