第 3 步:使用基于标签的访问控制方法实施跨账户共享 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

第 3 步:使用基于标签的访问控制方法实施跨账户共享

在本节中,我们将指导您完成以下概括步骤:

  1. 定义 LF-tag。

  2. 将 LF-Tag 分配给目标资源。

  3. 向消费者账户授予 LF-tag 权限。

  4. 向消费者账户授予数据权限。

  5. 或者,撤消权限IAMAllowedPrincipals在数据库、表和列上。

  6. 创建指向共享表的资源链接。

  7. 创建 LF-tag 并将其分配给目标数据库。

  8. 向消费者账户授予 LF-tag 数据权限。

定义 LF-tag

注意

如果您已登录生产者账户,请在完成以下步骤之前先注销。

  1. 以数据湖管理员身份登录生产者账户https://console.aws.amazon.com/connect/. 使用生产者账号、IAM 用户名(默认值为DatalakeAdminProducer) 和您在期间指定的密码Amazon CloudFormation堆栈创建。

  2. 在 Lake Formation 控制台上(https://console.aws.amazon.com/config/) 中的导航窗格中的下Permissions (权限)下的管理角色和任务,选择LF-标签.

  3. 选择添加 lf-tag.

将 LF-Tag 分配给目标资源

将 LF-Tag 分配给目标资源并向另一个账户授予数据权限

作为数据湖管理员,您可以将标签附加到资源。如果您计划使用单独的角色,则可能必须向单独角色授予描述并附加权限。

  1. 在导航窗格中的下,Data Catalog,选择数据库.

  2. 选择目标数据库(lakeformation_tutorial_cross_account_database_tbac)然后在操作菜单,选择编辑 LF-标签.

    在本教程中,您将 LF-Tag 分配给数据库,但也可以将 LF-Tag 分配给表和列。

  3. 选择新分配lf-tag.

  4. 添加关键帧Confidentiality和值public.

  5. 选择 Save(保存)。

Grantlf-tag对消费者账户的许可

仍在生产者账户中,向消费者账户授予访问 LF-Tag 的权限。

  1. 在导航窗格中的下,Permissions (权限)管理角色和任务LF-tag 权限,选择Grant.

  2. 适用于委托人,选择外部账户.

  3. 输入目标Amazon Web Services 账户ID.

    Amazon Web Services 账户在同一组织中自动显示。否则,你必须手动输入Amazon Web Services 账户ID。截至撰写本文时,基于 Lake Formation 标签的访问控制不支持向组织或组织单位授予权限。

  4. 对于 LF 标签,请选择密钥价值正在与消费者账户共享的 LF-tag(密钥 Confidentiality public)。

  5. 适用于Permissions (权限),选择描述为了LF-tag 权限.

    LF-tag 权限是授予使用者账户的权限。可授予权限是消费者账户可以授予其他委托人的权限。

  6. 选择 Grant(授权)。

    此时,消费者数据湖管理员应该能够在下面找到通过消费者账户 Lake Formation 控制台共享的策略标签Permissions (权限)管理角色和任务,LF 标签.

向消费者账户授予数据权限

我们现在将通过指定 lf-tag 表达式并授予消费者账户对与表达式匹配的任何表或数据库的访问权限来提供对消费者账户的数据访问权限。

  1. 在导航窗格中的下,Permissions (权限)数据湖权限,选择Grant.

  2. 适用于委托人,选择外部账户,然后进入目标Amazon Web Services 账户ID。

  3. 适用于LF-标签或目录资源,选择密钥价值lf-tag正在与消费者账户共享(密钥 Confidentiality public)。

  4. 适用于Permissions (权限)下,与 LF 标签匹配的资源(推荐)选择添加 lf-tag.

  5. 密钥正在与消费者账户共享的标签(密钥)Confidentiality和值public)。

  6. 适用于数据库权限,选择描述数据库权限以在数据库级别授予访问权限。

  7. 消费者数据湖管理员应该能够在 Lake Formation 控制台上找到通过消费者账户共享的策略标签(https://console.aws.amazon.com/lakeformation/下),下Permissions (权限)管理角色和任务LF-标签.

  8. Select描述可授予权限因此消费者账户可以向其用户授予数据库级权限。

  9. 适用于表和列权限,选择Select描述表权限.

  10. SelectSelect描述可授予权限.

  11. 选择 Grant(授权)。

撤销权限IAMAllowedPrincipals在数据库、表和列上(可选)。

在本教程开始时,您更改了 Lake Formation 数据目录设置。如果跳过了该部分,则需要执行此步骤。如果您更改了 Lake Formation 数据目录设置,则可以跳过此步骤。

在这一步中,我们需要撤消默认值超级许可来自IAMAllowedPrincipals在数据库或表格上。有关详细信息,请参阅 第 4 步:将数据存储切换到 Lake Formation 权限模型

在撤销权限之前IAMAllowedPrincipals,请确保您通过 Lake Formation 授予现有 IAM 委托人必要的许可。这包括三个步骤:

  1. 使用 Lake Formation 向目标 IAM 用户或角色添加 IAM 权限GetDataAccess操作(使用 IAM 策略)。

  2. 向目标 IAM 用户或角色授予 Lake Formation 数据权限(变更、选择等)。

  3. 然后,撤消的权限IAMAllowedPrincipals. 否则,在撤销权限之后IAMAllowedPrincipals,现有 IAM 委托人可能无法再访问目标数据库或数据目录。

    撤销超级的权限IAMAllowedPrincipals当您想要应用 Lake Formation 权限模型(而不是 IAM 策略模型)来管理单个账户内或使用 Lake Formation 权限模型的多个账户之间的用户访问时,是必需的。您不必撤消权限IAMAllowedPrincipals对于要保留传统 IAM 策略模型的其他表格。

    此时,消费者账户数据湖管理员应该能够在 Lake Formation 控制台上找到通过消费者账户共享的数据库和表(https://console.aws.amazon.com/lakeformation/下),下Data Catalog. 如果没有,请确认以下内容是否已正确配置:

    1. 将正确的策略标记和值分配给目标数据库和表。

    2. 将正确的标签权限和数据权限分配给消费者账户。

    3. 撤销默认的超级权限IAMAllowedPrincipals在数据库或表格上。

创建指向共享表的资源链接

当资源在账户之间共享时,共享资源未放入消费者账户的数据目录中。为了使它们可用,并使用 Athena 等服务查询共享表的底层数据,我们需要创建指向共享表的资源链接。资源链接是指向本地或共享数据库或表的链接的数据目录对象。有关详细信息,请参阅。创建资源链接通过创建资源链接,您可以:

  • 为与数据目录资源命名策略一致的数据库或表分配不同的名称。

  • 使用 Athena 和 Redshift Spectrum 等服务查询共享数据库或表。

要创建资源链接,请完成以下步骤:

  1. 如果您已登录消费者账户,请注销。

  2. 以消费者账户数据湖管理员身份登录。使用您在期间指定的消费者账户 ID、IAM 用户名(默认 DataLakeAdminCompler)和密码Amazon CloudFormation堆栈创建。

  3. 在 Lake Formation 控制台上(https://console.aws.amazon.com/lakeformation/) 中的导航窗格中的下Data Catalog中,选择共享数据库lakeformation_tutorial_cross_account_database_tbac.

    如果没有看到数据库,请重新访问之前的步骤以查看是否正确配置了所有内容。

  4. 选择查看表.

  5. 选择共享表amazon_reviews_table_tbac.

  6. 在存储库的操作菜单,选择创建资源链接.

  7. 适用于资源链接名称,输入名称(对于本教程,amazon_reviews_table_tbac_resource_link)。

  8. UNDER数据库中,选择在其中创建资源链接的数据库(对于此帖子,Amazon CloudFormationn 堆栈创建了数据库lakeformation_tutorial_cross_account_database_consumer)。

  9. 选择 Create(创建)。

    资源链接显示在下方数据目录.

创建 LF-tag 并将其分配给目标数据库

Lake Formation 标签与资源位于同一数据目录中。这意味着在授予对消费者账户中资源链接的访问权限时,在生产者账户中创建的标签不可用。在共享消费者账户中的资源链接时,您需要在消费者账户中创建一组单独的 LF-Tags,才能使用基于 LF 标签的访问控制。

  1. 在消费者账户中定义 LF 标签。在本教程中,我们使用 keyDivision和价值salesmarketing, 和analyst.

  2. 分配 lf-tag 密钥Division和值analyst到数据库lakeformation_tutorial_cross_account_database_consumer,在其中创建了资源链接。

向消费者授予 lf-tag 数据权限

作为最后一步,向消费者授予 lf-tag 数据权限。

  1. 在导航窗格中的下,Permissions (权限)数据湖权限,选择Grant.

  2. 适用于委托人,选择IAM 用户和角色,然后选择用户DataAnalyst.

  3. 适用于LF-标签或目录资源,选择与 LF 标签匹配的资源(建议).

  4. 选择密钥分析人员。

  5. 适用于数据库权限,选择描述数据库权限.

  6. 适用于表和列权限,选择Select描述表权限.

  7. 选择 Grant(授权)。

  8. 对用户重复这些步骤DataAnalyst,lf-tag 密钥在哪里Confidentiality而且值为public.

    此时,消费者账户中的数据分析师用户应该能够找到数据库和资源链接,并通过 Athena 控制台查询共享表。如果没有,请确认以下内容是否已正确配置:

    • 已为共享表创建资源链接

    • 您授予用户访问由生产者账户共享的 LF-tag 的权限

    • 您授予用户访问与创建资源链接的资源链接和数据库关联的 LF-Tag 的访问权限

    • 检查是否为资源链接和创建资源链接的数据库分配了正确的 LF-Tag