---
schema_version: "1"
id: fa18e18d880a006f814acc4585d4566f74472fdc7e135a2c7f0e877e9876d526
title: 数据库中的行级安全性
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/server/rls_datasource.md
canonical_url: https://help.tableau.com/current/server/zh-cn/rls_datasource.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 31bacd6570144685fe513e504cf513a3e767fcc8bc2aa24dd3cc5a425e1a1d4b
description: Use existing database row-level security techniques with Tableau.
---
[跳转到主要内容](#main-content)

# 数据库中的行级安全性

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

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

**注意**：有关可用于在 Tableau 中实现行级安全性的替代方法的信息，请参见[Tableau 中的行级安全性选项概述](https://help.tableau.com/current/server/zh-cn/rls_options_overview.htm)。

## 模拟 (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 权限。有关完整的要求列表，请参见[模拟要求](https://help.tableau.com/current/server/zh-cn/impers_requ.htm)。

## Kerberos 和约束委派

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

若要查看支持 Kerberos 委派的数据库的完整列表，请参见[启用 Kerberos 委派](https://help.tableau.com/current/server/zh-cn/kerberos_delegation.htm)。需要 Active Directory；安装有 Tableau Server 的计算机必须加入到 Active Directory 域。发布数据源时指定的[身份验证方法](https://help.tableau.com/current/pro/desktop/zh-cn/publishing_sharing_authentication.htm#kerberos-environments)必须是“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](https://help.tableau.com/current/server/zh-cn/config_sap_hana_sso.htm)提供单点登录体验，则 Viewer（查看者）凭据将用于以该用户身份执行查询，该查询将在用户级别上应用的任何安全性范围内运行。 发布数据源时指定的[身份验证方法](https://help.tableau.com/current/pro/desktop/zh-cn/publishing_sharing_authentication.htm#kerberos-environments)必须是“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。数据源应单独发布，而不是嵌入到工作簿中。

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

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