

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

# 使用 LDAP 配置和启动 EMR 集群
<a name="ldap-setup"></a>

本节介绍如何将 Amazon EMR 配置为与 LDAP 身份验证配合使用。

**Topics**
+ [向 Amazon EMR 实例 AWS Secrets Manager 角色添加权限](ldap-setup-asm.md)
+ [创建用于 LDAP 集成的 Amazon EMR 安全配置](ldap-setup-security.md)
+ [启动通过 LDAP 进行身份验证的 EMR 集群](ldap-setup-launch.md)

# 向 Amazon EMR 实例 AWS Secrets Manager 角色添加权限
<a name="ldap-setup-asm"></a>

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

为定义 EMR 集群与 Amazon S3 数据和其他 AWS 服务交互的权限，您应该定义一个自定义 Amazon EC2 实例配置文件而不是 `EMR_EC2_DefaultRole`，以在启动集群时使用。有关更多信息，请参阅[集群 EC2 实例（EC2 实例配置文件）的服务角色](emr-iam-role-for-ec2.md)和[使用 Amazon EMR 自定义 IAM 角色](emr-iam-roles-custom.md)。

将以下语句添加到默认 EC2 实例配置文件中，以允许 Amazon EMR 标记会话并访问存储 LDAP 证书 AWS Secrets Manager 的。

```
    {
      "Sid": "AllowAssumeOfRolesAndTagging",
      "Effect": "Allow",
      "Action": ["sts:TagSession", "sts:AssumeRole"],
      "Resource": [
        "arn:aws:iam::111122223333:role/LDAP_DATA_ACCESS_ROLE_NAME",
        "arn:aws:iam::111122223333:role/LDAP_USER_ACCESS_ROLE_NAME"
      ]
    },
    {
        "Sid": "AllowSecretsRetrieval",
        "Effect": "Allow",
        "Action": "secretsmanager:GetSecretValue",
        "Resource": [
            "arn:aws:secretsmanager:us-east-1:111122223333:secret:LDAP_SECRET_NAME*",
            "arn:aws:secretsmanager:us-east-1:111122223333:secret:ADMIN_LDAP_SECRET_NAME*"
        ]
    }
```

**注意**  
如果您在设置 Secrets Manager 权限时忘记了密钥名称末尾的通配符 `*` 字符，集群请求将失败。通配符代表密钥版本。  
您还应将 AWS Secrets Manager 策略的范围限制为仅限于您的集群配置实例所需的证书。

# 创建用于 LDAP 集成的 Amazon EMR 安全配置
<a name="ldap-setup-security"></a>

在启动集成了 LDAP 的 EMR 集群之前，请使用 [使用 Amazon EMR 控制台或使用 AWS CLI](emr-create-security-configuration.md) 中的步骤为该集群创建 Amazon EMR 安全配置。在 `AuthenticationConfiguration` 下的 `LDAPConfiguration` 区块中，或在 Amazon EMR 控制台**安全配置**部分中的相应字段中完成以下配置：

**`EnableLDAPAuthentication`**  
控制台选项：**身份验证协议：LDAP**  
要使用 LDAP 集成，请在控制台中创建集群时将此选项设置为 `true` 或选择它作为您的身份验证协议。默认情况下，当您在 Amazon EMR 控制台中创建安全配置时，`EnableLDAPAuthentication` 的值为 `true`。

**`LDAPServerURL`**  
控制台选项：**LDAP 服务器位置**  
LDAP 服务器的位置包括前缀：`ldaps://location_of_server`。

**`BindCertificateARN`**  
控制台选项：**LDAP SSL 证书**  
包含用于签署 LDAP 服务器使用的 SSL 证书的证书的 AWS Secrets Manager ARN。如果您的 LDAP 服务器由公共证书颁发机构 (CA) 签名，则可以为 AWS Secrets Manager ARN 提供一个空白文件。有关如何在 Secrets Manager 中存储证书的更多信息，请参阅 [将 TLS 证书存储在 AWS Secrets Manager](emr-ranger-tls-certificates.md)。

**`BindCredentialsARN`**  
控制台选项：**LDAP 服务器绑定凭证**  
包含 LD AWS Secrets Manager AP 管理员用户绑定凭据的 ARN。凭证存储为 JSON 对象。此密钥中只有一个键值对；键值对中的键是用户名，值是密码。例如 `{"uid=admin,cn=People,dc=example,dc=com": "AdminPassword1"}`。除非您为 EMR 集群启用 SSH 登录，否则此字段为可选字段。在许多配置中，Active Directory 实例需要绑定凭证才能允许 SSSD 同步用户。

**`LDAPAccessFilter`**  
控制台选项：**LDAP 访问筛选条件**  
指定 LDAP 服务器中可以进行身份验证的对象子集。例如，如果您只想向 LDAP 服务器中具有 `posixAccount` 对象类的所有用户授予访问权限，请将访问筛选条件定义为 `(objectClass=posixAccount)`。

**`LDAPUserSearchBase`**  
控制台选项：**LDAP 用户搜索库**  
您的用户在 LDAP 服务器中所属的搜索库。例如 `cn=People,dc=example,dc=com`。

**`LDAPGroupSearchBase`**  
控制台选项：**LDAP 组搜索库**  
您的组在 LDAP 服务器中所属的搜索库。例如 `cn=Groups,dc=example,dc=com`。

**`EnableSSHLogin`**  
控制台选项：**SSH 登录**  
指定是否允许使用 LDAP 凭证进行密码身份验证。我们不建议您保持启用此选项。密钥对允许访问 EMR 集群的更安全的路由。此字段是可选的，默认值为 `false`。

**`LDAPServerType`**  
控制台选项：**LDAP 服务器类型**  
指定 Amazon EMR 连接到的 LDAP 服务器的类型。支持的选项有“Active Directory”和“OpenLDAP”。其他 LDAP 服务器类型可能会起作用，但是 Amazon EMR 不正式支持其他服务器类型。有关更多信息，请参阅 [Amazon EMR 的 LDAP 组件](ldap-components.md)。

**`ActiveDirectoryConfigurations`**  
使用 Active Directory 服务器类型的安全配置的必需子块。

**`ADDomain`**  
控制台选项：**Active Directory 域**  
用于创建用户主体名称（UPN）的域名，用于对使用 Active Directory 服务器类型的安全配置进行用户身份验证。

## 使用 LDAP 和 Amazon EMR 进行安全配置的注意事项
<a name="ldap-setup-security-considerations"></a>
+ 要创建与 Amazon EMR LDAP 集成的安全配置，您必须使用传输中加密。有关传输中加密的信息，请参阅 [使用 Amazon EMR 加密静态数据和传输中数据](emr-data-encryption.md)。
+ 您不能在相同的安全配置中定义 Kerberos 配置。Amazon EMR 会自动预置一个专用的 KDC，并管理此 KDC 的管理员密码。用户无法访问此管理员密码。
+ 您不能在相同的安全配置 AWS Lake Formation 中定义 IAM 运行时角色。
+ `LDAPServerURL` 的值中必须包含 `ldaps://` 协议。
+ `LDAPAccessFilter` 不能为空。

## 将 LDAP 与 Amazon EMR 的 Apache Ranger 集成一起使用
<a name="ldap-setup-ranger"></a>

通过 Amazon EMR 的 LDAP 集成，您可以进一步与 Apache Ranger 集成。当您将您的 LDAP 用户拉取到 Ranger 中时，可以将这些用户与 Apache Ranger 策略服务器关联，以便与 Amazon EMR 和其他应用程序集成。为此，请在与 LDAP 集群一起使用的安全配置中的 `AuthorizationConfiguration` 中定义该 `RangerConfiguration` 字段。有关如何设置安全配置的更多信息，请参阅 [创建 EMR 安全配置](emr-ranger-security-config.md)。

将 LDAP 与 Amazon EMR 配合使用时，您无需为 Apache Ranger 提供带有 Amazon EMR 集成的 `KerberosConfiguration`。

# 启动通过 LDAP 进行身份验证的 EMR 集群
<a name="ldap-setup-launch"></a>

使用以下步骤启动带有 LDAP 或 Active Directory 的 EMR 集群。

1. 设置您的环境：
   + 确保您的 EMR 集群上的节点可以与 Amazon S3 和进行通信。 AWS Secrets Manager有关如何修改您的 EC2 实例配置文件角色以与这些服务通信的更多信息，请参阅 [向 Amazon EMR 实例 AWS Secrets Manager 角色添加权限](ldap-setup-asm.md)。
   + 如果您计划在私有子网中运行 EMR 集群，则应使用和 AWS PrivateLink Amazon VPC 终端节点，或者使用网络地址转换 (NAT) 将 VPC 配置为与 S3 和 Secrets Manager 通信。有关更多信息，请参阅《Amazon VPC 入门指南》**中的 [AWS PrivateLink 和 VPC 端点](https://docs.aws.amazon.com/vpc/latest/userguide/endpoint-services-overview.html)和 [NAT 实例](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_NAT_Instance.html)。
   + 确保您的 EMR 集群和 LDAP 服务器之间存在网络连接。您的 EMR 集群必须通过网络访问您的 LDAP 服务器。集群的主节点、核心节点和任务节点与 LDAP 服务器通信以同步用户数据。如果您的 LDAP 服务器在 Amazon EC2 上运行，请更新 EC2 安全组以接受来自 EMR 集群的流量。有关更多信息，请参阅 [向 Amazon EMR 实例 AWS Secrets Manager 角色添加权限](ldap-setup-asm.md)。

1. 创建用于 LDAP 集成的 Amazon EMR 安全配置 有关更多信息，请参阅 [创建用于 LDAP 集成的 Amazon EMR 安全配置](ldap-setup-security.md)。

1. 现在您已完成设置，请按照 [启动 Amazon EMR 集群](emr-gs.md#emr-getting-started-launch-sample-cluster) 中的步骤启动具有以下配置的集群：
   + 选择 Amazon EMR 6.12 或更高版本。我们建议您使用最新的 Amazon EMR 版本。
   + 仅为您的集群指定或选择支持 LDAP 的应用程序。有关在 Amazon EMR 上使用 LDAP 支持的应用程序的列表，请参阅 [适用于 Amazon EMR 的 LDAP 的应用程序支持和注意事项](ldap-considerations.md)。
   + 应用您在上一步中创建的安全配置。