数据库中的行级安全性

如果您的组织已努力在数据库中构建行级安全性 (RLS),您或许能够使用以下技术之一来利用现有的 RLS。为了利用数据库的安全模型,需要实时连接。此外,这些技术在 Tableau Cloud 中可能不可用;Tableau Cloud 用户名是一个唯一的电子邮件地址,它通常不是数据库端的用户标识。

实现一个内置的 RLS 模型并不一定比在头脑中构建它更容易或更好:当组织已经对这些技术进行了投资,并且希望利用投资时,通常会利用这些技术。

注意:有关可用于在 Tableau 中实现行级安全性的替代方法的信息,请参见Tableau 中的行级安全性选项概述

模拟 (Microsoft SQL Server)

可以配置 Microsoft SQL Server(和几个相关系统),以便数据库用户只能访问内置 RLS 筛选器的视图,从而使用安全连接表或 DBA 构建的视图。Tableau 可以使用一种称为“模拟”的概念来利用这一点。

将包含 MS SQL Server 连接的 Tableau 数据源发布到 Tableau Server 时,可以通过两个身份验证选项来利用模拟。您看到的菜单将取决于您是使用网络身份验证还是通过输入用户名/密码凭据登录到 SQL Server。

若要为可以访问 Tableau Server 中已发布数据源的任何用户启用 RLS 筛选,对于数据库中将访问仪表板或数据源的所有 Tableau 用户,AD 运行身份帐户或嵌入的 SQL 服务器凭据必须具有 EXECUTE AS 权限。所有 Tableau 用户都必须以用户身份存在于数据库服务器中,并且具有您尝试连接到(并应用了 RLS)的视图的 SELECT 权限。有关完整的要求列表,请参见模拟要求

Kerberos 和约束委派

使用 Kerberos 在 Tableau Server 中进行约束委派的操作方式与模拟类似,因为它允许 Tableau Server 使用工作簿视图或视图的 Kerberos 凭据代表查看者执行查询,因此,如果在数据库上设置了 RLS,工作簿的查看器者只会看到他们的数据。

若要查看支持 Kerberos 委派的数据库的完整列表,请参见启用 Kerberos 委派。需要 Active Directory;安装有 Tableau Server 的计算机必须加入到 Active Directory 域。发布数据源时指定的身份验证方法(链接在新窗口中打开)必须是“Viewer(查看者)凭据”

请注意,使用 Microsoft Analysis Services 时,可以为 RLS 使用 Kerberos。

OLAP 多维数据集

Tableau 中的 OLAP 多维数据集连接没有等效的数据源筛选器,这是 Tableau 中基于权利表的 RLS 方法或访问 USERNAME() 函数所必需的。出于这些原因,Kerberos 和约束委派是使用 OLAP 数据库进行 RLS 的推荐方法,它允许 Tableau 利用已在 OLAP 服务器端实现的用户筛选。

如果查看仪表板的用户将不会是域的一部分,则可以使用手动方法来创建用户筛选器。但是,由于生成的用户筛选器集不能添加为数据源筛选器,而是将存在于筛选器功能区上,因此使用此方法的任何已发布的视图都不允许使用 Web 编辑和下载工作簿功能,这一点很重要。

SAML 委派和 SAP HANA

如果 Tableau Server 配置为使用配置 SAP HANA SSO提供单点登录体验,则 Viewer(查看者)凭据将用于以该用户身份执行查询,该查询将在用户级别上应用的任何安全性范围内运行。 发布数据源时指定的身份验证方法(链接在新窗口中打开)必须是“Viewer(查看者)凭据”

强制特定于用户的会话的初始 SQL (Oracle VPD)

初始 SQL 允许您指定在连接到数据库时运行的 SQL 命令,以便设置要在会话期间使用的临时表或设置自定义数据环境。

对于 Oracle VPD,您可以通过运行特定的存储过程或函数来设置特定于用户的会话,将数据库连接的上下文设置为与 Tableau 用户的用户名匹配:

begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;

与模拟一样,为 RLS 使用此项也适用相同的高级别要求;DBA 必须设置 VPD 和所有关联的用户才能存在于数据库中。

在 MS SQL Server 上,您可以强制 EXECUTE 作为命令(但是,这与 Tableau 已对模拟所做的类似):

EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;

注意:如果数据源已嵌入,并且用户具有 Web 编辑或下载工作簿的权限,则 RLS 不存在,因为可以轻松移除强制该数据源的初始 SQL。数据源应单独发布,而不是嵌入到工作簿中。

行级安全性方法的比较矩阵

方法在以下情况下有用优点缺点
权利表(推荐)
  • 数据库中存在权利的概念
  • 组织首次设置行级安全性
  • 易于测试、更新、维护和扩展
  • 适用于版本 2018.3 及更高版本中的实时连接和数据提取
  • 需要创建和维护权利表
  • 可能需要选择和创建适当的键来优化性能
包含数据提取的 CONTAINS()
  • 在版本 2018.3 之前的数据提取中实现 RLS
  • 允许您利用数据提取效率
  • 需要将所有用户映射到单个列
  • 由于存在字符串计算而难以切换回实时连接
模拟
  • 访问数据的每个用户都将以用户身份存在于 SQL Server 中(通常为内部部署)
  • 集中处理和维护安全性 - 数据库
  • 要求访问视图的每个人以用户身份存在于 SQL Server 中
  • 仅适用于 Microsoft SQL Server
Kerberos
  • 为 Kerberos 委派设置所有必要的数据库,并在数据库上设置 RLS(通常为内部部署)
  • 查看者的名称将显示在数据库的访问日志上
  • 在数据库中处理和维护安全性
  • 必须将 Tableau 配置为使用 LDAP - Active Directory
  • Tableau Server 必须加入 AD 域
  • 每个用户都必须存在于您的 AD 域中
初始 SQL
  • 数据库支持初始 SQL,并在数据库端设置了 RLS
  • 允许在加载时传递 Tableau 参数
  • 无法与其他用户共享的专用连接
  • 用户必须存在于数据库中才能以用户身份执行查询
  • 并非所有数据库都支持初始 SQL。
  • 由于缓存共享受限,因此可能会影响性能
感谢您的反馈!您的反馈已成功提交。谢谢!