

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

# 可信身份传播
<a name="security-iam-service-trusted-prop"></a>

在 Amazon EMR 7.8.0 及更高版本中，您可以通过 Apache Livy Endpoint 将用户身份从 AWS IAM 身份中心传播到使用 EMR Serverless 的交互式工作负载。Apache Livy 交互式工作负载会将提供的身份进一步传播到 Amazon S3、Lake Formation 和 Amazon Redshift 等下游服务，从而在这些下游服务中通过用户身份实现安全的数据访问。以下各节提供了概念概述、先决条件以及通过 Apache Livy Endpoint 将身份启动和传播到 EMR Serverless 交互式工作负载所需的步骤。

## 概述
<a name="security-iam-service-trusted-prop-overview"></a>

对于任何规模和类型的组织，推荐使用 I@@ [AM Identit](https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html) y Center AWS 进行员工身份验证和授权。使用 Identity Center，在现有身份源中创建和管理用户身份 AWS，或者连接现有身份源，包括微软 Active Directory、Okta、Ping Identity JumpCloud、Google Workspace 和微软 Entra ID（前身为 Azure AD）。

[可信身份传播](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overview.html)是 AWS IAM Identity Center 的一项功能，互联 AWS 服务的管理员可以使用该功能来授予和审计对服务数据的访问权限。对这些数据的访问权限基于用户属性，例如组关联。设置可信身份传播需要互联 AWS 服务的管理员和 IAM Identity Center 管理员之间的协作。有关更多信息，请参阅《IAM Identity Center 用户指南》**中的[先决条件和注意事项](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overall-prerequisites.html)。

## 功能和优势
<a name="security-iam-service-trusted-prop-features"></a>

将 EMR Serverless Apache Livy Endpoint 与 IAM Identity Center [可信身份传播](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overview.html)集成具有以下优势：
+ 能够在 La AWS ke Form AWS ation 托管的 Glue 数据目录表上使用身份中心身份强制执行表级授权。
+ 能够在 Amazon Redshift 集群上使用 IAM Identity Center 身份强制执行授权。
+ 可实现端到端的全程用户操作跟踪，以满足审计的需要。
+ 能够在 S3 Access Grants 托管的 S3 前缀上使用 Identity Center 身份强制执行 Amazon S3 前缀级别的授权。

## 工作原理
<a name="security-iam-service-trusted-prop-features-works"></a>

