Share Your AWS re:Post Experience - Quick 3 Question Survey
Help us improve AWS re:Post! We're interested in understanding how you use re:Post and its impact on your AWS journey. Please take a moment to complete our brief 3-question survey.
如何使用 AWS Lake Formation 跨账户共享 AWS Glue Data Catalog 数据库和表?
我想使用 AWS Lake Formation 跨账户共享 AWS Glue Data Catalog 数据库和表。
解决方法
借助 Lake Formation 的跨账户功能,您可以向其他 AWS 账户授予访问权限,以便在数据湖中写入和共享数据。可以通过基于标签的访问控制或命名资源共享资源。本文重点介绍使用命名资源方法授予对 Data Catalog 资源的跨账户访问权限。
确保满足先决条件
在与另一个账户共享 Data Catalog 资源或访问从另一个账户共享的资源之前,请记住以下先决条件:
撤销 Lake Formation 权限
撤销 IAMAllowedPrincipals 组对 Data Catalog 资源的所有 Lake Formation 权限。
防止新表拥有 Super 权限
对于包含您可能共享的表的 Data Catalog 数据库,请防止新表具有对 IAMAllowedPrincipals 的默认 Super 权限:
- 打开 Lake Formation 控制台。
- 在导航窗格的 Data Catalog 下,选择 Databases(数据库)。
- 选择要更新的数据库。
- 选择 Actions(操作),然后选择 Edit(编辑)。
- 在 Default permissions for newly created tables(新创建表的默认权限)下,清除 Use only IAM access control for new tables in this database(仅对此数据库中的新表使用 IAM 访问控制)。
- 选择 Save(保存)。
有关详细信息,请参阅 Super。
添加跨账户访问所需的权限
如果账户中已启用 AWS Glue Data Catalog 资源策略,您可以删除该策略或向该策略添加跨账户授权所需的新权限。以下是一个示例资源策略,提供从账户 1111222233334444 到账户 5555666677778888 的跨账户 AWS Glue 访问权限。
有关详细信息,请参阅授予跨账户访问权限。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ram.amazonaws.com" }, "Action": "glue:ShareResource", "Resource": [ "arn:aws:glue:us-east-1:1111222233334444:table/*/*", "arn:aws:glue:us-east-1:1111222233334444:database/*", "arn:aws:glue:us-east-1:1111222233334444:catalog" ] }, { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::5555666677778888:root" }, "Action": "glue:*", "Resource": [ "arn:aws:glue:us-east-1:1111222233334444:table/*/*", "arn:aws:glue:us-east-1:1111222233334444:database/*", "arn:aws:glue:us-east-1:1111222233334444:catalog" ] } ] }
启用与组织共享
如果 Data Catalog 资源在组织间共享,请使用 AWS RAM 控制台启用与 AWS Organizations 共享。启用此选项的 AWS Identity and Access Management (IAM) 用户或角色必须拥有 ram:EnableSharingWithAwsOrganization IAM 权限。
有关详细信息,请参阅跨账户访问先决条件。
授予所需的 IAM 权限
**源账户:**要使用命名资源方法授予跨账户权限,您必须具有 AWS Glue 和 AWS Resource Access Manager (AWS RAM) 所需的 IAM 权限。您可以选择授予这些权限的 AWS 托管式策略 AWSLakeFormationCrossAccountManager,也可以基于此策略创建新策略。
**目标账户:**目标账户中的数据湖管理员必须拥有以下附加策略。此策略允许管理员接受 AWS RAM 资源共享邀请并启用与组织的资源共享:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ram:AcceptResourceShareInvitation", "ram:RejectResourceShareInvitation", "ec2:DescribeAvailabilityZones", "ram:EnableSharingWithAwsOrganization" ], "Resource": "*" } ] }
**注意:**接收 AWS RAM 中的资源共享邀请的 IAM 用户或角色必须具有 glue:PutResourcePolicy 所需的 IAM 权限。
与目标账户共享数据库及其表
要与不属于组织的目标账户共享数据库和数据库中的所有表,请执行以下操作:
**注意:**如果共享源账户数据库中的所有表,则在源账户中创建的任何新表都会自动与目标账户共享。
在源账户中,执行以下操作:
- 打开 Lake Formation 控制台,然后以数据湖管理员身份登录。
- 在导航窗格中,选择 Databases(数据库)。
- 选择要共享的数据库。
- 选择 Actions(操作),然后选择 Grant(授予)。
- 选择 External account(外部账户)。
- 对于 AWS account ID or AWS organization ID(AWS 账户 ID 或 AWS 组织 ID),输入目标账户的账户 ID。
- 对于 Table(表),确保选择 All tables(所有表)。
- 对于 Table permissions(表权限)和 Grantable permissions(可授予的权限),选择要授予的访问权限。
- 选择 Grant(授予)。
在目标账户中,执行以下操作:
- 打开 AWS RAM 控制台。
- 在导航窗格中的 Shared with me(与我共享)下,选择 Resource shares(资源共享)。
- 查看已授予您访问权限的资源共享列表。
- 要接受从源账户共享的资源的邀请,请选择资源共享 ID,然后选择 Accept resource share(接受资源共享)。
- 打开 Lake Formation 控制台。
- 在导航窗格中,选择 Databases(数据库)。
您可以在列表中查看共享数据库。此数据库的 Owner account ID(拥有者账户 ID)显示源账户的账户 ID。 - 选择共享数据库,然后选择 Actions(操作)。
- 选择 Create resource link(创建资源链接)。
- 在 Create resource link(创建资源链接)页面中,执行以下操作:
对于 Resource link name(资源链接名称),输入资源链接的名称。
对于 Shared database(共享数据库),请确保选中共享数据库的名称。
对于 Shared database's owner ID(共享数据库的拥有者 ID),输入源账户的账户 ID。 - 选择 Create(创建)。
资源链接即已创建。
资源链接是指向元数据数据库和表(通常指向来自其他 AWS 账户的共享数据库和表)的 Data Catalog 对象。这些链接有助于实现对数据湖中数据的跨账户访问。创建资源链接后,您可以使用数据湖管理员访问权限查询共享数据库中的表。
要向 IAM 用户/主体授予对共享数据库的访问权限,请授予访问资源链接和共享数据库所需的权限。这允许 IAM 用户/主体在其 Lake Formation 控制台中查看共享数据库和资源链接。IAM 用户还可以在其 Amazon Athena 控制台或 Amazon Redshift Spectrum 中查看数据库和资源链接。
要向 IAM 用户授予对资源链接的访问权限,请执行以下操作:
- 打开 Lake Formation 控制台,然后以数据湖管理员身份登录。
- 在导航窗格中,选择 Databases(数据库)。
- 选择您创建的资源链接。
- 选择 Actions(操作),然后选择 Grant(授予)。
- 在 Principals(主体)下,选择 IAM users and roles(IAM 用户和角色)。
- 对于 IAM users and roles(IAM 用户和角色),选择您需要授予访问权限的 IAM 用户或主体。
- 在 Resource link permissions(资源链接权限)下,选择 Describe(描述)。
- 选择 Grant(授予)。
要向 IAM 用户授予对共享数据库的访问权限,请执行以下操作:
- 打开 Lake Formation 控制台,然后以数据湖管理员身份登录。
- 在导航窗格中,选择 Databases(数据库)。
- 选择共享数据库。
- 选择 Actions(操作),然后选择 Grant(授予)。
- 在“主体”下,选择“IAM 用户和角色”。
- 对于“IAM 用户和角色”,选择您需要授予访问权限的 IAM 用户或主体。
- 在 Database permissions(数据库权限)下,选择 Describe(描述)。
**注意:**此步骤为用户提供了查看共享数据库的最低权限。 - 选择 Grant(授予)。
要授予对数据库中所有表或特定表的访问权限,请选择 All tables(所有表)选项:
- 选择资源链接。
- 选择 Actions(操作),然后选择 Grant(授予)。
- 选择 IAM users and roles(IAM 用户和角色)。
- 对于 IAM users and roles(IAM 用户和角色),选择要授予访问权限的用户/主体。
- 在 LF-Tags or catalog resources(LF 标签或目录资源)下,执行以下操作:
要授予对数据库中所有表的访问权限,请在 Tables - optional(表 - 可选)中选择 All tables(所有表)。
要仅授予对数据库中特定表的访问权限,请在 Tables - optional(表 - 可选)中选择这些表。 - 对于 Table permissions(表权限)和 Grantable permissions(可授予的权限),选择 Select(选择)和 Describe(描述)。
- 选择 Grant(授予)。
**注意:**您只能授予您在源账户的 Grantable permissions(可授予的权限)中选择的权限。
授予所需权限后,您可以从目标账户成功地查询 Athena 中的表。
只与目标账户共享表
要与目标账户共享单个表,请按照上一部分中的说明进行以下更改。
源账户:
要从 Lake Formation 控制台向目标账户授予访问权限,请选择单个表而不是选择数据库。
目标账户:
- 接受 AWS RAM 控制台中的资源共享,以在 Lake Formation 控制台中访问共享表。
- 为共享表创建资源链接。创建资源链接后,您可以使用数据湖管理员访问权限查询共享表。
- 要向 IAM 用户/主体授予对共享表的访问权限,您必须授予资源链接的权限。
查看其他注意事项
- 授予对表的权限时,您可以限制只能访问表中的特定列。如果这样做,目标账户只能查看共享表中的这些列。
- 确保目标账户中的 IAM 用户/主体有权访问源账户中的 Amazon Simple Storage Service (Amazon S3) 路径。
- 如果您撤销之前从源账户授予的权限,则目标账户将无法访问共享数据库/表。但是,您在目标账户中创建的资源链接不会自动删除。必须手动删除该资源链接。
- 删除数据库/表时,AWS RAM 中的资源共享不会自动删除。因此,在删除共享数据库或表之前,必须手动撤销跨账户权限。
相关信息

相关内容
- AWS 官方已更新 2 个月前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前