为匿名用户嵌入控制面板时,使用采用基于标签的规则的行级别安全性来限制对数据集的访问
| 适用于:企业版 |
| 目标受众:Amazon QuickSight 管理员和 Amazon QuickSight 开发人员 |
在应用程序中为未预置(注册)的 QuickSight 用户嵌入 Amazon QuickSight 控制面板时,您可以使用带标签的行级别安全性(RLS)。在这种情况下,您可以根据用户的身份使用标签来指定他们可以在控制面板中看到的数据。
例如,假设您的物流公司会为各种零售商提供面向客户的应用程序。来自这些零售商的成千上万名用户会访问您的应用程序,查看与他们的订单如何从您的仓库发货相关的指标。
您不想在 QuickSight 中管理成千上万的用户,因此通过匿名嵌入将选定的控制面板嵌入应用程序,让经过身份验证和获得授权的用户看到这些控制面板。不过,您要确保零售商只能看到与其业务相关的数据,而不会看到其他业务数据。您可以使用带标签的 RLS 来确保客户只能看到与他们相关的数据。
为此,请完成以下步骤:
-
向数据集添加 RLS 标签。
-
在运行时系统中使用
GenerateEmbedUrlForAnonymousUserAPI 操作为这些标签分配值。有关使用
GenerateEmbedUrlForAnonymousUserAPI 操作为匿名用户嵌入控制面板的更多信息,请参阅为匿名(未注册)用户嵌入 QuickSight 控制面板。
使用带标签的 RLS 之前,请记住以下几点:
-
目前仅匿名嵌入尤其是使用
GenerateEmbedUrlForAnonymousUserAPI 操作的嵌入式控制面板,才支持使用带标签的 RLS。 -
使用
GenerateEmbedURLForRegisteredUserAPI 操作或旧GetDashboardEmbedUrlAPI 操作的嵌入式控制面板不支持使用带标签的 RLS。 -
Amazon Identity and Access Management(IAM)或 QuickSight 身份类型不支持 RLS 标签。
-
将 SPICE 数据集应用于行级别安全性时,数据集中的每个字段最多可以包含 2,047 个 Unicode 字符。如果字段包含的内容超过该限额,则会在摄取过程中被截断。要了解有关 SPICE 数据限额的更多信息,请参阅导入数据的 SPICE 限额。
步骤 1:向数据集添加 RLS 标签
您可以在 Amazon QuickSight 中向数据集添加基于标签的规则。您也可以调用 CreateDataSet 或 UpdateDataSet API 操作来添加基于标签的规则。有关更多信息,请参阅 使用 API 向数据集添加 RLS 标签。
要将 RLS 标签添加到 QuickSight 中的数据集,请按照以下过程操作。
向数据集添加 RLS 标签
-
从 QuickSight 起始页中,选择左侧的数据集。
-
在数据集页面上选择要添加 RLS 的数据集。
-
在打开的数据集详细信息页面上,为行级别安全性选择设置。
-
在打开的设置行级别安全性页面上,选择基于标签的规则。
-
对于列,选择要添加标签规则的列。
例如,若为物流公司,则使用
retailer_id列。仅列出数据类型为字符串的列。
-
对于标签,输入标签键。您可以输入所需的任何标签名称。
例如,若为物流公司,则使用
tag_retailer_id标签键。这样做可以根据访问应用程序的零售商来设置行级别安全性。 -
(可选)对于分隔符,从列表中选择一个分隔符,或输入自己的分隔符。
为标签分配多个值时,可以使用分隔符来分隔文本字符串。分隔符的值最长可达 10 个字符。
-
(可选)对于全部匹配,选择 *,或输入自己的一个或多个字符。
在要按数据集中该列的所有值进行筛选时,此选项可以是您希望使用的任何字符。您可以使用字符,而不是逐一列出值。如果指定了此值,其长度至少为一个字符,最多为 256 个字符
-
选择添加。
标签规则已添加到数据集并在底部列出,但尚未应用。要向数据集添加其他标签规则,请重复步骤 5 到 9。要编辑标签规则,请选择规则后面的铅笔图标。要删除标签规则,请选择规则后面的删除图标。您最多可以向数据集添加 50 个标签。
-
准备好将标签规则应用于数据集时,选择应用规则。
-
在打开的是否启用基于标签的安全性?页面中,选择应用并激活。
基于标签的规则现已激活。设置行级别安全性页面将显示一个切换开关,供您开启和关闭数据集的标签规则。
要关闭数据集的所有基于标签的规则,请关闭基于标签的规则开关,然后在出现的文本框中输入“确认”。
在数据集页面上,数据集行中将出现一个锁定图标,表示标签规则已启用。
您现在可以在运行时系统中使用标签规则来设置标签值,如 步骤 2:在运行时系统中为 RLS 标签分配值 中所述。这些规则仅在活动时才会对 QuickSight 读者产生影响。
重要
在数据集上分配并启用标签后,请确保授予 QuickSight 作者权限,以便他们在创作控制面板时查看数据集中的任何数据。
要授予 QuickSight 作者查看数据集中数据的权限,请创建权限文件或查询用作数据集规则。有关更多信息,请参阅 为行级别安全性创建数据集规则。
创建基于标签的规则后,将出现一个新的管理规则表,其中会显示基于标签的规则之间的关系。要更改管理规则表中列出的规则,请选择规则后面的铅笔图标。然后添加或移除标签,并选择更新。要将更新后的规则应用于数据集,请选择应用。
(可选)将 OR 条件添加到 RLS 标签
您还可以将 OR 条件添加到基于标签的规则,进一步自定义向 QuickSight 账户用户显示数据的方式。在基于标签的规则中使用 OR 条件时,如果规则定义的标签至少有一个有效,QuickSight 中就会出现视觉对象。
将 OR 条件添加到基于标签的规则
-
在管理规则表中,选择添加 OR 条件。
-
在出现的选择标签下拉列表中,选择要创建 OR 条件的标签。您最多可以向管理规则表添加 50 个 OR 条件。您可以向数据集中的单列添加多个标签,但规则中至少需要包含一个列标签。
-
选择更新将条件添加到规则,然后选择应用将更新后的规则应用于数据集。
使用 API 向数据集添加 RLS 标签
您也可以通过调用 CreateDataSet 或 UpdateDataSet API 操作,在数据集中配置并启用基于标签的行级别安全性。通过以下示例了解如何操作。
重要
在数据集上分配并启用标签后,请确保授予 QuickSight 作者权限,以便他们在创作控制面板时查看数据集中的任何数据。
要授予 QuickSight 作者查看数据集中数据的权限,请创建权限文件或查询用作数据集规则。有关更多信息,请参阅 为行级别安全性创建数据集规则。
有关 RowLevelPermissionTagConfiguration 元素的更多信息,请参阅《Amazon QuickSight API Reference》中的 RowLevelPermissionTagConfiguration。
步骤 2:在运行时系统中为 RLS 标签分配值
您只能将 RLS 标签用于匿名嵌入。您可以使用 GenerateEmbedUrlForAnonymousUser API 操作为标签设置值。
以下示例演示了如何为上一步数据集中定义的 RLS 标签分配值。
POST /accounts/AwsAccountId/embed-url/anonymous-user HTTP/1.1 Content-type: application/json { “AwsAccountId”: “string”, “SessionLifetimeInMinutes”: integer, “Namespace”: “string”, // The namespace to which the anonymous end user virtually belongs “SessionTags”: // Optional: Can be used for row-level security [ { “Key”: “tag_retailer_id”, “Value”: “West,Central,South” } { “Key”: “tag_role”, “Value”: “shift_manager” } ], “AuthorizedResourceArns”: [ “string” ], “ExperienceConfiguration”: { “Dashboard”: { “InitialDashboardId”: “string” // This is the initial dashboard ID the customer wants the user to land on. This ID goes in the output URL. } } }
以下为响应定义的示例。
HTTP/1.1 Status Content-type: application/json { "EmbedUrl": "string", "RequestId": "string" }
在 QuickSight 中无注册用户的 RLS 支持仅在 GenerateEmbedUrlForAnonymousUser API 操作中受支持。在此操作中,您可以在 SessionTags 下定义与数据集列关联的标签的值。
本示例定义了以下分配:
-
值
West、Central和South在运行时系统中分配给tag_retailer_id标签。数据集中的TagMultipleValueDelimiter中定义的分隔符使用一个逗号。要在列中使用调用值,可以将值设置为 *,该值在创建标签时定义为MatchAllValue。 -
值
shift_manager被分配给tag_role标签。
使用生成的 URL 的用户只能查看 role 列中包含 shift_manager 值的行。该用户只能查看 retailer_id 列中的值 West、Central 或 South。
有关使用 GenerateEmbedUrlForAnonymousUser API 操作为匿名用户嵌入控制面板的更多信息,请参阅 为匿名(未注册)用户嵌入 QuickSight 控制面板,或者《Amazon QuickSight API Reference》中的 GenerateEmbedUrlForAnonymousUser。