本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
为匿名用户嵌入控制面板时,使用采用基于标签的规则的行级别安全性(RLS)来限制对数据集的访问
适用于:企业版 |
目标受众:亚马逊 QuickSight 管理员和亚马逊 QuickSight 开发者 |
当您在应用程序中为未配置(注册)的用户嵌入亚马逊 QuickSight 控制面板时 QuickSight,您可以使用带有标签的行级安全 (RLS)。在这种情况下,您可以根据用户的身份使用标签来指定他们可以在控制面板中看到的数据。
例如,假设您的物流公司会为各种零售商提供面向客户的应用程序。来自这些零售商的成千上万名用户会访问您的应用程序,查看与他们的订单如何从您的仓库发货相关的指标。
您不想在中管理成千上万的用户 QuickSight,因此您可以使用匿名嵌入将选定的仪表板嵌入到您的应用程序中,经过身份验证和授权的用户可以看到这些仪表板。不过,您要确保零售商只能看到与其业务相关的数据,而不会看到其他业务数据。您可以使用带标签的 RLS 来确保客户只能看到与他们相关的数据。
为此,请完成以下步骤:
-
向数据集添加 RLS 标签。
-
在运行时系统中使用
GenerateEmbedUrlForAnonymousUser
API 操作为这些标签分配值。有关使用
GenerateEmbedUrlForAnonymousUser
API 操作为匿名用户嵌入控制面板的更多信息,请参阅为匿名(未注册)用户嵌入 QuickSight数据仪表板。
使用带标签的 RLS 之前,请记住以下几点:
-
目前仅匿名嵌入尤其是使用
GenerateEmbedUrlForAnonymousUser
API 操作的嵌入式控制面板,才支持使用带标签的 RLS。 -
使用
GenerateEmbedURLForRegisteredUser
API 操作或旧GetDashboardEmbedUrl
API 操作的嵌入式控制面板不支持使用带标签的 RLS。 -
AWS Identity and Access Management(IAM) 或 QuickSight 身份类型不支持 RLS 标签。
-
将 SPICE 数据集应用于行级别安全性时,数据集中的每个字段最多可以包含 2047 个 Unicode 字符。如果字段包含的内容超过该限额,则会在摄取过程中被截断。要了解有关 SPICE 数据限额的更多信息,请参阅导入数据的 SPICE 限额。
步骤 1:向数据集添加 RLS 标签
您可以在 Amazon QuickSight 中向数据集添加基于标签的规则。您也可以调用 CreateDataSet
或 UpdateDataSet
API 操作来添加基于标签的规则。有关更多信息,请参阅 使用 API 向数据集添加 RLS 标签。
使用以下步骤向中的 QuickSight数据集添加 RLS 标签。
向数据集添加 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 参考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
" }
只有 GenerateEmbedUrlForAnonymousUser
API 操作才支持无需在中注册用户 QuickSight 的 RLS。在此操作中,您可以在 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 参考GenerateEmbedUrlForAnonymousUser中的或