使用采用基于用户的规则的行级别安全性限制对数据集的访问 - Amazon QuickSight

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用采用基于用户的规则的行级别安全性限制对数据集的访问

 适用于:企业版 

在 Amazon QuickSight 的企业版中,您可以在数据集上配置行级别安全性(RLS)来限制对该数据集的访问。在共享数据集之前或之后,您可以执行该操作。当您使用 RLS 与数据集所有者共享数据集时,他们仍然可以看到所有数据。但是,当您与读者共享该数据集时,他们只能看到受权限数据集规则限制的数据。通过添加行级安全性,您可以进一步控制其访问权限。

注意

将 SPICE 数据集应用于行级别安全性时,数据集中的每个字段最多可以包含 2047 个 Unicode 字符。如果字段包含的内容超过该限额,则会在摄取过程中被截断。要了解有关 SPICE 数据限额的更多信息,请参阅SPICE 导入数据的配额

为此,您可以创建包含一个名为 UserName 和/或 GroupName 的列的查询或文件。您也可以创建包含一个名为 UserARN 和/或 GroupARN 的列的查询或文件。您可以将这看作是为该用户或组添加规则。然后您可以为要授予或限制访问权限的每个字段向查询或文件添加一个列。对于您添加的每个用户名或组名,请添加每个字段的值。您可以使用 NULL (没有值) 表示所有值。要查看示例数据集规则,请参阅为行级别安全性创建数据集规则

要应用数据集规则,请将规则作为权限数据集添加到您的数据集。请记住以下几点:

  • 权限数据集不能包含重复值。评估如何应用规则时,将忽略重复项。

  • 指定的每个用户或组只能看到匹配数据集规则中字段值的行。

  • 如果为某个用户或组添加规则,并将其余列保留为“没有值”(NULL),则表示您向其授予访问所有数据的权限。

  • 如果不为用户或组添加规则,则该用户或组无法看到任何数据。

  • 应用于每个用户的完整规则记录集不得超过 999 个。此限制适用于直接分配给用户名的规则总数以及通过组名称分配给用户的任何规则。

  • 如果字段包含逗号(,),则 Amazon QuickSight 会将每个用逗号隔开的单词视为筛选条件中的单个值。例如,在 ('AWS', 'INC') 中,AWS,INC 被视为两个字符串:AWSINC。要使用 AWS,INC 筛选,请在权限数据集中用双引号将字符串包装起来。

    如果受限数据集是一个 SPICE 数据集,则每个用户对每个受限字段应用的筛选值数量不能超过 19.2 万个。这适用于直接分配给用户名的筛选条件值总数以及通过组名称分配给用户的任何筛选条件值。

    如果受限数据集是直接查询数据集,则每个用户应用的筛选值数量因数据来源而异。

    超过筛选值限制可能会导致视觉渲染失败。我们建议您在受限数据集中添加一个附加列,以便根据原始受限列将行分成几组,从而缩短筛选条件列表。

Amazon QuickSight 将空格视为文本值。如果您限制的字段中有一个空格,则数据集规则适用于这些行。Amazon QuickSight 将 NULL 和留空(空字符串“”)均视为“没有值”。NULL 是一个空字段值。

根据数据集的具体数据来源,您可以配置直接查询来访问权限表。以空格分隔的词不需要用引号分隔。如果您使用直接查询,您可以轻松更改原始数据源中的查询。

您也可以从文本文件或电子表格中上传数据集规则。如果您使用的是逗号分隔值 (CSV) 文件,请不要在给定的行中包含任何空格。以空格分隔的词需要用引号分隔。如果使用基于文件的数据集规则,请通过在数据集的权限设置中覆盖现有规则来应用任何更改。

数据集屏幕中,受限制的数据集是使用受限一词标记的。

从已激活 RLS 规则的父数据集创建的子数据集,将保留与父数据集相同的 RLS 规则。您可以向子数据集添加更多 RLS 规则,但不能移除该数据集继承自父数据集的 RLS 规则。

只有通过直接查询,才能创建从已激活 RLS 规则的父数据集创建的子数据集。SPICE 不支持继承父数据集的 RLS 规则的子数据集。

行级别安全性仅适用于包含文本数据(string、char、varchar 等)的字段。它目前不适用于日期或数字字段。使用行级别安全性(RLS)的数据集不支持异常检测。

为行级别安全性创建数据集规则

要创建权限文件或查询用作数据集规则,请按照以下过程操作。

