如何与多个客户端共享Quicksight嵌入式仪表板

问题描述

我想与多个客户共享一个嵌入式的Quicksight仪表板。

我为公司设置了一个大型仪表板以访问整个数据。 现在的问题是,我只想为每个客户端共享他们自己的数据。

我知道我可以基于包含数据库名称的字段使用RLS之类的解决方案来过滤行。 但是我不知道执行它的最佳方法是什么? (RLS在这里只是一个选择)

问题的第二部分。 我将包含新的客户数据,但是如何与新客户共享呢? 我需要一个自动解决方案。

致谢。

解决方法

您可以使用行级安全性来仅允许用户或组访问数据的子集。为此,请创建一个权限数据集,说明谁(用户或组)可以访问哪些行,然后通过“行级安全性”按钮附加权限数据集。

对于我的用例,我为每个客户帐户创建一个Quicksight组(使用boto3 create_group),然后将单个用户添加到组中(使用boto3 create_group_membership)。组名是帐户ID,因为它不会更改;描述是帐户名。

权限数据集指定组的成员可以看到匹配的帐户。这些值将是相同的,因为组名是帐户ID。例如,此CSV表示abc123组的成员只能看到account_id字段为abc123的行:

account_id,GroupName
abc123,abc123

要将帐户添加到Quicksight:

  • 通过create_group为该帐户创建一个Quicksight组
  • 从数据库中的帐户列表中(重新)创建权限数据集
  • 将权限数据集上传到S3
  • 使用create_ingestion
  • 获取权限数据集

要允许用户访问Quicksight数据,请执行以下操作:

另请参阅亚马逊的row level security docs