行列权限数据集行列权限(SecurityFilter)是一组作用在数据集上的,和用户身份相关的过滤条件。在使用数据集进行各类数据分析,包括卡片可视化分析、复杂报表、筛选器、SmartETL、归因分析、指标分析等所有涉及到数据计算的地方,行列权限都会在数据集明细层生效,确保数据安全。 行列权限,顾名思义,包含行权限和列权限:
本文我们主要对行列权限中的“列权限”逻辑进行说明。 列权限列权限设置决定用户不能看哪些字段信息。例如:销售人员不能查看成本价信息,那么就可以对数据集新增一条关联到“销售组”的不可见字段为“成本价”的列权限设置。这是最简单的场景。但是,如果一个用户同时归属于多个用户组,且这些用户组之间又有一些上下级关系,列权限设置在若干用户组上,甚至还设置在指定的这个用户上,那么最后的列权限控制是以什么逻辑生效的呢?要理解这里面的逻辑,我们不妨从先看一些简单的案例。 案例解析案例1数据集DS1上共有A,B,C,D,E五个字段。用户User1同时隶属于用户组G1和用户组G2,且G1和G2之间不存在上下层级关系。假设在数据集上对G1设置了不可见字段(A,B),对G2设置了不可见字段(B,C)。 列权限表现:User1在数据集DS1上的不可见字段为B。 逻辑释义:用户User1从G1得到的不可见字段为(A,B),从G2得到的不可见字段为(B,C),用户组之间不可见字段合并权限时取交集(反过来说就是可见字段取并集),得到不可见字段为B。 案例2数据集DS1上共有A,B,C,D,E五个字段。用户U1隶属于用户组G2,且G1是G2的父用户组。假设在数据集上对G1设置了不可见字段(A,B),对G2设置了不可见字段(B,C)。 列权限表现:User1在数据集DS1上的不可见字段为(A,B,C)。 逻辑释义:
案例3数据集DS1上共有A,B,C,D,E五个字段。用户U1同时隶属于用户组G1和用户组G2,且G1是G2的父用户组。假设在数据集上对G1设置了不可见字段(A,B),对G2设置了不可见字段(B,C)。 列权限表现:User1在数据集DS1上的不可见字段为(A,B)。 逻辑释义:
案例4数据集DS1上共有A,B,C,D,E五个字段。用户U1同时隶属于用户组G1和用户组G2,且G1是G2的父用户组。假设在数据集上对G1设置了不可见字段(A,B),对G2设置了不可见字段(B,C),对User1设置了不可见字段C,D。 列权限表现:User1在数据集DS1上的不可见字段为(A,B,C,D)。 逻辑释义:
逻辑总结通过以上案例,我们可以总结一下,对于一个特定的用户U,系统是如何判断他的列权限的:
以下是观远计算列权限的逻辑示意图: 通过以上案例释义,你明白列权限的控制规则了吗? |