Tableau Server 大规模用户权限管理

今天客户问了一个问题,正好图书出版也没有细致写这一章节,借此机会整理在此,后期修订时作为补充。 场景:集团企业在使用Tableau,通过Tableau Server为企业各业务经理、主管、员工多层次员工提供受控的权限访问。 问题:如何快速、有效地管理数据权限,确保数据安全。 作为大数据可视化的分析平台,Tableau Server提供了受控的数据访问,支持行级别的权限管理,实现的基本原理是将每位访问者的用户名与数据源的特定字段建立关联关系。 这里使用到了用户函数。 1、大规模受控数据访问的基本原理 大规模受控访问,必须在数据源中具备能与访问者匹配的字段,可以称之为“权限字段”。依据“权限字段”,对访问的用户标识匹配,仅显示匹配的数据明细,从而实现行级别的控制。 常见的“权限字段”为数据源中的用户相关字段,比如“地区经理”、“业务员”等字段。 最重要的两个用户标识是用户名及其归属的群组;如果同时匹配时,可以设置是同时满足还是满足一个即可访问——这里会用到逻辑的判断。 如图所示,假定数据源中有一个字段“地区经理”,分别与各个地区相对应,每个地区下面又可以包含各个城市和城市经理。在tableau Server访问时,我们希望不同的地区经理登录其账号时,只显示对应数据明细所构造的视图——即行级别数据安全管控,简称RLS。 2、大规模受控数据访问的条件和方法 大规模受控访问需要满足几个条件: 数据源中有对应的权限字段 Tableau Server有用户的信息 而关键在于如何将二者匹配起来,大规模部署需要自动化实现,此时就需要一个映射的函数。Tableau中提供了多种用户函数,常见有: Usename() FullName() IsUsename() IsFullName() IsMemberOf() UserDomain() 这里最重要的是Usename() 和IsMemberOf()函数。 以超市数据为例,如果希望每个地区经理只看他自己的数据,那么就需要判断用户登录的标识与Tableau Server中用户名的匹配情况。常见的判断是: USERNAME() = [地区经理] 由于这个判断是布尔,因此会自动创建一个判断的字段,将这个字段加入筛选器,就可基于登录用户对应的用户名,与数据库的字段匹配。 这种情况下,需要确保数据源的名称,和Tableau Server中的用户名对应。 在超市数据中,有6位地区经理,可以在Tableau Server中创建对应的用户。我在Tableau Online中,只能以邮箱为用户名,所以就需要通过计算建立二者之间的映射。为此,我添加了一个case when函数。   基于这样的关系,就可以直接使用以下的函数判断,从而实现的受控的访问: USERNAME()=[地区经理-online] 这里实现的是「地区经理」对数据的访问,如何同时对「城市经理」的数据管控呢? tableau Server没有用户层次的概念,只有用户和群组。对城市的判断和上面对“地区经理”一样,只需要增加一个逻辑判断即可。当然,由于有的人是地区经理,有的人是城市经理,此时就需要做一个二次的判断。比如: USERNAME()=[地区经理-online]  OR  USERNAME()=[城市经理]  这样,只需要满足其中之一,即可查看对应的数据。 ———————— 这种基于username的方法适用于以下情况,需要同时满足: 数据源中有对应的权限字段,比如“地区经理”“省区经理”甚至“城市经理”; Tableau Sever有对应的用户账号,用户名需要与数据源中保持一致,如果不一致的,需要使用case when函数建立映射; 支持对具有层级的字段同时做判断,比如地区、省份、城市,使用逻辑函数的OR判断,满足其中一个即可授权,这样确保可以查看最高层次对应的数据。Continue reading “Tableau Server 大规模用户权限管理”