ユーザーがグループとは別のOUパスのメンバーである場合、LDAPを使用したPowerFlex認証が機能しない
Summary: LDAPサービス構成に割り当てられた配布グループのメンバーであるユーザーが、ScaleIOクラスターでLDAP認証を有効にした後にログインできませんでした。
Symptoms
シナリオ
単一のActive Directoryドメインを持つMDMクラスターまたはゲートウェイのいずれかで、ScaleIO用のLDAPサービスを構成します。また、同じドメイン内の異なるOUでUsersとScaleIOグループを設定していると、この問題が発生する可能性があります。
現象
ユーザーはCN=testuser,OU=Users,OU=IT Dept,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: 46587 [http-nio-443-exec-6] エラー c.e.s.s.w.s.ScaleIOSecurityUtils-ユーザー 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
これにより、AD Hive スキーマで検索を開始するためのベース dn が低すぎます。「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 は任意の OU または CN に対して、SIO 役割グループのメンバーである適切なユーザーを照会できます。