65.9K
CodeProject 正在变化。 阅读更多。
Home

Tableau 中的行级数据安全 - 第 1 部分

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2投票s)

2020 年 6 月 11 日

CPOL

10分钟阅读

viewsIcon

8398

Tableau 中行级数据安全的逐步实施

Tableau 中数据安全概述

当谈到 Tableau 中的数据安全时,我们脑海中会出现各种选项,例如我们可以完全基于数据库实施安全,或者我们可以选择基于 Tableau Server 组和用户筛选器实施安全,甚至我们可以使用混合方法实施安全。

在 Tableau 提供的所有可用数据安全选项中,哪种方法是最佳方法是一个难以一言蔽之的问题。这个问题的答案取决于基于您的组织结构和业务模型的某些因素。

如果您的组织结构保持静态且不经常变化,Server 组可能是一个不错的选择。但对于组织结构和安全规则经常变化的组织来说,面向数据库的安全配置可能是一种更好的方法。

总的来说,混合方法可能是一个更成功的选择,它可以满足业务当前和未来的需求。

本文内容

本文旨在提供使用以下两种方法处理行级数据安全的端到端思路:

  • 使用 Tableau Server 组进行数据安全(仅在 Server 组中保留配置)
  • 使用混合方法进行数据安全(在 Server 组和数据库中保留配置)

阅读本文后,用户将能够很好地理解该概念,并将其技术应用于实际项目。

我们将根据实时需求逐步实现数据安全。本文分为两个部分。

在第一部分中,我们将使用 Tableau Server 组来保存安全配置,并使用此配置进行数据访问控制。在第二部分中,部分配置将保存在数据库中,我们将了解如何使用混合方法。

要处理数据安全(使用 Tableau 用户筛选器选项),可以参考《Tableau 中的数据安全》一文。

业务需求(安全配置保存在 Tableau Server 组中)

为了解释和示例实施目的,我们选择了一个金融组织的数据子集。数据集包含与两个分支机构和总部的两个业务线和支持部门相关的数据。

在该组织中,有以下四种访问级别:

  • 总裁 - 可以查看公司所有部门和所有分支机构的所有数据
  • 业务线经理 - 负责任何单一业务线,如财务、人力资源等,因此他可以查看其业务线在所有分支机构的数据。
  • 分行经理 - 负责其分行,因此他可以查看其分行所有部门的数据。
  • 分行部门经理 - 负责分行中单一部门,因此他只能查看其分行中其部门的数据。这是最低的访问级别。

此数据集中的部门如下:

此数据集中的分支机构如下:

以下是用户列表:

现在的要求是按照以下安全矩阵进行访问授权:

解决方案概念

以下是实现上述安全需求的高级步骤:

  • 在 Tableau Server 中创建服务器组
  • 将用户添加到各自的服务器组中
  • 创建用户筛选器(Tableau Desktop 中的计算字段)
  • 在工作簿的工作表中应用用户筛选器进行访问控制
  • 测试访问控制

分步解决方案

在 Tableau Server 中创建 Tableau 服务器组

Tableau Server 中的组是一个包含用户信息的对象。您可以根据在 Tableau Server 本地创建的活动目录用户来创建组。

要在 Tableau Server 中创建组,请登录 Tableau Server,选择您的站点,并按照以下屏幕截图中显示的导航进入组菜单:

出现以下屏幕:

单击“添加组”按钮

单击“添加组”按钮

它将打开添加组的屏幕。如果您使用的是 Active Directory,请选择 Active Directory 组选项,否则选择本地组选项。

通过分析业务需求,我们可以将组分为三大类。下表展示了为处理业务需求而应创建的每个组的类别、名称和逻辑。

在 Tableau Server 中添加以下组,如下图所示:

在服务器组中添加用户

要在站点中添加用户,请从以下链接转到用户页面:

在站点中添加所有 9 个用户

下一步是根据用户业务角色,将用户分配到其各自的服务器组,正如我们之前计划的那样。

以下是我们需要为用户分配的组:

为了给用户分配组,请按照以下步骤操作。例如,让我们给 Manoj 分配服务器组。

点击用户菜单,找到用户 Manoj,然后点击三个点。它会弹出一个小菜单,选择“组成员资格”选项,如下图所示:

现在选择适用于此用户的组:

点击“保存”按钮,保存用户 Manoj 的组分配。

我们故意选择了需要分配最多组的部门用户。对用户服务器组分配表中提到的所有用户重复相同的步骤。

创建用户筛选器(Tableau Desktop 中的计算字段)

一旦我们创建了服务器组,下一步就是创建一个计算字段,它将用作每个组中的筛选器。

为了创建此计算字段,打开 Tableau Desktop,点击创建计算字段。

将其命名为“用户筛选器”,并在其中写入以下条件:

ISMEMBEROF() 是 Tableau 的内置函数,用于检查登录用户是否是传递给该函数的服务器组的成员。

CMPCODE 是一个表示分支机构数据的字段。此列中的值可以是 SHJ(指沙迦)或 MCT(指马斯喀特)。

