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

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

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

在本部分中,我们将引导您完成以下概括步骤:

  1. 定义一个 LF 标签。

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

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

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

  5. (可选择)撤消对的权限IAMAllowedPrincipals在数据库、表和列上。

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

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

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

定义一个 LF-tag

注意

如果您已登录制作人账户,请先注销,然后再完成以下步骤。

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

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

  3. 选择添加 LF-tag.

将 LF-tag 分配给目标资源

将 LF-tag 分配给目标资源并将数据权限授予其他账户

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

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

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

    在本教程中,您可以为数据库指定 LF-tag,但也可以为表和列分配 LF 标签。

  3. 选择新分配lf-tag.

  4. 添加关键帧Confidentiality和Valuepublic.

  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 (权限)数据Lake 权限,选择Grant.

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

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

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

  5. 在处登录密钥正在与消费者账户(key)共享的标签Confidentiality和Valuepublic)。

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

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

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

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

  10. SelectSelect描述可授予的权限.

  11. 选择 Grant(授权)。

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

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

在这一步中,我们需要撤消默认值超级权限来自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/,在下选择数据目录、数据库. 如果没有,请确认是否正确配置了以下各项:

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

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

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

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

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

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

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

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

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

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

  3. 在 Lake Formation 控制台上 (https://console.aws.amazon.com/lakeformation/),在导航窗格中的下,在数据目录、数据库中,选择共享数据库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(创建)。

    资源链接显示在Datog.

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

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

  1. 在使用者账户中定义 LF-tag。在本教程中,我们使用 keyDivision和值salesmarketing, 和analyst.

  2. 分配 LF-tag 键Division和Valueanalyst到数据库中lakeformation_tutorial_cross_account_database_consumer,其中创建资源链接。

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

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

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

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

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

  4. 选择密钥分析人员。

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

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

  7. 选择 Grant(授权)。

  8. 对用户重复这些步骤DataAnalyst,其中 LF-tag 密钥在哪里Confidentiality和有效值public.

    此时,消费者账户中的数据分析师用户应该能够找到数据库和资源链接,并通过 Athena 控制台查询共享表https://console.aws.amazon.com/athena/. 如果没有,请确认是否正确配置了以下各项:

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

    • 您已授予用户访问由制作者账户共享的 LF-tag 的权限

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

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