

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定和啟動具有 LDAP 的 EMR 叢集
<a name="ldap-setup"></a>

本章節介紹如何設定 Amazon EMR 以與 LDAP 身分驗證搭配使用。

**Topics**
+ [將 AWS Secrets Manager 許可新增至 Amazon EMR 執行個體角色](ldap-setup-asm.md)
+ [建立適用於 LDAP 整合的 Amazon EMR 安全組態](ldap-setup-security.md)
+ [啟動使用 LDAP 進行身分驗證的 EMR 叢集](ldap-setup-launch.md)

# 將 AWS Secrets Manager 許可新增至 Amazon EMR 執行個體角色
<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 伺服器繫結憑證**  
包含 LDAP 管理員使用者繫結憑證的 AWS Secrets Manager 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 執行個體設定檔角色以與這些服務通訊的詳細資訊，請參閱 [將 AWS Secrets Manager 許可新增至 Amazon EMR 執行個體角色](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 叢集的流量。如需詳細資訊，請參閱[將 AWS Secrets Manager 許可新增至 Amazon EMR 執行個體角色](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)。
   + 套用您在上一步中建立的安全組態。