DEPARTMENT 是一个表示部门的字段。此列中的值可以是PartsServiceNull(在部门不适用时)。这将在文章的第二部分进行处理。这种情况适用于不属于任何特定部门的数据,例如与组级别相关的数据,并且只有总裁才能查看此类数据。

例如,如果登录用户是PRESIDENT组的成员,则条件将返回1,否则返回0

为简单起见和便于解释,最初只显示总裁,稍后所有级别的逻辑都需要添加到相同的计算字段中。

所以完整的逻辑看起来像这样:

编写“IF”条件是为了确保只有当用户是其所有相关服务器组的成员时才返回 1。例如,当沙迦零部件经理是 BRANCH-DEPT-MANAGERSHARJAH-SHJPARTS 服务器组的成员,并且 CMPCODE(包含位置的字段)的值为 SHJ(指 Sharjah),DEPARTMENT 字段的值为 Parts 时,它将返回 1

这是为上述业务需求编写的实现,如果需求更复杂,它肯定会更复杂。

我们将在本文的第二部分处理更复杂的需求,届时我们将把部分配置保存在数据库中。

在工作簿中应用用户筛选器进行访问控制

以下是数据中的部门和分支机构:

一旦用户筛选器准备就绪,需要将“用户筛选器”应用到工作表以控制数据访问。如下图所示,将“用户筛选器”放置在筛选器架中。

它将如下所示

现在,由于我们已将安全筛选器应用于工作簿,因此部门和分支机构数据将根据分配的组受到限制。

测试访问控制

让我们检查不同用户的数据访问权限

检查总裁的数据访问权限

用户 Muhammad 是总裁,应该能够查看所有分支机构和部门。为了检查他可访问的数据,让我们选择用户 Muhammad,如下图所示:

从上面的截图可以清楚地看出,Muhammad 能够查看公司所有分支机构和所有部门。

检查业务线经理 - 零部件的数据访问权限

用户 Mickey 是零部件业务线经理,应该能够查看公司所有分支机构的零部件部门数据。为了检查他可访问的数据,让我们选择用户 Mickey,如下图所示:

从上面的截图可以清楚地看出,Mickey 能够查看零部件部门的所有分支机构。

检查业务线经理 – 服务部门的数据访问权限

用户 Wasim 是服务业务线经理,他应该能够查看公司所有分支机构的服务部门数据。为了检查他可访问的数据,让我们选择用户 Wasim,如下图所示:

从上面的截图可以清楚地看出,Wasim 能够查看所有分支机构的Service部门数据。

检查沙迦分行经理的数据访问权限

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

从上面的截图可以清楚地看出,Jeffry 能够查看沙迦分行的所有部门。

检查马斯喀特分行经理的数据访问权限

用户 Yusra 是马斯喀特分行经理,她应该能够查看马斯喀特分行的所有部门。为了检查她可访问的数据,让我们选择用户 Yusra,如下图所示:

从上面的截图可以清楚地看出,Yusra 能够查看马斯喀特分行的所有部门。

检查分行部门经理 - 沙迦零部件经理的数据访问权限

用户 Yousaf 是沙迦零部件经理,他应该只能查看沙迦的零部件部门。为了检查他可访问的数据,让我们选择用户 Yousaf,如下图所示:

从上面的截图可以清楚地看出,Yousaf 能够查看沙迦分行的零部件部门。

检查分行部门经理 - 沙迦服务经理的数据访问权限

用户 Manoj 是沙迦服务经理,他应该只能查看沙迦的服务部门。为了检查他可访问的数据,让我们选择用户 Manoj,如下图所示:

从上面的截图可以清楚地看出,Manoj 能够查看沙迦分行的服务部门。

检查分行部门经理 - 马斯喀特零部件经理的数据访问权限

用户 Ahmad 是马斯喀特零部件经理,他应该只能查看马斯喀特的零部件部门。为了检查他可访问的数据,让我们选择用户 Ahmad,如下图所示:

从上面的截图可以清楚地看出,Ahmad 能够查看马斯喀特分行的零部件部门。

检查分行部门经理 - 马斯喀特服务经理的数据访问权限

用户 Ani 是马斯喀特服务经理,他应该只能查看马斯喀特的服务部门。为了检查他可访问的数据,让我们选择用户 Ani,如下图所示:

从上面的截图可以清楚地看出,Ani 能够查看马斯喀特分行的服务部门。

结论

我们已逐一检查了所有九个用户,并验证了每个用户都只允许查看其根据业务设置的配置相关数据。我们已将所有配置都处理在服务器组中。在 Tableau Server 组中维护安全性非常灵活,因为您只需通过分配和移除用户来管理和修改访问级别。

这种方法的一个缺点是,如果组织中添加了任何新部门或分支机构,则需要修改用户筛选器计算字段。因此,在组织结构变化频繁的情况下应避免使用此方法。

因此,建议在规划和实施 Tableau 中的安全性时,分析组织结构和组织层级变化的趋势。

未完待续...

在 Tableau 中实现行级数据安全的第 2 部分中,我将解释如何使用部分保存在数据库中的安全配置来实现相同的功能。敬请关注。

历史

  • 2020 年 6 月 11 日:初始版本
© . All rights reserved.