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

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

使用两者管理跨客户权限 AWS Glue 和 Lake Formation

可以授予跨帐户访问权限 Data Catalog 资源和基础数据,方法是使用 AWS Glue 或 AWS Lake Formation.

英寸 AWS Glue,您可通过创建 Data Catalog 资源策略。英寸 Lake Formation,您授予跨帐户权限 依据 使用 Lake Formation GRANT/REVOKE 权限模型和 GrantPermissions API操作。

提示

我们建议您删除 Data Catalog 资源政策,并且仅依赖 Lake Formation 保护您的数据湖的权限。

您可以查看 Lake Formation 跨账户授予,方法是使用 Lake Formation 控制台或 AWS Resource Access Manager (人AWS RAM)控制台。但是,这些控制台页面不会显示由 AWS Glue Data Catalog 资源策略。同样,您可以在 Data Catalog 使用 设置 页面 AWS Glue 控制台,但该页面不显示使用 Lake Formation.

要确保您在查看和管理跨账户权限时不会遗漏任何权限, Lake Formation 和 AWS Glue 要求您执行以下操作,以表明您了解并允许两 Lake Formation 和 AWS Glue.

授予跨账户权限时,使用 AWS Glue

如果否 Lake Formation 已从您的帐户中进行了跨帐户授权,您可以 Data Catalog 资源策略 AWS Glue. 但是,如果 Lake Formation 授予,您必须执行以下操作之一以确保成功保存资源策略:

  • 当您将资源策略保存在 设置 页面 AWS Glue 控制台时,控制台会发出警报,指出策略中的权限将与使用 Lake Formation. 您必须选择 继续 保存策略。

  • 当您使用 glue:PutResourcePolicy API操作,您必须设置 EnableHybrid 成员 PutResourcePolicyRequest 结构到'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": "AllowConsumerFullCatalogAccess", "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_str = json.dumps(policy) glue.put_resource_policy(PolicyInJson=policy_str, EnableHybrid='TRUE')

    有关更多信息,请参阅 PutResourcePolicy 操作(Python:put_resource_policy)AWS Glue 开发人员指南.

授予跨账户权限时,使用 Lake Formation

如果没有 Data Catalog 资源政策, Lake Formation 交叉帐户授予,您照常继续。但是,如果 Data Catalog 资源政策存在,您必须向其添加以下声明,以允许 Lake Formation 跨帐户授予成功。Replace <region> 使用有效的地区名称,并且 <account-id> 您的 AWS 帐户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 授予成功,但被冻结 AWS RAM,且接收方帐户无法访问授予的资源。

另请参见: