数据安全,是每家公司在进行数据建设时,都会重点考虑的问题。如何避免人员调整所带来的数据规则变化,减少数据控制阶段的工作量及增加严谨性,是用户的真实诉求和痛点。
永洪BI在权限管理层面,将用户的相关信息封装成参数,可直接应用在数据预处理和报表制作阶段,不仅满足了大量场景下数据权限管控,更在一定程度上规避了因“人员调整”导致的数据规则手工修改情况。
本次,我们就一个双重数据规则限制场景,详细讲解相关操作及实现效果。
一、权限要求场景
1、员工登录BI系统,①根据所属岗位(A岗/B岗... ...),确定岗位属性;②根据员工所属部门(部门A/部门B... ...),确定部门属性;通过双重限制的权限条件实现数据过滤;
2、若A员工为A岗、部门A,则可以看到表1 数据表中,“A岗”列中值为“部门A”的数据记录;
3、若A员工为B岗、部门B,则可以看到表1 数据表中,“B岗”列中值为“部门B”的数据记录。
➤表1 数据表
项目日期 | 事业线 | A岗 | B岗 | CRM商机号 | PMS项目编号 | 主项目名称 | 项目类型 | 项目经理 | 客户经理 |
---|---|---|---|---|---|---|---|---|---|
2021/1/1 | 事业线A | 部门A | 部门B | CRM001 | PMS010 | 甲 | 优质A类 | A | 张三 |
2021/2/1 | 事业线A | 部门B | 部门B | CRM002 | PMS020 | 乙 | 优质A类 | AAA | 李四 |
2021/3/1 | 事业线A | 部门C | 部门A | CRM003 | PMS030 | 丙 | 良好B类 | A | 张三 |
2021/4/1 | 事业线A | 部门C | 部门A | CRM004 | PMS040 | 丁 | 良好B类 | B | 李四 |
2021/5/1 | 事业线B | 部门B | 部门A | CRM005 | PMS050 | 戊 | 劣质C类 | AAA | 张三 |
2021/6/1 | 事业线B | 部门A | 部门B | CRM006 | PMS060 | 己 | 劣质C类 | B | 李四 |
2021/7/1 | 事业线B | 部门B | 部门B | CRM007 | PMS070 | 庚 | 良好B类 | AA | 张三 |
2021/8/1 | 事业线C | 部门C | 部门A | CRM008 | PMS080 | 辛 | 劣质C类 | A | 李四 |
2021/9/1 | 事业线C | 部门A | 部门C | CRM009 | PMS090 | 壬 | 优质A类 | B | 张三 |
2021/10/1 | 事业线C | 部门A | 部门A | CRM010 | PMS100 | 癸 | 良好B类 | A | 李四 |
二、场景实现方式
1、数据导入
将表1 数据表中的数据导入到数据集中,图1使用的是创建数据集的SQL数据集。(本示例采用mysql5.7.18版本的数据库)
图1 数据表导入
2、报告制作
根据表1 数据表制作一维表的报告,图2使用的是制作报告图表组件的表。
图2 一维表制作
3、用户配置
新增4个用户、3个分组、2个角色,并配置权限关系,表2使用的是认证授权导出的用户信息。
➤表2 用户信息
admin1权限配置,配置所有模块读写权限,用于设定后续的权限过滤。
3个测试用户(test1、test2、test3)权限配置,配置相关的的模块及操作权限即可,如图3所示。图3使用的是角色权限信息的配置结果。
图3 权限配置
4、权限过滤
admin1登录BI,通过数据集的SQL编辑,实现权限配置逻辑。图4是变更数据集“表1 数据集”的查询语句。
逻辑实现:用户登录后,识别角色,判断通过哪一列进行过滤,再识别分组,判断过滤列的筛选值。
SQL语句:
select * from date1
where 1=0 OR
case
when ?{_ROLES_}="A岗" then A岗 in (?{_GROUPS_})
when ?{_ROLES_}="B岗" then B岗 in (?{_GROUPS_})
else 1=0
end
图4 逻辑实现
三、场景实现效果
1、用户test1(A岗;部门A)登录,结果如图5所示。
图5 test1登录结果
2、用户test2(B岗;部门B)登录,结果如图6所示。
图6 test2登录结果
3、用户test3(A岗;部门C)登录,结果如图7所示。
图7 test3登录结果
该场景实现了对不同权限用户的数据过滤,核心逻辑是:根据第一个属性值,获取判断条件列;根据第二个属性值,获取条件列的筛选结果值;双重限制下,实现数据记录的条件过滤。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。