实现Tableau中的行级数据安全

在本文中,将探讨如何在Tableau中实现行级数据安全(RLS),特别是当安全配置部分存储在数据库中时。行级数据安全是一种控制用户访问特定数据行的技术。这在需要根据用户的角色或组来限制数据访问权限时非常有用。将通过一个案例来说明如何实现这一点。

业务需求

假设有一个数据库字段名为“Field Category”,它包含了与损益表相关的数据。有四个不同级别的组织管理者访问级别:总裁、线路经理、分行经理和分行部门经理。业务希望这些字段类别根据用户组织管理者级别来显示。

以下是每个级别应该可见的字段类别的访问控制矩阵:

  • 总裁:能够看到所有分支机构的所有部门的所有字段类别。
  • 线路经理:只能看到他的部门在所有分支机构的字段类别,从销售到营业利润。
  • 分行经理:能够看到他的分行的所有部门的字段类别,从销售到净利润。
  • 分行部门经理:只能看到他的分行的部门的字段类别,从销售到营业利润。

解决方案概念

为了满足这个增强的需求,将采用之前已经完成的工作,例如创建服务器组、将用户分配到相应的服务器组,然后创建一个计算字段作为Tableau工作表中的过滤器来限制数据。

由于有四个访问级别,将在数据库中创建一个长度为4的字符字段,每个字符代表允许的访问级别。数据库中的每条记录都将包含这些列的信息。

以下是这个字段的格式XXXX及其翻译:

XXXX

可能的组合如下:

E--- 总裁 -L-- 线路经理 --B- 分行经理 ---D 分行部门经理

将使用数据库字段ACCESS_LEVEL在用户过滤器的计算字段中来识别允许的访问级别,并相应地编写逻辑。

例如,现在将修改已经编写的用户过滤器计算字段,通过复制它并为总裁级别编写逻辑,如下所示:

IF FIRST(ACCESS_LEVEL) = 'E' AND [User Group] = 'PRESIDENT' THEN 1 ELSE 0 END

这样,数据将根据用户在服务器组中的成员身份以及记录基于ACCESS_LEVEL允许的访问级别来控制。简而言之,借助ACCESS_LEVEL字段,数据访问将根据字段类别级别来控制。

一旦用户过滤器应用,现在就是验证所有四个级别的逻辑的时候了。

检查总裁的数据访问:

用户Muhammad是总裁,应该能够看到所有分支机构和部门,并且应该能够看到字段类别。为了检查他可以访问的数据,让选择用户Muhammad,如下所示:

从上面的截图中可以看出,Muhammad能够看到公司的所有分支机构和所有部门,并且他也能够看到所有字段类别,即ACCESS_LEVEL字段中第一个字符为'E'的所有组合,总裁都可以查看。

检查线路经理的数据访问:

用户Wasim是服务线路经理,应该能够看到公司所有分支机构的服务部门。关于字段类别,线路经理被允许看到从销售到营业利润的字段类别。为了检查他可以访问的数据,让选择用户Wasim,如下所示:

从上面的截图中可以看出,Wasim能够看到服务部门的所有分支机构,并且所有字段类别,其中ACCESS_LEVEL字段的第二个字符为'L'的线路经理都可以查看。

检查分行经理的数据访问:

用户Jeffry是Sharjah分行经理,应该能够看到他的Sharjah分行的所有部门。为了检查他可以访问的数据,让选择用户Jeffry,如下所示:

从上面的截图中可以看出,Jeffry能够看到他的Sharjah分行的所有部门,并且所有字段类别,其中ACCESS_LEVEL字段的第三个字符为'B'的分行经理都可以查看。

检查分行部门经理的数据访问:

沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485