

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

# 入门 Amazon IAM Identity Center 和 Amazon EMR
<a name="emr-idc-start"></a>

本节将帮助您配置要与之集成的亚马逊 EMR。 Amazon IAM Identity Center

**Topics**
+ [创建 Identity Center 实例](#emr-idc-start-instance)
+ [为 Identity Center 创建 IAM 角色](#emr-idc-start-role)
+ [为未与 IAM Identity Center 集成的服务添加权限](#emr-idc-start-securityconfig-nonidc)
+ [创建启用 Identity Center 的安全配置](#emr-idc-start-securityconfig)
+ [创建并启动启用了 Identity Center 的集群](#emr-idc-cluster)
+ [为启用了 IAM Identity Center 的 EMR 集群配置 Lake Formation](emr-idc-lf.md)
+ [在启用了 IAM Identity Center 的 EMR 集群上使用 S3 Access Grants](emr-idc-s3ag.md)

**注意**  
要使用 Identity Center 与 EMR 集成，必须启用 Lake Formation 或 S3 访问授权。也可以两者都启用。如果两者都未启用，则不支持 Identity Center 集成。

## 创建 Identity Center 实例
<a name="emr-idc-start-instance"></a>

如果您还没有实例，请在您要启动 EMR 集群的 Amazon Web Services 区域 中创建一个 Identity Center 实例。Identity Center 实例只能存在于 Amazon Web Services 账户的单个区域中。

使用以下 Amazon CLI 命令创建一个名为的新实例`MyInstance`：

```
aws sso-admin create-instance --name MyInstance
```

## 为 Identity Center 创建 IAM 角色
<a name="emr-idc-start-role"></a>

要将 Amazon EMR 与集成 Amazon IAM Identity Center，请创建一个 IAM 角色，该角色可以从 EMR 集群中使用身份中心进行身份验证。在幕后，Amazon EMR 使用 SigV4 凭证将 Identity Center 身份中继到下游服务，例如 Amazon Lake Formation。您的角色还应当具有调用下游服务的相应权限。

创建角色时，请使用下面的权限策略：

```
{
  "Statement": [
    {
      "Sid": "IdCPermissions",
      "Effect": "Allow",
      "Action": [
        "sso-oauth:*"
      ],
      "Resource": "*"
    },
    {
      "Sid": "GlueandLakePermissions",
      "Effect": "Allow",
      "Action": [
        "glue:*",
        "lakeformation:GetDataAccess"
      ],
      "Resource": "*"
    },
    {
      "Sid": "AccessGrantsPermissions",
      "Effect": "Allow",
      "Action": [
        "s3:GetDataAccess",
        "s3:GetAccessGrantsInstanceForPrefix"
      ],
      "Resource": "*"
    }
  ]
}
```

该角色的信任策略允许 InstanceProfile 角色让其代入角色。

```
{
    "Sid": "AssumeRole",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::12345678912:role/EMR_EC2_DefaultRole"
    },
    "Action": [
        "sts:AssumeRole",
        "sts:SetContext"
    ]
}
```

如果该角色没有受信任的凭证并访问受 Lake Formation 保护的表，则 Amazon EMR 会自动将代入角色的 `principalId` 设置为 `userID-untrusted`。以下是显示 CloudTrail 的事件片段，该片段显示. `principalId` 

```
{
    "eventVersion": "1.09",
    "userIdentity": {
        "type": "AssumedRole",
        "principalId": "ABCDEFGH1JKLMNO2PQR3TU:5000-untrusted",
        "arn": "arn:aws:sts::123456789012:assumed-role/EMR_TIP/5000-untrusted",
        "accountId": "123456789012",
        "accessKeyId": "ABCDEFGH1IJKLMNOPQ7R3"
        ...
```

## 为未与 IAM Identity Center 集成的服务添加权限
<a name="emr-idc-start-securityconfig-nonidc"></a>

Amazon 使用可信身份传播的 IAM 策略的证书，用于对未与 IAM Identity Center 集成的服务进行的任何调用。例如，这包括 Amazon Key Management Service。您的角色还应为您尝试访问示例 Amazon Key Management Service的任何此类服务定义任何 IAM 权限。目前支持的 IAM Identity Center 集成服务包括 Amazon Lake Formation 和 Amazon S3 访问权限管控。

要了解有关可信身份传播的更多信息，请参阅[跨应用程序的可信身份传播](https://docs.amazonaws.cn/singlesignon/latest/userguide/trustedidentitypropagation.html)。

## 创建启用 Identity Center 的安全配置
<a name="emr-idc-start-securityconfig"></a>

要启动 EMR 集群与 IAM Identity Center 的集成，请使用以下示例命令创建启用了 Identity Center 的 Amazon EMR 安全配置。下文对每种配置进行说明。

```
aws emr create-security-configuration --name "IdentityCenterConfiguration-with-lf-accessgrants" --region "us-west-2" --security-configuration '{
    "AuthenticationConfiguration":{
        "IdentityCenterConfiguration":{
            "EnableIdentityCenter":true,
            "IdentityCenterApplicationAssigmentRequired":false,
            "IdentityCenterInstanceARN": "arn:aws:sso:::instance/ssoins-123xxxxxxxxxx789"
        }
    },
    "AuthorizationConfiguration": {
        "LakeFormationConfiguration": {
            "AuthorizedSessionTagValue": "Amazon EMR"
        },
        "IAMConfiguration": {
          "EnableApplicationScopedIAMRole": true,
          "ApplicationScopedIAMRoleConfiguration": {
            "PropagateSourceIdentity": true
          }
        }
    },
    "EncryptionConfiguration": {
        "EnableInTransitEncryption": true,
        "EnableAtRestEncryption": false,
        "InTransitEncryptionConfiguration": {
            "TLSCertificateConfiguration": {
                "CertificateProviderType": "PEM",
                "S3Object": "s3://amzn-s3-demo-bucket/cert/my-certs.zip"
            }
        }
    }
}'
```
+ **`EnableIdentityCenter`**：（必需）启用 Identity Center 集成。
+ **`IdentityCenterInstanceARN`**：（可选）Identity Center 实例 ARN。如果未包含此项，则会在配置步骤中查找现有 IAM Identity Center 实例 ARN。
+ **`IAMRoleForEMRIdentityCenterApplicationARN`**：（必需）从集群购买 Identity Center 令牌的 IAM 角色。
+ **`IdentityCenterApplicationAssignmentRequired `**：（布尔值）管理是否需要分配才能使用 Identity Center 应用程序。该字段是可选的。如果未提供值，则默认值为 `false`。
+ **`AuthorizationConfiguration` / `LakeFormationConfiguration`**：（可选）配置身份验证：
  + **`IAMConfiguration`**：除了您的 TIP 身份之外，还可以使用 EMR 运行时角色功能。如果您启用此配置，则您（或调用方 Amazon 服务）将需要在每次调用 EMR 步骤或 EMR 时指定一个 IAM 运行时角色。`GetClusterSessionCredentials` APIs如果 EMR 集群与 SageMaker Unified Studio 一起使用，则如果还启用了可信身份传播，则必须使用此选项。
  + **`EnableLakeFormation`**：在集群上启用 Lake Formation 授权。

要启用 Identity Center 与 Amazon EMR 的集成，您必须指定 `EncryptionConfiguration` 和 `IntransitEncryptionConfiguration`。

## 创建并启动启用了 Identity Center 的集群
<a name="emr-idc-cluster"></a>

现在，您已经设置了通过 Identity Center 进行身份验证的 IAM 角色，并创建了启用 Identity Center 的 Amazon EMR 安全配置，您可以创建和启动您的身份感知集群。有关使用所需的安全配置启动集群的步骤，请参阅 [指定 Amazon EMR 集群的安全配置](emr-specify-security-configuration.md)。

以下部分介绍了如何使用 Amazon EMR 支持的安全选项配置已启用 Identity Center 的集群：
+ [在启用了 IAM Identity Center 的 EMR 集群上使用 S3 Access Grants](emr-idc-s3ag.md)
+ [为启用了 IAM Identity Center 的 EMR 集群配置 Lake Formation](emr-idc-lf.md)