先决条件 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

先决条件

您的 Amazon 账户必须满足以下先决条件,然后才能与其他账户中的其他账户或委托人共享数据目录资源(数据库和表),然后才能访问与您的账户共享的资源。

跨账户数据共享的一般要求
  • 要在混合访问模式下共享数据目录数据库和表,您需要将跨账户版本设置更新为版本 4

  • 在向数据目录资源授予跨账户权限之前,必须撤销该 IAMAllowedPrincipals 组对该资源的所有 Lake Formation 权限。如果调用主体拥有跨账户访问资源的权限,并且对于该资源存在 IAMAllowedPrincipals 权限,则 Lake Formation 会引发 AccessDeniedException

    仅当在 Lake Formation 模式下注册基础数据位置时,此要求才适用。如果在混合模式下注册数据位置,则对于共享数据库或表可以存在 IAMAllowedPrincipals 组权限。

  • 对于包含要共享的表的数据库,必须防止新表的默认授权 SuperIAMAllowedPrincipals。在 Lake Formation 控制台上,编辑数据库并关闭 “仅对该数据库中的新表使用 IAM 访问控制”,或者输入以下 Amazon CLI 命令(database替换为数据库名称)。如果基础数据位置是在混合访问模式下注册的,则无需更改此默认设置。在混合访问模式下,Lake Formation 允许您有选择地对亚马逊 S3 和同一资源强制执行 Lake Formati Amazon Glue on 权限和 IAM 权限策略。

    aws glue update-database --name database --database-input '{"Name":"database","CreateTableDefaultPermissions":[]}'
  • 要授予跨账户权限,授予者必须对Amazon Glue和 Amazon RAM 服务具有必需的 Amazon Identity and Access Management (IAM) 权限。 Amazon 托管策略AWSLakeFormationCrossAccountManager授予所需的权限。

    使用接收资源共享的账户中的数据湖管理员 Amazon RAM 必须遵守以下附加策略。它允许管理员接受 Amazon RAM 资源共享邀请。它还允许管理员启用与组织的资源共享。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:RejectResourceShareInvitation", "ec2:DescribeAvailabilityZones", "ram:EnableSharingWithAwsOrganization" ], "Resource": "*" } ] }
  • 如果要与 Amazon Organizations 或组织单位共享数据目录资源,则必须在中启用与组织共享 Amazon RAM。

    有关如何启用与组织共享的信息,请参阅《Amazon RAM 用户指南》中的启用与 Amazon 组织共享

    您必须拥有用于启用与组织的共享所需的 ram:EnableSharingWithAwsOrganization 权限。

  • 要直接与其他账户中的 IAM 主体共享资源,您需要将跨账户版本设置更新为版本 3。此设置在数据目录设置页面上提供。如果您使用的是版本 1,请参阅有关更新设置 更新跨账户数据共享版本设置 的说明。

  • 您不能与其他账户共享使用 Amazon Glue 服务托管密钥加密的数据目录资源。您只能共享使用客户加密密钥加密的数据目录资源,并且接收资源共享的账户必须对数据目录加密密钥拥有相应权限才能解密对象。

使用 LF-TBAC 要求进行跨账户数据共享
  • 要 Amazon Organizations 与组织单位 (OU) 共享数据目录资源,您需要将跨账户版本设置更新为版本 3

  • 要使用“版本 3”这一跨账户版本设置共享数据目录资源,授予者需要拥有在您的账户中的 Amazon 托管策略 AWSLakeFormationCrossAccountManager 中定义的 IAM 权限。

  • 如果您使用的跨账户版本设置是“版本 1”或“版本 2”,则必须具有启用 LF-TBAC 的数据目录资源策略 (glue:PutResourcePolicy)。有关更多信息,请参阅使用 Amazon Glue 和 Lake Formation 管理跨账户权限。

  • 如果您当前在使用 Amazon Glue 数据目录资源策略共享资源,并且想要使用“版本 3”这一跨账户版本设置授予跨账户权限,则必须使用 glue:PutResourcePolicy API 操作在数据目录设置中添加 glue:ShareResource 权限,如使用 Amazon Glue 和 Lake Formation 管理跨账户权限。一节所示。如果您的账户未进行跨账户授权,即未使用 Amazon Glue 数据目录资源策略(版本 1 和版本 2 使用 glue:PutResourcePolicy 权限)授予跨账户访问权限,则无需此策略。

    { "Effect": "Allow", "Action": [ "glue:ShareResource" ], "Principal": {"Service": [ "ram.amazonaws.com" ]}, "Resource": [ "arn:aws:glue:<region>:<account-id>:table/*/*", "arn:aws:glue:<region>:<account-id>:database/*", "arn:aws:glue:<region>:<account-id>:catalog" ] }
  • 如果您的账户已使用 Amazon Glue 数据目录资源策略进行跨账户共享,并且您当前在使用命名资源方法或跨账户设置为“版本 3”的 LF-TBAC 来共享资源(使用 Amazon RAM 共享资源),则在调用 glue:PutResourcePolicy API 操作时必须将 EnableHybrid 参数设置为 'true'。有关更多信息,请参阅使用 Amazon Glue 和 Lake Formation 管理跨账户权限。

访问共享资源的每个账户所需的设置
  • 如果您与共享资源 Amazon Web Services 账户,则消费者账户中必须至少有一个用户是数据湖管理员才能查看共享资源。有关如何创建数据湖管理员的信息,请参阅创建数据湖管理员

    数据湖管理员可以向账户中的其他主体授予对共享资源的 Lake Formation 权限。在数据湖管理员向其他主体授予对共享资源的权限之前,这些主体无法访问共享资源。

  • Athena 和 Redshift Spectrum 等集成服务需要资源链接才能在查询中包含共享资源。主体需要在其数据目录中创建指向其他 Amazon Web Services 账户中共享资源的资源链接。有关资源链接的更多信息,请参阅资源链接在 Lake Formation 中的工作原理

  • 当直接与 IAM 主体共享资源时,要使用 Athena 查询表,则主体需要创建资源链接。要创建资源链接,主体需要 Lake Formation CREATE_TABLECREATE_DATABASE 权限,以及 glue:CreateTableglue:CreateDatabase IAM 权限。

    如果制作者账户与同一主体或其他主体共享同一数据库下的不同表,则该主体立即可以查询该表。

注意

对于数据湖管理员和数据湖管理员已向其授予权限的主体,共享资源在数据目录中显示为本地(自有)资源。提取、转换、加载 (ETL) 作业可以访问共享资源的基础数据。

对于共享资源,Lake Formation 控制台上的数据库页面会显示所有者的账户 ID。

访问共享资源的底层数据时,将在共享资源接收者的账户和资源所有者的账户中生成 CloudTrail 日志事件。 CloudTrail 事件可以包含访问数据的委托人的 ARN,但前提是接收方账户选择在日志中包含委托人 ARN。有关更多信息,请参阅跨账户 CloudTrail 日志