同时使用Amazon Glue和 Lake Formation 管理跨账户权限 - Amazon Lake Formation
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

同时使用Amazon Glue和 Lake Formation 管理跨账户权限

您可以使用Amazon Glue或授予对数据目录资源和基础数据的跨账户访问权限Amazon Lake Formation。

在中,Amazon Glue您可以通过创建或更新数据目录资源策略来授予跨账户权限。在 Lake Formation 中,您可以使用 Lake FormationGRANT/REVOKE 权限模型和Grant Permissions API 操作来授予跨账户权限。

提示

我们建议仅依靠 Lake Formation 权限来保护您的数据湖。

你可以使用 Lake Formation 控制台查看 Lake Formation 跨账户补助,或者对于使用命名资源方法发放的补助,可以使用Amazon Resource Access Manager (Amazon RAM) 控制台查看。但是,这些控制台页面不显示Amazon Glue数据目录资源策略授予的跨账户权限。同样,您可以使用Amazon Glue控制台的 “设置” 页面查看 Data Catalog 资源策略中的跨账户授权,但该页面不显示使用 Lake Formation 授予的跨账户权限。

为了确保您在查看和管理跨账户权限时不会错过任何授权,Lake Formation 并Amazon Glue要求您执行以下操作,以表明您知道并允许 Lake Formation 和 Lake Formation 的跨账户授权Amazon Glue。

使用Amazon Glue数据目录资源策略授予跨账户权限时

如果您的账户没有使用用于共享资源的命名资源方法进行跨账户授权,则可以照常在中保存 Data Catalog 资源策略Amazon Glue。Amazon RAM但是,如果已经进行了涉及Amazon RAM资源共享的授权,则必须执行以下操作之一以确保成功保存资源策略:

  • 当您在Amazon Glue控制台的 S3 S3 S3(设置)页面上保存资源策略时,控制台会发出提示,指明策略中的权限不属于使用 Lake Formation 控制台授予的权限。必须选择 “继续” 才能保存策略。

  • 使用glue:PutResourcePolicy API 操作保存资源策略时,必须将EnableHybrid字段设置为 “TRUE”(类型 = 字符串)。以下代码示例演示如何在 Python 中执行此操作。

    import boto3 import json REGION = 'us-east-2' PRODUCER_ACCOUNT_ID = '123456789012' CONSUMER_ACCOUNT_IDs = ['111122223333'] glue = glue_client = boto3.client('glue') policy = { "Version": "2012-10-17", "Statement": [ { "Sid": "Cataloguers", "Effect": "Allow", "Action": [ "glue:*" ], "Principal": { "AWS": CONSUMER_ACCOUNT_IDs }, "Resource": [ f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:catalog", f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:database/*", f"arn:aws:glue:{REGION}:{PRODUCER_ACCOUNT_ID}:table/*/*" ] } ] } policy = json.dumps(policy) glue.put_resource_policy(PolicyInJson=policy, EnableHybrid='TRUE')

    有关更多信息,请参阅PutResourcePolicy 《Amazon Glue开发者指南》中的操作(Python:put_resource_policy)

使用 Lake Formation 命名资源方法授予跨账户权限时

如果您的账户中没有数据目录资源政策,则您发放的 Lake Formation 跨账户补助将照常进行。但是,如果存在数据目录资源策略,则必须向其添加以下语句,以允许跨账户授予成功,前提是这些授权是使用命名资源方法进行的。<region>替换为有效的区域<account-id>名称和您的Amazon账户 ID。

{ "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" ] }

如果没有这份额外的声明,Lake Formation 补助会成功Amazon RAM,但会被封锁,接收者账户无法访问授予的资源。

重要

使用基于 Lake Formation 标签的访问控制 (LF-TBAC) 方法进行跨账户授权时,如果跨账户版本设置为版本 1 或版本 2,则必须拥有至少具有中指定的权限的数据目录资源策略跨账户数据共享的先决条件

另请参见: