Lake Formation 的 IAM 角色 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Lake Formation 的 IAM 角色

Amazon EMR 和 Amazon Lake Formation 之间的集成依赖于您在启动集群之前应创建的三个关键角色:

  1. 适用于 Amazon EMR 的自定义 Amazon EC2 实例配置文件。

  2. 用于身份联合的 Lake Formation 的 IAM 角色。

  3. 用于非 Lake Formation Amazon 服务的 IAM 角色。

此部分概述了这些角色以及需要为每个角色提供的策略。有关创建这些角色的信息,请参阅开始前的准备工作

EC2 实例配置文件

Amazon EMR 使用 IAM 服务角色代表您执行操作以预置和管理集群。集群 EC2 实例的服务角色(又称为 Amazon EMR 的 EC2 实例配置文件)是一种特殊类型的服务角色,在启动时分配给集群中的每个 EC2 实例。

为定义 EMR 集群与 Lake Formation 和其他Amazon服务交互的权限,您应该定义一个自定义 EC2 实例配置文件,以在启动集群时使用而不是 EMR_EC2_DefaultRole

有关更多信息,请参阅集群 EC2 实例的服务角色(EC2 实例配置文件)自定义 IAM 角色

Lake Formation 的 IAM 角色

Lake Formation 的 IAM 角色定义通过您的 IdP 登录的用户将具有哪些权限,以及什么身份提供商可以代入此角色。角色的 Maximum CLI/API session duration 定义访问 EMR Notebooks 和 Apache Zeppelin 的会话超时。

  • 此角色必须使用以下权限策略创建。

    { "Version": "2012-10-17", "Statement": { "Effect": "Allow", "Action": [ "lakeformation:GetDataAccess", "lakeformation:GetMetadataAccess", "glue:GetUnfiltered*", "glue:GetTable", "glue:GetTables", "glue:GetDatabase", "glue:GetDatabases", "glue:CreateDatabase", "glue:GetUserDefinedFunction", "glue:GetUserDefinedFunctions", "glue:GetPartition", "glue:GetPartitions" ], "Resource": "*" } }
    注意

    请勿向此角色授予访问由 Amazon Glue 管理的任意 Amazon S3 存储桶的权限。联合身份用户应使用 Spark SQL 通过 Lake Formation 访问数据,不应直接通过 Amazon S3 访问数据。

  • 该角色还必须包含以下信任策略,这使您的 IAM 身份提供程序可以代入该角色。将 account-id 替换为您的Amazon账户 ID。使用您 IAM 身份提供商的名称替换 IAM_identity_provider_name

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::account-id:saml-provider/IAM_identity_provider_name" }, "Action": "sts:AssumeRoleWithSAML" } ] }

用于非 Lake Formation Amazon服务的 IAM 角色

Amazon服务的 IAM 角色定义 Amazon EMR 集群在访问非Amazon Lake Formation服务时具有的权限。例如,如果在您的集群上运行的任务需要访问 Amazon DynamoDB 或任何其他Amazon服务,则 Amazon 服务的 IAM 角色应该包含访问这些服务所需的策略。

在您为此角色配置策略时,请确保角色没有对以下 API 操作的访问权限:

  • 任意 Amazon Glue API 操作。

  • 任意 Amazon Lake Formation API 操作。

  • 任何 Amazon Security Token Service (STS) AssumeRole 操作。

  • 由 Amazon Glue 管理的对存储桶的任何 Amazon S3 访问权限。集群应使用 Spark SQL 通过 Lake Formation 访问数据,不应直接通过 Amazon S3 访问数据。