【Superset】数据行级权限控制
实现思路:将过滤语句拼在数据集sql后面,执行的结果与实际想要的是否匹配;从权限表中查到当前登录用户的架构信息,再与数据集中符合条件的架构数据。同一个看板,不同层级的用户,进来只能看到对应层级的数据。图表名称:【图表】24年11月支付成功订单明细。看板名称:【看板】24年11月支付成功订单。6.1. 选择需要做数据行权限过滤的数据集。6.2. 选择受数据行权限过滤的角色。销售组长:其管辖范围内的各
一、场景
同一个看板,不同层级的用户,进来只能看到对应层级的数据
示例场景:
销售组长:其管辖范围内的各组数据
销售总监:全部数据
二、配置示例
1、准备数据集
数据集名称:24年11月订单明细
查询出 订单顾问(重要,后面会用)、payment_id、支付成功时间
2、图表制作
将字段拖拽到图表中,保存。
图表名称:【图表】24年11月支付成功订单明细
3、新建看板
将图表拖拽到看板中,保存。
看板名称:【看板】24年11月支付成功订单
4、准备用户权限表
user_name:需要与数据集中的 姓名 字段的 值 保持一致
level1_post_name:需要与数据集中的 一级架构 字段的 值 保持一致
level2_post_name:需要与数据集中的 二级架构 字段的 值 保持一致
level3_post_name:需要与数据集中的 三级架构 字段的 值 保持一致
email:需要与 登录用户的邮箱 保持一致
5、创建行权限角色
仅需要填写角色名称即可,保存
6、创建行权限过滤规则
6.1. 选择需要做数据行权限过滤的数据集
6.2. 选择受数据行权限过滤的角色
6.3. 填写行权限过滤规则,本次示例:
实现思路:将过滤语句拼在数据集sql后面,执行的结果与实际想要的是否匹配;
从权限表中查到当前登录用户的架构信息,再与数据集中符合条件的架构数据。
(
select
distinct level1_post_name
from upload_cc_user_permisson
where email = '{{current_email() }}' -- 当前登录用户邮箱
) like concat(concat('%', cc_level1_post_name ), '%')
and (
select
distinct level2_post_name
from upload_cc_user_permisson where email = '{{current_email() }}'
) like concat(concat('%', cc_level2_post_name ), '%')
and (
select
distinct level3_post_name
from upload_cc_user_permisson
where email = '{{current_email() }}'
) like concat(concat('%', cc_level3_post_name ), '%')

7、将需要使用数据行权限过滤的用户,添加到角色中
8、最终效果
注:需要将空替换为‘null’字符串

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)