如何在 QuickSight 中排查行级安全问题?

1 分钟阅读
0

我在 Amazon QuickSight 中对我的数据集应用了 RLS,但遇到了数据访问问题。

简短描述

以下是在 Amazon QuickSight 数据集上使用行级安全性(RLS)时可能会遇到的常见问题:

  • 您无法在 QuickSight 嵌入式控制面板中看到匿名 QuickSight 用户的任何数据。
  • 受限制的用户仍然可以查看所有数据。
  • 不受限制的用户无法查看任何数据。
  • 当您应用 RLS 时,您会收到错误代码 DatasetRulesInvalidColType
  • 创建分析时,您会收到错误代码 DatasetRulesUserDenied

注意:使用 RLS 时,请考虑以下几点:

  • RLS 仅适用于 QuickSight 的企业版。
  • RLS 仅支持文本数据,例如数据集规则中的字段的字符串、char 和 varchar。目前,RLS 不适用于日期或数值字段。
  • 每个用户应用的完整规则记录集不得超过 999。规则超过 999 的数据集可能无法将 RLS 规则应用于数据集。
  • 您无法将 RLS 应用于具有默认 null 值的空行,因为 QuickSight 将 null 视为空字段值。但是,字段中的空格被视为文字值,因此数据集规则适用于这些行。
  • 只有添加到数据集规则的用户才能根据定义的规则查看数据。其他用户不能查看数据。
  • 在数据集规则中使用多个字段时,规则作为 AND 运算符运行。目前不支持 OR 运算符。
  • 基于 RLS 标签的规则仅适用于使用 GenerateEmbedUrlForAnonymousUser API 的匿名用户的嵌入式控制面板。如果您使用 GenerateEmbedUrlForRegisteredUser API 为注册的用户嵌入了控制面板,则考虑使用用户级规则。

解决方法

我无法在 QuickSight 嵌入式控制面板中查看匿名用户的任何数据

如果您对匿名嵌入式控制面板使用基于标签的规则,则无法查看或修改数据。要查看数据,必须将基于用户的 RLS 规则添加到数据集。

在以下示例数据集规则中,John Stiles 只能查看物流部门的数据,而 Martha Rivera 可以查看数据集中的所有数据。

UserName,Department 
JohnStiles,Logistics 
MarthaRivera,

注意:您可以对数据集应用基于标签的规则和基于用户的 RLS 规则。

受限制的用户仍然可以查看所有数据

如果数据集包含太多规则,那么即使您成功应用了 RLS,受限制的用户仍然可以查看所有数据。要解决此问题,请确保您的数据集仅包含 999 条或更少的规则。如果您通过 UserName 限制用户,并且数据集规则中有超过 999 个用户,请创建 QuickSight 组。将用户添加到组,然后在数据集规则中使用 GroupName 而不是 UserName

不受限制的用户无法查看任何数据

以下是不受限制的用户无法查看数据的可能原因:

  • 用户不存在于数据集规则中。检查数据集规则以验证所有目标用户都在那里。
  • UserNameGroupName 与 QuickSight 中的用户或组不匹配。检查数据集规则中的 UserNameGroupName 以验证它们与 QuickSight 中的用户或组匹配。

当您应用 RLS 时,您收到错误代码 DatasetRulesInvalidColType

当您将 RLS 用于日期或数值字段时,会出现 DatasetRulesInvalidColType 错误。

检查数据集规则中用于评估 RLS 的字段,以验证数据类型是否为 String(字符串)。您还可以通过编辑数据集在 QuickSight 中将数值字段转换为 String(字符串)。

创建分析时,您会收到错误代码 DatasetRulesUserDenied

当用户不在数据集规则中时,会发生此 DataRulesUserDenied 错误。要解决此错误,请将用户添加到数据集规则,然后刷新数据集


相关信息

使用行级安全性(RLS)和基于用户的规则来限制对数据集的访问

在为匿名用户嵌入控制面板时,使用行级安全性(RLS)和基于标签的规则限制对数据集的访问

使用 AND 和 OR 运算符添加筛选条件(组筛选条件)

AWS 官方
AWS 官方已更新 2 年前