![\[EMR Serverless 流程图。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/EMR-Serverless-UserGuide/images/PEZ-SMAI.png)


### 使用案例示例
<a name="security-iam-service-trusted-prop-use-cases"></a>

#### 数据准备和特征工程
<a name="security-iam-service-trusted-prop-feature-eng"></a>

来自多个研究团队的数据科学家可以使用统一的数据平台协作完成复杂的项目。他们使用企业凭证登录 SageMaker 人工智能，立即访问跨多个 AWS 账户的庞大共享数据湖。开始新机器学习模型的特征工程时，通过 EMR Serverless 启动的 Spark 会话会根据其传播的身份强制执行 Lake Formation 列级和行级安全策略。科学家可以使用自己熟悉的工具高效地准备数据和开展特征工程，同时合规团队也可以确信每次数据交互都会得到自动跟踪和审计。这种安全的协作环境不仅可以加快研究管道，同时还可确保遵守受监管行业严格的数据保护标准。

# 可信身份传播入门
<a name="security-iam-service-trusted-prop-getting-started"></a>

[本节帮助您使用 Apache Livy Endpoint 配置 EMR 无服务器应用程序，使其与 AWS IAM 身份中心集成并启用可信身份传播。](https://docs.aws.amazon.com/singlesignon/latest/userguide/trustedidentitypropagation-overview.html)

## 先决条件
<a name="security-iam-service-trusted-prop-prereqs"></a>
+ 您要在其中创建可信身份传播的 AWS 区域中的身份中心实例，该实例已启用 EMR Serverless Apache Livy Endpoint。一个 AWS 账户的身份中心实例只能存在于单个区域中。请参阅[启用 IAM 身份中心并将您的身份](https://docs.aws.amazon.com/singlesignon/latest/userguide/enable-identity-center.html)[来源中的用户和群组配置到 IAM Identit](https://docs.aws.amazon.com/singlesignon/latest/userguide/tutorials.html) y Center。
+ 为交互式工作负载将与之交互的下游服务（例如 Lake Formation 或 S3 访问权限管控或 Amazon Redshift 集群）启用可信身份传播，以便访问数据。

## 创建启用了可信身份传播的 EMR Serverless 应用程序的权限
<a name="security-iam-service-trusted-prop-emrs-application"></a>

除了[访问 EMR Serverless 所需的基本权限](setting-up.html#setting-up-iam)外，您还必须为用于创建启用可信身份传播的 EMR Serverless 应用程序的 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 Identity Center 应用程序的权限
+ `sso:PutApplicationAuthenticationMethod`：授予在 EMR Serverless 托管 IAM Identity Center 应用程序上放置 authenticationMethod 的权限，以便 emr-serverless 服务主体与 IAM Identity Center 应用程序交互。
+ `sso:PutApplicationAssignmentConfiguration`— 授予在 IAM 身份中心应用程序上设置 ser-assignment-not-required “U” 设置的权限。
+ `sso:PutApplicationGrant`：授予在 IAM Identity Center 应用程序上应用 token-exchange、introspectToken、refreshToken 和 revokeToken 授权的权限。
+ `sso:PutApplicationAccessScope`：授予将启用可信身份传播的下游作用域应用于 IAM Identity Center 应用程序的权限。我们应用 “redshift: connect”、“lakeformation: query” 和 “s3: read\$1write” 范围来启用这些服务。 trusted-identity-propagation

## 创建启用可信身份传播的 EMR Serverless 应用程序
<a name="security-iam-service-trusted-prop-create-emrs-app"></a>

您必须使用 `identityCenterInstanceArn` 指定 `—identity-center-configuration` 字段，才能在应用程序中启用可信身份传播。使用以下示例命令创建启用可信身份传播的 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`：（可选）启用 Identity Center 可信身份传播（如果已指定）。
+ `identityCenterInstanceArn`：（必需）Identity Center 实例 ARN。

如果您没有所需的 Identity Center 权限（如前所述），请先创建没有可信身份传播的 EMR Serverless 应用程序（例如，不要指定 `—identity-center-configuration` 参数），然后让您的 Identity Center 管理员通过调用 update-application API 来启用可信身份传播，请参见以下示例：

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

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

**注意**  
请勿手动修改托管式 Identity Center 应用程序的设置。任何更改都可能影响您账户中所有 trusted-identity-propagation启用的 EMR Serverless 应用程序。

## 传播身份所需的作业执行角色权限
<a name="security-iam-service-trusted-prop-job-execution-role-permissions"></a>

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

------
#### [ JSON ]

****  

```
{
  "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。
+ [将 Lake Formation 与 EMR Serverless 结合使用](lake-formation-section.html)
+ [将 Amazon S3 访问权限授予与 EMR 无服务器配合使用](access-grants.html)

# 交互式工作负载的可信身份传播
<a name="security-iam-service-trusted-prop-interactive-workloads"></a>

通过 Apache Livy 端点将身份传播到交互式工作负载的步骤取决于您的用户是与托管开发环境（如 AWS Amazon SageMaker AI 托管开发环境）进行交互，还是作为面向客户端的应用程序与您自己的自托管笔记本环境进行交互。

![\[EMR Serverless 流程图。\]](http://docs.aws.amazon.com/zh_cn/emr/latest/EMR-Serverless-UserGuide/images/PEZ-SMAI.png)


## AWS 托管开发环境
<a name="security-iam-service-trusted-prop-aws-managed-development"></a>

以下面向客户端的 AWS 托管应用程序支持使用 EMR-Serverless Apache Livy 端点进行可信身份传播：
+ [亚马逊 SageMaker AI](https://aws.amazon.com/sagemaker/ai/)

## 客户自行管理的自托管 Notebook 环境
<a name="security-iam-service-trusted-prop-self-hosted-notebook"></a>

要为自定义开发的应用程序的用户启用可信身份传播，请参阅*AWS 安全*博客中的[使用可信身份传播以编程方式访问 AWS 服务](https://aws.amazon.com/blogs/security/access-aws-services-programmatically-using-trusted-identity-propagation/)。

# 用户后台会话
<a name="security-iam-service-trusted-prop-user-background"></a>

用户后台会话使长时间运行的分析和机器学习流程即使在用户已从笔记本界面注销后仍能继续进行。此功能是通过 EMR Serverless 与 IAM Identity Center 的可信身份传播功能集成来实现的。本节介绍用户后台会话的配置选项和行为。

**注意**  
用户后台会话适用于通过 Amazon SageMaker Unified Studio 等笔记本界面启动的 Spark 工作负载。启用或禁用此功能仅影响新的 Livy 会话；现有活动的 Livy 会话不受影响。

## 配置用户后台会话
<a name="security-trusted-prop-user-background-config"></a>

必须在两个级别上启用用户后台会话才能正常运行：

1. **IAM 身份中心实例级别** — 通常由 IdC 管理员配置

1. **EMR 无服务器应用程序级别** — 由 EMR 无服务器应用程序管理员配置

### 为 EMR 无服务器应用程序启用用户后台会话
<a name="security-trusted-prop-user-background-enable"></a>

要为 EMR Serverless 应用程序启用用户后台会话，您必须在创建或更新应用程序`identityCenterConfiguration`时将`userBackgroundSessionsEnabled``true`参数设置为。

**先决条件**
+ 您用于 EMR Serverless 应用程序的 IAM 角色必须具有权限。 create/update `sso:PutApplicationSessionConfiguration`此权限允许 EMR Serverless 在 EMR Serverless 托管 IdC 应用程序级别启用用户后台会话。
+ 您的 EMR Serverless 应用程序必须使用版本标签 7.8 或更高版本，并且必须启用可信身份传播。

**要启用用户后台会话，请使用 AWS CLI**

```
aws emr-serverless create-application \
    --name "my-analytics-app" \
    --type "SPARK" \
    --release-label "emr-7.8.0" \
    --identity-center-configuration '{"identityCenterInstanceArn": "arn:aws:sso:::instance/ssoins-1234567890abcdef", "userBackgroundSessionsEnabled": true}'
```

**要更新现有应用程序，请执行以下操作：**

```
aws emr-serverless update-application \
    --application-id applicationId \
    --identity-center-configuration '{"identityCenterInstanceArn": "arn:aws:sso:::instance/ssoins-1234567890abcdef", "userBackgroundSessionsEnabled": true}'
```

### 配置矩阵
<a name="security-trusted-prop-user-background-matrix"></a>

有效的用户后台会话配置取决于 EMR Serverless 应用程序设置和 IAM Identity Center 实例级别设置：


**用户后台会话配置矩阵**  

|  userBackgroundSession 已启用 IAM 身份中心 | 已启用 EMR 无服务器 userBackgroundSessions | 行为 | 
| --- | --- | --- | 
| 是 | TRUE | 用户后台会话已启用 | 
| 是 | FALSE | 会话过期，用户注销 | 
| 否 | TRUE | 应用程序 creation/update 因异常而失败 | 
| 否 | FALSE | 会话过期，用户注销 | 

## 默认用户后台会话持续时间
<a name="security-trusted-prop-user-background-duration"></a>

默认情况下，在 IAM Identity Center 中，所有用户后台会话的持续时间限制为 7 天。管理员可以在 IAM Identity Center 控制台中修改此持续时间。此设置在 IAM Identity Center 实例级别应用，会影响该实例内所有受支持的 IAM Identity Center 应用程序。
+ 持续时间可以设置为从 15 分钟到 90 天之间的任何值。
+ 此设置在 IAM Identity Center 控制台的 **“设置” → “**身份验证**” → “配置”** 下**配置**（“非交互式作业” 部分）

**注意**  
EMR Serverless Livy 会话的单独最大持续时间限制为 24 小时。当达到 Livy 会话限制或用户后台会话持续时间时（以先到者为准），会话将终止。

## 禁用用户后台会话的影响
<a name="security-trusted-prop-user-background-disabling"></a>

在 IAM 身份中心禁用用户后台会话时：

现有的 Livy 会话  
如果它们是在启用用户后台会话的情况下启动的，则可以不间断地继续运行。这些会话将继续使用其现有的后台会话令牌，直到这些会话自然终止或被明确停止。

全新 Livy 会话  
将使用标准的可信身份传播流程，并在用户注销或交互式会话到期（例如关闭 Amazon SageMaker Unified Studio JupyterLab 笔记本时）时终止。

## 更改用户后台会话持续时间
<a name="security-trusted-prop-user-background-changing-duration"></a>

在 IAM Identity Center 中修改用户后台会话的持续时间设置时：

现有的 Livy 会话  
继续以与启动时相同的后台会话持续时间运行。

全新 Livy 会话  
将使用新的会话时长进行后台会话。

## 注意事项
<a name="security-trusted-prop-user-background-considerations"></a>

### 会话终止条件
<a name="security-trusted-prop-user-background-considerations-session"></a>

使用用户后台会话时，Livy 会话将继续运行，直到出现以下情况之一：
+ 用户后台会话过期（基于 IdC 配置，最长 90 天）
+ 管理员已手动撤销用户后台会话
+ Livy 会话达到其空闲超时（默认值：上次执行语句后 1 小时）
+ Livy 会话已达到其最大持续时间（24 小时）
+ 用户明确停止或重新启动笔记本内核

### 数据持久性
<a name="prop-user-background-additional-data-persistence"></a>

使用用户后台会话时：
+ 用户注销后无法重新连接到笔记本界面查看结果
+ 将您的 Spark 语句配置为在执行完成之前将结果写入永久存储（例如 Amazon S3）

### 成本影响
<a name="prop-user-background-additional-data-persistence-cost"></a>
+ 即使用户结束了 Amazon SageMaker Unified Studio 会 JupyterLab 话，任务仍将继续运行直至完成，并且将在完成的整个运行期间产生费用。
+ 监控您的活动后台会话，以避免因忘记或放弃会话而产生不必要的费用。

### 功能可用性
<a name="prop-user-background-additional-feature-availability"></a>

EMR Serverless 的用户后台会话可用于：
+ 仅限 Spark 引擎（不支持 Hive 引擎）
+ 仅限 Livy 交互式会话（不支持批处理作业和流式处理作业）
+ EMR Serverless 版本标签 7.8 及更高版本

# EMR 无服务器集成的注意事项 Trusted-Identity-Propagation
<a name="security-iam-service-trusted-prop-considerations-limitations"></a>

将 IAM 身份中心 Trusted-Identity-Propagation与 EMR Serverelss 应用程序配合使用时，请考虑以下几点：
+ Amazon EMR 7.8.0 及更高版本支持通过 Identity Center 进行可信身份传播，而且仅支持 Apache Spark。
+ 可信身份传播只能用于[通过 Apache Livy 端点的 EMR Serverless 交互式工作负载](https://docs.aws.amazon.com/emr/latest/EMR-Serverless-UserGuide/interactive-workloads-livy-endpoints.html)。通过 EMR Studio 的交互式工作负载不支持可信身份传播
+ Batch 作业和流式处理工作负载不支持可信身份传播
+ 使用 AWS Lake Formation、使用可信身份传播的精细访问控制可用于[通过 Apache Livy 端点使用 EMR Serverless 的交互式工作负载](interactive-workloads-livy-endpoints.html)。
+ 以下 AWS 区域支持使用 Amazon EMR 进行可信身份传播：
  + af-south-1：非洲（开普敦）
  + ap-east-1：亚太地区（香港）
  + ap-northeast-1：亚太地区（东京）
  + ap-northeast-2：亚太地区（首尔）
  + ap-northeast-3：亚太地区（大阪）
  + ap-south-1：亚太地区（孟买）
  + ap-southeast-1：亚太地区（新加坡）
  + ap-southeast-2：亚太地区（悉尼）
  + ap-southeast-3：亚太地区（雅加达）
  + ca-central-1：加拿大（中部）
  + ca-west-1：加拿大（卡尔加里）
  + eu-central-1：欧洲地区（法兰克福）
  + eu-north-1：欧洲（斯德哥尔摩）
  + eu-south-1：欧洲地区（米兰）
  + eu-south-2：欧洲（西班牙）
  + eu-west-1：欧洲地区（爱尔兰）
  + eu-west-2：欧洲（伦敦）
  + eu-west-3：欧洲（巴黎）
  + me-central-1：中东（阿联酋）
  + me-south-1：中东（巴林）
  + sa-east-1：南美洲（圣保罗）
  + us-east-1：美国东部（弗吉尼亚北部）
  + us-east-2：美国东部（俄亥俄）
  + us-west-1：美国西部（加利福尼亚北部）
  + us-west-2：美国西部（俄勒冈）