我在 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。
不受限制的用户无法查看任何数据
以下是不受限制的用户无法查看数据的可能原因:
- 用户不存在于数据集规则中。检查数据集规则以验证所有目标用户都在那里。
- UserName 或 GroupName 与 QuickSight 中的用户或组不匹配。检查数据集规则中的 UserName 或 GroupName 以验证它们与 QuickSight 中的用户或组匹配。
当您应用 RLS 时,您收到错误代码 DatasetRulesInvalidColType
当您将 RLS 用于日期或数值字段时,会出现 DatasetRulesInvalidColType 错误。
检查数据集规则中用于评估 RLS 的字段,以验证数据类型是否为 String(字符串)。您还可以通过编辑数据集在 QuickSight 中将数值字段转换为 String(字符串)。
创建分析时,您会收到错误代码 DatasetRulesUserDenied
当用户不在数据集规则中时,会发生此 DataRulesUserDenied 错误。要解决此错误,请将用户添加到数据集规则,然后刷新数据集。
相关信息
使用行级安全性(RLS)和基于用户的规则来限制对数据集的访问
在为匿名用户嵌入控制面板时,使用行级安全性(RLS)和基于标签的规则限制对数据集的访问
使用 AND 和 OR 运算符添加筛选条件(组筛选条件)