當使用者是群組不同 OU 路徑的成員時,使用 LDAP 的 PowerFlex 驗證將無法運作
Summary: 在 ScaleIO 群集中啟用 LDAP 身份驗證後,作為分配給 LDAP 服務配置的通訊組成員的使用者無法登錄。
Symptoms
案例
在 MDM 叢集或具有單一 Active Directory 網域的閘道中為 ScaleIO 設定 LDAP 服務。同時在同一網域的不同 OU 中設定使用者和 ScaleIO 群組時,可能會發生此問題。
症狀
使用者位於 CN=testuser、OU=Users、OU=IT 部門、DC=swlab、DC=local
該組是:CN=Sio_Admin_Role、OU=GlobalGroups、OU=Groups、DC=swlab、DC=local
我們可以在 MDM 或閘道追蹤記錄中找到下列警告訊息。
gateway-trace.log中的錯誤訊息為:2017-06-14 11:49:46,587 [http-nio-443-exec-6] 錯誤 c.e.s.s.w.s.ScaleIOSecurityUtils - 群組中找不到 User testuser CN=Sio_Admin_Role、OU=GlobalGroups、OU=Groups、DC=swlab、DC=local
影響
部分使用者無法使用 LDAP 認證登入 ScaleIO 系統或閘道。
Cause
根本原因
此問題的根本原因是將 LDAP 服務新增至 ScaleIO 叢集時使用的「--ldap_base_dn」參數層級太低。
有關上述範例問題,請參閱以下組態:
scli --add_ldap_service --ldap_service_uri "ldap://swlab.local" --ldap_base_dn "OU=GlobalGroups,OU=Groups,DC=swlab,DC=local" --ldap_service_name testldap scli --assign_ldap_groups_to_roles --administrator_role_dn "CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local" --monitor_role_dn "CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local" --ldap_service_name testldap
這會使基本 dn 在 AD 配置單元架構中開始搜索太低。當從「swlab.local/Groups/GlobalGroups」開始時,LDAP 無法查詢更高層級的使用者。
因此,在這種情況下,“testuser”存在於“swlab.local/IT Dept/Users/testuser”中,因此當查詢“Sio_Admin_Role”組時,它會嘗試再次在base_dn下查找成員使用者。
該使用者不存在該用戶,並且登錄不成功。
Resolution
因應措施
若要解決此問題,請在 ScaleIO 中重新建立 LDAP 服務,並使用更高層級的base_dn。在上述範例中,可以使用「add_ldap_service」scli 命令變更以下內容。
scli --add_ldap_service --ldap_service_uri "ldap://swlab.local" --ldap_base_dn "DC=swlab,DC=local" --ldap_service_name testldap
通過將base_dn更改為域的根,LDAP 可以查詢作為 SIO 角色組成員的相應使用者的任何 OU 或 CN。