EMR Serverless 的可信身份传播入门 - Amazon EMR

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

EMR Serverless 的可信身份传播入门

本节帮助您使用 Apache Livy Endpoint 配置 EMR 无服务器应用程序,使其与 AWS IAM 身份中心集成并启用可信身份传播。

先决条件

  • 您要在其中创建可信身份传播的 AWS 区域中的身份中心实例,该实例已启用 EMR Serverless Apache Livy Endpoint。一个 AWS 账户的身份中心实例只能存在于一个区域中。请参阅启用 IAM 身份中心并将您的身份来源中的用户和群组配置到 IAM Identit y Center。

  • 为下游服务(例如 Lake Formation 或 S3 访问授权)或交互式工作负载与之交互访问数据的 Amazon Redshift 集群启用可信身份传播。

创建启用了可信身份传播的 EMR 无服务器应用程序所需的权限

除了访问 EMR Serverless 所需的基本权限外,您还必须为用于创建支持可信身份传播的 EMR 无服务器应用程序的 IAM 身份或角色配置其他权限。对于可信身份传播,EMR Serverless 是您账户中管理身份中心应用程序的单 creates/bootstraps 一服务,该服务利用该服务向下游进行身份验证和身份传播。

"sso:DescribeInstance", "sso:CreateApplication", "sso:DeleteApplication", "sso:PutApplicationAuthenticationMethod", "sso:PutApplicationAssignmentConfiguration", "sso:PutApplicationGrant", "sso:PutApplicationAccessScope"
  • sso:DescribeInstance— 授予描述和验证您在参数中指定的 IAM Identity Center InstanceArn 的权限。 identity-center-configuration

  • sso:CreateApplication— 授予创建用于操作的 EMR Serverless 托管 IAM 身份中心应用程序的权限。 trusted-identity-propatgion

  • sso:DeleteApplication— 授予清理 EMR Serverless 托管 IAM 身份中心应用程序的权限

  • sso:PutApplicationAuthenticationMethod— 授予在 EMR Serverless 托管 IAM 身份中心应用程序上安装身份验证方法的权限,该应用程序允许 emr-serverless 服务主体与 IAM 身份中心应用程序交互。

  • sso:PutApplicationAssignmentConfiguration— 授予在 IAM 身份中心应用程序上设置 ser-assignment-not-required “U” 设置的权限。

  • sso:PutApplicationGrant— 授予在 IAM 身份中心应用程序上应用令牌交换、IntroSpectToken、refreshToken 和 revokeToken 授予的权限。

  • sso:PutApplicationAccessScope— 授予将启用可信身份传播的下游作用域应用于 IAM 身份中心应用程序的权限。我们应用 “redshift: connect”、“lakeformation: query” 和 “s3: read_write” 范围来启用这些服务。 trusted-identity-propagation

创建启用了可信身份传播的 EMR 无服务器应用程序

您需要使用指定—identity-center-configuration字段才能在identityCenterInstanceArn应用程序中启用可信身份传播。使用以下示例命令创建启用了可信身份传播的 EMR Serverless 应用程序。

注意

您还需要指定仅--interactive-configuration '{"livyEndpointEnabled":true}'为 Apache Livy Endpoint 启用可信身份传播。

aws emr-serverless create-application \ --release-label emr-7.8.0 \ --type "SPARK" \ --identity-center-configuration '{"identityCenterInstanceArn" : "arn:aws:sso:::instance/ssoins-123456789"}' \ --interactive-configuration '{"livyEndpointEnabled":true}'
  • identity-center-configuration—(可选)启用身份中心可信身份传播(如果已指定)。

  • identityCenterInstanceArn –(必需)Identity Center 实例 ARN。

如果您没有所需的身份中心权限(如上所述),则应首先创建不带可信身份传播的 EMR Serverless 应用程序(例如,不要指定—identity-center-configuration参数),然后要求您的身份中心管理员通过调用更新应用程序 API 来启用可信身份传播,参见以下示例:

aws emr-serverless update-application \ --application-id applicationId \ --identity-center-configuration '{"identityCenterInstanceArn" : "arn:aws:sso:::instance/ssoins-123456789"}'

EMR Serverless 会在您的账户中创建服务托管的身份中心应用程序,服务利用该应用程序进行身份验证和向下游服务传播身份。EMR Serverless 创建的托管身份中心应用程序将在您账户中所有启用的 trusted-identity-propagation EMR Serverless 应用程序之间共享。

注意

请勿在托管的身份中心应用程序上手动修改设置。任何更改都可能影响您账户中所有 trusted-identity-propagation启用的 EMR Serverless 应用程序。

用于传播身份的 Job 执行角色权限

由于 EMR-Serverless 利用身份增强型 job-execution-role凭证将身份传播到下游服务 AWS ,因此任务执行角色的信任策略必须具有额外的权限,才能使用身份增强任务执行角色凭证,sts:SetContext以允许下游 trusted-identity-propagation服务(例如 S3 访问授予、Lake Formation 或 Amazon Redshift)。要了解有关如何创建角色的更多信息,请参阅创建作业运行时角色

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "emr-serverless.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:SetContext"] } ] }

此外, JobExecutionRole 还需要下游 AWS 服务的权限,job-run 会调用这些下游服务来使用用户身份获取数据。请参阅以下链接来配置 S3 访问授权 Lake Formation。