

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

# `DirectoryService` 區段
<a name="DirectoryService-v3"></a>

**注意**  
3.1.1 AWS ParallelCluster 版中`DirectoryService`已新增 的支援。

**（選用）** 支援多個使用者存取之叢集的目錄服務設定。

AWS ParallelCluster 會透過 [System Security Services 協助程式 (SSSD](https://sssd.io/docs/introduction.html)) 支援的輕量型目錄存取通訊協定 (LDAP)，管理支援多個使用者存取叢集的許可。如需詳細資訊，請參閱《 *AWS Directory Service 管理指南*》中的[什麼是 AWS Directory Service？](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/what_is.html)。

我們建議您透過 TLS/SSL 使用 LDAP （簡短的縮寫 LDAPS)，以確保透過加密管道傳輸任何潛在的敏感資訊。

```
DirectoryService:
  DomainName: {{string}}
  DomainAddr: {{string}}
  PasswordSecretArn: {{string}}
  DomainReadOnlyUser: {{string}}
  LdapTlsCaCert: {{string}}
  LdapTlsReqCert: {{string}}
  LdapAccessFilter: {{string}}
  GenerateSshKeysForUsers: {{boolean}}
  AdditionalSssdConfigs: {{dict}}
```

[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

## `DirectoryService` 屬性
<a name="DirectoryService-v3.properties"></a>

**注意**  
如果您打算在沒有網際網路存取的單一子網路 AWS ParallelCluster 中使用 ，請參閱 [AWS ParallelCluster 在沒有網際網路存取的單一子網路中](aws-parallelcluster-in-a-single-public-subnet-no-internet-v3.md) 以取得其他需求。

`DomainName` (**必要**，`String`)  
您用於身分資訊的 Active Directory (AD) 網域。  
`DomainName` 同時接受完整網域名稱 (FQDN) 和 LDAP 辨別名稱 (DN) 格式。  
+ FQDN 範例： `corp.{{example}}.com`
+ LDAP DN 範例： `DC={{corp}},DC={{example}},DC={{com}}`
此屬性對應於稱為 的 sssd-ldap 參數`ldap_search_base`。  
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`DomainAddr` (**必要**，`String`)  
指向做為 LDAP 伺服器的 AD 網域控制器的 URI 或 URIs。URI 對應至稱為 的 SSSD-LDAP 參數`ldap_uri`。此值可以是以逗號分隔的 URIs字串。若要使用 LDAP，您必須將 `ldap://` 新增至每個 URI 的開頭。  
範例值：  

```
ldap://192.0.2.0,ldap://203.0.113.0          # LDAP
ldaps://192.0.2.0,ldaps://203.0.113.0        # LDAPS without support for certificate verification
ldaps://abcdef01234567890.corp.example.com  # LDAPS with support for certificate verification
192.0.2.0,203.0.113.0                        # AWS ParallelCluster uses LDAPS by default
```
如果您使用 LDAPS 進行憑證驗證，URIs必須是主機名稱。  
如果您在沒有憑證驗證或 LDAP 的情況下使用 LDAPS，URIs可以是主機名稱或 IP 地址。  
使用 LDAP over TLS/SSL (LDAPS) 來避免透過未加密的頻道傳輸密碼和其他敏感資訊。如果 AWS ParallelCluster 找不到通訊協定，它會`ldaps://`新增到每個 URI 或主機名稱的開頭。  
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`PasswordSecretArn` (**必要**，`String`)  
包含`DomainReadOnlyUser`純文字密碼之 AWS Secrets Manager 秘密的 Amazon Resource Name (ARN)。秘密的內容對應至稱為 的 SSSD-LDAP 參數`ldap_default_authtok`。  
當您使用 AWS Secrets Manager 主控台建立秘密時，請務必選取「其他秘密類型」、選取純文字，並只在秘密中包含密碼文字。  
如需如何使用 AWS Secrets Manager 建立秘密的詳細資訊，請參閱[建立 AWS Secrets Manager 秘密](https://docs.aws.amazon.com//secretsmanager/latest/userguide/create_secret)
當 LDAP 用戶端請求身分資訊`DomainReadOnlyUser`時，會使用密碼向 AD 網域進行身分驗證。  
如果使用者具有 的許可[https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html](https://docs.aws.amazon.com/secretsmanager/latest/apireference/API_DescribeSecret.html)，`PasswordSecretArn`則會驗證 。如果指定的秘密存在，`PasswordSecretArn`則 有效。如果使用者 IAM 政策不包含 `DescribeSecret`，`PasswordSecretArn`則不會驗證 ，並顯示警告訊息。如需詳細資訊，請參閱[基本 AWS ParallelCluster `pcluster`使用者政策](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-base-user-policy)。  
當秘密的值變更時，*叢集不會*自動更新。若要更新叢集的新秘密值，您必須使用 [`pcluster update-compute-fleet`](pcluster.update-compute-fleet-v3.md)命令停止運算機群，然後從前端節點內執行下列命令。  

```
$ sudo /opt/parallelcluster/scripts/directory_service/update_directory_service_password.sh
```
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`DomainReadOnlyUser` (**必要**，`String`)  
驗證叢集使用者登入時，用於查詢 AD 網域身分資訊的身分。它對應於稱為 的 SSSD-LDAP 參數`ldap_default_bind_dn`。將您的 AD 身分資訊用於此值。  
以節點上特定 LDAP 用戶端所需的格式指定身分：  
+ MicrosoftAD：

  ```
  cn=ReadOnlyUser,ou=Users,ou=CORP,dc={{corp}},dc={{example}},dc={{com}}
  ```
+ SimpleAD：

  ```
  cn=ReadOnlyUser,cn=Users,dc={{corp}},dc={{example}},dc={{com}}
  ```
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`LdapTlsCaCert` (**選用**，`String`)  
憑證套件的絕對路徑，其中包含憑證鏈中為網域控制站發出憑證的每個憑證授權單位的憑證。它對應於稱為 的 SSSD-LDAP 參數`ldap_tls_cacert`。  
憑證套件是由以 PEM 格式串連不同憑證的檔案，也稱為 Windows 中的 DER Base64 格式。它用於驗證充當 LDAP 伺服器的 AD 網域控制器身分。  
AWS ParallelCluster 不負責在節點上初始放置憑證。身為叢集管理員，您可以在建立叢集後手動設定前端節點中的憑證，也可以使用[引導指令碼](custom-bootstrap-actions-v3.md)。或者，您可以使用 Amazon Machine Image (AMI)，其中包含在前端節點上設定的憑證。  
[Simple AD](https://docs.aws.amazon.com/directoryservice/latest/admin-guide/directory_simple_ad.html) 不提供 LDAPS 支援。若要了解如何將 Simple AD 目錄與 整合 AWS ParallelCluster，請參閱 *AWS 安全部落格*中的[如何設定 Simple AD 的 LDAPS 端點](https://aws.amazon.com/blogs/security/how-to-configure-ldaps-endpoint-for-simple-ad/)。  
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`LdapTlsReqCert` (**選用**，`String`)  
指定要在 TLS 工作階段中對伺服器憑證執行哪些檢查。它對應於稱為 的 SSSD-LDAP 參數`ldap_tls_reqcert`。  
有效值：`never`、`allow`、`try`、`demand` 和 `hard`。  
`never`即使發現憑證有問題， `allow`、 和 也會`try`啟用連線以繼續。  
`demand` 如果找不到憑證問題， 和 會`hard`啟用通訊以繼續。  
如果叢集管理員使用不需要憑證驗證才能成功的值，則會將警告訊息傳回給管理員。基於安全考量，建議您不要停用憑證驗證。  
預設值為 `hard`。  
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`LdapAccessFilter` (**選用**，`String`)  
指定篩選條件，以限制對使用者子集的目錄存取。此屬性對應至稱為 的 SSSD-LDAP 參數`ldap_access_filter`。您可以使用它來將查詢限制為支援大量使用者的 AD。  
此篩選條件可封鎖使用者存取叢集。不過，這不會影響封鎖使用者的可探索性。  
如果設定此屬性，則 SSSD 參數`access_provider`會由 AWS ParallelCluster `ldap`內部設定為 ，且不得由 / [`DirectoryService`](#DirectoryService-v3) [`AdditionalSssdConfigs`](#yaml-DirectoryService-AdditionalSssdConfigs)設定修改。  
如果省略此屬性，且未在 [`DirectoryService`](#DirectoryService-v3) / 中指定自訂使用者存取權[`AdditionalSssdConfigs`](#yaml-DirectoryService-AdditionalSssdConfigs)，則目錄中的所有使用者都可以存取叢集。  
範例：  

```
"!(cn={{SomeUser*}})"  # denies access to every user with an alias that starts with "SomeUser"
"(cn={{SomeUser*}})"   # allows access to every user with alias that starts with "SomeUser"
"memberOf=cn={{TeamOne}},ou=Users,ou=CORP,dc={{corp}},dc={{example}},dc={{com}}" # allows access only to users in group "TeamOne".
```
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`GenerateSshKeysForUsers` (**選用**，`Boolean`)  
定義 是否在前端節點的初始身分驗證之後，立即為叢集使用者 AWS ParallelCluster 產生 SSH 金鑰。  
如果設為 `true`，如果 SSH 金鑰不存在`{{USER_HOME_DIRECTORY}}/.ssh/id_rsa`，則在前端節點上進行第一次身分驗證後，每個使用者都會產生 SSH 金鑰並儲存到 。  

對於尚未在前端節點上進行身分驗證的使用者，在下列情況下可能會發生第一次身分驗證：
+ 使用者第一次使用自己的密碼登入前端節點。
+ 在前端節點中，sudoer 第一次切換到使用者： `su {{USERNAME}}`
+ 在前端節點中，sudoer 第一次以使用者身分執行命令： `su -u {{USERNAME COMMAND}}`
使用者可以使用 SSH 金鑰來後續登入叢集前端節點和運算節點。使用 時 AWS ParallelCluster，設計會停用叢集運算節點的密碼登入。如果使用者尚未登入前端節點，則不會產生 SSH 金鑰，而且使用者將無法登入運算節點。  
預設值為 `true`。  
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)

`AdditionalSssdConfigs` (**選用**，`Dict`)  
索引鍵/值對的字典，其中包含要寫入叢集執行個體上 SSSD 組態檔案的 SSSD 參數和值。如需 SSSD 組態檔案的完整說明，請參閱 `SSSD`和相關組態檔案的執行個體手冊頁面。  
SSSD 參數和值必須與 SSSD AWS ParallelCluster組態相容，如下列清單所述。  
+ `id_provider` 由 `ldap`內部設定為 AWS ParallelCluster ，且不得修改。
+ `access_provider` 當指定 / AWS ParallelCluster 時， [`LdapAccessFilter`](#yaml-DirectoryService-LdapAccessFilter) 會在`ldap`內部設定為 [`DirectoryService`](#DirectoryService-v3) ，且不得修改此設定。

  如果[`LdapAccessFilter`](#yaml-DirectoryService-LdapAccessFilter)省略 [`DirectoryService`](#DirectoryService-v3) /，也會省略其`access_provider`規格。例如，如果您在 `simple`中`access_provider`將 設定為 [`AdditionalSssdConfigs`](#yaml-DirectoryService-AdditionalSssdConfigs)，則[`LdapAccessFilter`](#yaml-DirectoryService-LdapAccessFilter)不得指定 [`DirectoryService`](#DirectoryService-v3) /。
下列組態程式碼片段是 有效組態的範例`AdditionalSssdConfigs`。  
此範例會啟用 SSSD 日誌的偵錯層級、將搜尋基礎限制為特定組織單位，以及停用登入資料快取。  

```
DirectoryService:
  ...
  AdditionalSssdConfigs:
    debug_level: "0xFFF0"
    ldap_search_base: OU=Users,OU=CORP,DC=corp,DC=example,DC=com
    cache_credentials: False
```
此範例指定 SSSD [https://www.mankier.com/5/sssd-simple](https://www.mankier.com/5/sssd-simple) 的組態`access_provider`。來自 的使用者`EngineeringTeam`可以存取 目錄。在此情況下[`LdapAccessFilter`](#yaml-DirectoryService-LdapAccessFilter)，不得設定 [`DirectoryService`](#DirectoryService-v3) /。  

```
DirectoryService:
  ...
  AdditionalSssdConfigs:
    access_provider: simple
    simple_allow_groups: EngineeringTeam
```
[更新政策：必須停止運算機群，才能變更此設定以進行更新。](using-pcluster-update-cluster-v3.md#update-policy-compute-fleet-v3)