创建权限文件或查询用作数据集规则
  1. 创建一个文件或查询,其中包含适用于行级别安全性的数据集规则(权限)。

    字段顺序至关紧要。不过,所有字段区分大小写。确保它们与字段名称和值完全匹配。

    结构应类似于下列项目之一。确保您至少具有一个标识用户或组的字段。您可以包含两者,但只需要一个,并且一次只使用一个。您可以为用户或组所用的字段选择任意名称。

    注意

    如果要指定组,请仅使用 Amazon QuickSight 组或 Microsoft AD 组。

    以下示例显示了一个包含组的表。

    GroupName 区域 Segment
    EMEA-Sales EMEA Enterprise、SMB、Startup
    US-Sales 美国 企业
    US-Sales 美国 中小型企业、初创公司
    US-Sales 美国 启动
    APAC-Sales APAC Enterprise、SMB
    Corporate-Reporting
    APAC-Sales APAC Enterprise、Startup

    以下示例演示了一个包含用户名的表。

    UserName 区域 Segment
    AlejandroRosalez EMEA Enterprise、SMB、Startup
    MarthaRivera 美国 企业
    NikhilJayashankar 美国 中小型企业、初创公司
    PauloSantos 美国 启动
    SaanviSarkar APAC Enterprise、SMB
    sales-tps@example.com
    ZhangWei APAC Enterprise、Startup

    以下示例演示了一个包含用户和组 Amazon 资源名称(ARN)的表。

    UserARN GroupARN 区域
    arn:aws:quicksight:us-east-1:123456789012:user/default/Bob arn:aws:quicksight:us-east-1:123456789012:group/default/group-1 APAC
    arn:aws:quicksight:us-east-1:123456789012:user/default/Sam arn:aws:quicksight:us-east-1:123456789012:group/default/group-2 美国

    如果您使用 .csv 文件,结构应与以下某个示例相似。

    UserName,Region,Segment AlejandroRosalez,EMEA,"Enterprise,SMB,Startup" MarthaRivera,US,Enterprise NikhilJayashankars,US,SMB PauloSantos,US,Startup SaanviSarkar,APAC,"SMB,Startup" sales-tps@example.com,"","" ZhangWei,APAC-Sales,"Enterprise,Startup"
    GroupName,Region,Segment EMEA-Sales,EMEA,"Enterprise,SMB,Startup" US-Sales,US,Enterprise US-Sales,US,SMB US-Sales,US,Startup APAC-Sales,APAC,"SMB,Startup" Corporate-Reporting,"","" APAC-Sales,APAC,"Enterprise,Startup"
    UserARN,GroupARN,Region arn:aws:quicksight:us-east-1:123456789012:user/Bob,arn:aws:quicksight:us-east-1:123456789012:group/group-1,APAC arn:aws:quicksight:us-east-1:123456789012:user/Sam,arn:aws:quicksight:us-east-1:123456789012:group/group-2,US

    以下是一个 SQL 示例。

    /* for users*/ select User as UserName, Region, Segment from tps-permissions; /* for groups*/ select Group as GroupName, Region, Segment from tps-permissions;
  2. 根据数据集规则创建数据集。要确保您可以轻松找到该数据集,请为其指定有意义的名称,例如 Permissions-Sales-Pipeline

创建行级别安全性

要通过将文件或查询用作包含权限规则的数据集来应用行级别安全性(RLS),请按照以下过程操作。

使用文件或查询应用行级别安全性
  1. 确认已将您的规则添加为新数据集。如果添加了这些规则,但在数据集列表中看不到这些规则,请刷新屏幕。

  2. 数据集页面上,选择数据集。

  3. 在打开的数据集详细信息页面上,为行级别安全性选择设置

    为行级别安全性选择设置。
  4. 在打开的设置行级别安全性页面上,选择基于用户的规则

  5. 从显示的数据集列表中选择自己的权限数据集。

    如果该屏幕上未显示您的权限数据集,请返回到自己的数据集,然后刷新该页面。

  6. 对于权限策略,选择授予对数据集的访问权限。每个数据集仅具有一个活动权限数据集。如果您尝试添加第二个权限数据集,它将覆盖现有的数据集。

    重要

    在使用行级别安全性时,某些限制适用于 NULL 和空字符串值:

    • 如果您的数据集在受限制的字段中具有 NULL 值或空字符串(“”),在应用限制后,将忽略这些行。

    • 在权限数据集中,NULL 值和空字符串以相同方式处理。有关更多信息,请参阅下表。

    • 为了防止意外泄露敏感信息,Amazon QuickSight 跳过了向所有人授予访问权限的空 RLS 规则。当一行的所有列都没有值时,就会出现空 RLS 规则。QuickSight RLS 将 NULL、空字符串(“”)或以逗号分隔的空字符串(例如“,,,”)视为“没有值”。

      • 跳过空规则后,其他非空 RLS 规则仍然适用。

      • 如果权限数据集只有空规则且所有空规则都被跳过,则任何人都无法访问受此权限数据集限制的任何数据。

    适用于 UserName、GroupName、Region、Segment 的规则 授予的访问权限
    AlejandroRosalez,EMEA-Sales,EMEA,"Enterprise,SMB,Startup" 看到所有 EMEA Enterprise、SMB 和 Startup
    sales-tps@example.com,Corporate-Reporting,"","" 看到所有行
    用户或组没有条目 看不到任何行
    “”,“”,“”,“” 已跳过;如果其余规则都为空,则看不到任何行。
    NULL,“”,“”,NULL 已跳过;如果其余规则都为空,则看不到任何行。

    您与之共享控制面板的任何用户都可以查看其中的所有数据,除非数据集规则限制数据集。

  7. 要保存更改,请选择应用数据集。然后,在保存数据集规则?页面上选择应用并激活。权限更改将立即应用于现有用户。

  8. (可选)要删除权限,请先从数据集中删除数据集规则。

    确保已删除数据集规则。接下来,选择权限数据集,然后选择删除数据集

    要覆盖权限,请选择新的权限数据集,然后应用该数据集。您可以重复使用相同的数据集名称。但是,请务必在权限屏幕中应用新权限来激活这些权限。SQL 查询会动态进行更新,因此,可以在 Amazon QuickSight 外部管理这些查询。对于查询,权限会在自动刷新直接查询缓存时更新。

从目标数据集中删除基于文件的权限数据集之前,如果已删除该数据集,则受限制的用户无法访问该数据集。在数据集处于该状态时,它仍标记为受限。不过,在查看该数据集的权限时,您可以看到该数据集没有选择的数据集规则。

要解决该问题,应指定新的数据集规则。创建具有相同名称的数据集不足以解决该问题。您必须在权限屏幕中选择新权限数据集。该限制不适用于直接 SQL 查询。