---
schema_version: "1"
id: 4a296134ca9ed0af4ad7b553e40ab21bf144ecbefd79a887e414430076e58c63
title: 使用用户筛选器和行级别安全来限制数据访问权限
collection: tableau
version: next
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/next/zh-cn/pro/desktop/publish_userfilters.md
canonical_url: https://help.tableau.com/v0.0/pro/desktop/zh-cn/publish_userfilters.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 70c02d622072418515e0b94f619883637348d1dfeea84d43b459d4667c82a3af
description: Restrict data access at the row level using user filters and row-level security.
---
[跳转到主要内容](#main-content)

# 在数据行级别限制访问权限

通过将工作簿发布到 Tableau Server 或 Tableau Cloud 以与其他人共享工作簿时，默认情况下，所有有权访问工作簿的用户都可以查看视图中显示的所有数据。通过应用某种类型的筛选器，以允许您指定任何登录到服务器的给定人员可以在视图中查看的数据"行"，您可以覆盖此行为。

这种在行级别保护数据安全的方法适用于包含实时连接的数据源，以及其表以多个表形式存储的数据提取数据源。有关使用多个表存储数据提取数据的详细信息，请参见[提取数据](https://help.tableau.com/v0.0/pro/desktop/zh-cn/extracting_data.htm#storage)。

**注意：**有关可用于在 Tableau 中实现行级安全性的替代方法的信息，请参见 Tableau Server 帮助中的 [Tableau 中的行级安全性选项概述](https://help.tableau.com/v2021.4/server/zh-cn/rls_options_overview.htm)。  
  
有关其他相关信息，请参见白皮书[行级安全性与权利表的最佳做法](https://www.tableau.com/zh-cn/learn/whitepapers/row-level-security-entitlements-tables)。

## 基于用户的筛选的工作原理

假设您为不同地理区域内若干年中的一组产品创建了季度销售报告。

当您发布此报告时，您希望允许每个区域经理仅查看与其区域相关的数据。您可以应用_用户筛选器_，以根据用户的特征（例如其角色）限制对数据的访问，而不是为每个经理创建单独的视图。

以这种方式限制对数据的访问称为_行级安全性_ (RLS)。Tableau 提供以下行级安全性方法：

- [创建用户筛选器并将用户手动映射到值](https://help.tableau.com/v0.0/pro/desktop/zh-cn/publish_userfilters_create.htm#create-user-filter)。
    
    这种方法较为方便，但维护费用高并且安全性可能不确定。必须按工作簿完成此方法，并且您必须更新筛选器并在用户群发生变化时重新发布数据源。
- [使用数据中的安全字段创建动态筛选器](https://help.tableau.com/v0.0/pro/desktop/zh-cn/publish_userfilters_create.htm#dynamic)。
    
    使用此方法，您可以创建计算字段，以自动执行将用户映射到数据值这一过程。此方法要求基础数据包括要用于筛选的安全信息。
    
    执行此操作的最常见的方法是使用包含此信息的引用（“look-up”、“entitlement”或“security”）表。举例来说，如果要筛选视图以便只有主管才能看到它，则基础数据必须设置为包括用户名并指定每个用户的角色。
    
    由于筛选是在数据级别定义的，并由计算字段自动进行，因此此方法比将用户手动映射到数据值更安全。

### 向数据源添加用户筛选器

上一节中的两种方法介绍了向嵌入在工作簿中的数据添加筛选器的方法。如果多个工作簿连接到相同的数据，而不是在每个工作簿上使用筛选器，则可以筛选数据源，然后在发布数据源后将工作簿连接到该数据源。

连接到筛选的数据源的工作簿仅显示允许登录到服务器的用户查看的数据。此外，所有连接的工作簿都会在发生数据刷新时显示数据刷新。

### 具有用户筛选器的数据提取与实时连接

通常，在使用上述方法之一时，与包含使用实时连接的数据源的 RLS 相比，包含数据提取的 RLS 的创建速度更快，并且性能更佳。

针对包含数据提取数据源的 RLS 的要求

如前所述，针对使用包含数据提取的 RLS 的第一个要求是，数据提取中的数据应使用多个物理表存储。通过执行[提取数据](https://help.tableau.com/v0.0/pro/desktop/zh-cn/extracting_data.htm#storage)中的步骤，您可以将数据提取配置为使用多个物理表存储其数据。

除了上面的要求外，如果打算使用包含数据提取的 RLS，还有一些额外的事项需要注意。由于使用多个表存储的数据提取数据不支持数据提取筛选器和某些其他可帮助减少数据提取中的数据量的功能，因此，您必须考虑使用以下建议之一：

- 使用自定义 SQL 连接到数据
- 连接到已经有适当筛选级别的数据库视图

有关这些建议的详细信息，请参见[提取数据](https://help.tableau.com/v0.0/pro/desktop/zh-cn/extracting_data.htm#normalized_altfilter)。

**针对包含数据提取数据源的 RLS 的建议做法**

为了高效地执行包含数据提取的 RLS，Tableau 建议将数据提取中的表（或者数据库视图或自定义 SQL 查询）的数量保持为两个。换句话说，Tableau 建议数据提取中的表由以下类型的表组成：

- 数据表 — 这是包含要显示的所有数据的表。
- 引用表 — 这是包含用户信息和用户所属的安全组的“look-up”或“entitlements”表。

通过将数据提取中的表减少到只包含这两个表，您可以确保 Tableau 仅必须在这两个表之间执行联接，因此可避免出现任何数据重复情况或“联接爆炸”。

## 另请参见

- Tableau Server 帮助中的[数据安全性](https://help.tableau.com/current/server/zh-cn/security_data.htm)
- Tableau 的 Tableau Server 帮助中的[行级安全选项概述](https://help.tableau.com/current/server/zh-cn/rls_options_overview.htm)

## 此部分中的其他文章