Аутентификация PowerFlex с использованием LDAP не работает, если пользователь является участником пути к другому подразделению в группе
Summary: Пользователю, являющемуся членом группы рассылки, назначенной конфигурации службы LDAP, не удалось войти в систему после включения аутентификации LDAP в кластере ScaleIO.
Symptoms
Сценарий
Настройка служб LDAP для ScaleIO в кластере MDM или шлюзе с одним доменом Active Directory. При настройке пользователей и группы ScaleIO в разных подразделениях в пределах одного домена эта проблема может возникнуть.
Симптомы
Пользователь находится в CN = testuser, OU = Users, OU = ИТ-отдел, DC = swlab, DC = локально
В состав группы входят: CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=локальный
В журнале трассировки MDM или шлюза можно найти следующие предупреждающие сообщения.
Сообщение об ошибке в gateway-trace.log: 2017-06-14 11:49:46,587 [http-nio-443-exec-6] ОШИБКА c.e.s.s.w.s.ScaleIOSecurityUtils - Пользователь-тестuser не был найден в группе CN=Sio_Admin_Role,OU=GlobalGroups,OU=Groups,DC=swlab,DC=local
Воздействие
Некоторые пользователи не могут войти в систему ScaleIO или шлюз с помощью аутентификации LDAP.
Cause
Корневая причина
Основная причина этой проблемы заключается в том, что параметр «--ldap_base_dn», который использовался при добавлении службы LDAP в кластер ScaleIO, имел слишком низкий уровень.
См. конфигурацию ниже для указанного выше примера проблемы:
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
В результате базовое доменное имя для начала поиска размещается слишком низко в схеме куста Active Directory. При запуске с «swlab.local/Groups/GlobalGroups» LDAP не может запрашивать пользователя на более высоком уровне.
В данном случае «testuser» существует в «swlab.local/IT Dept/Users/testuser», поэтому при запросе группы «Sio_Admin_Role» он снова пытается найти пользователя-участника под base_dn.
Пользователь там не существует, и войти в систему не удается.
Resolution
Временное решение
Чтобы решить эту проблему, повторно создайте сервис LDAP в ScaleIO и используйте base_dn более высокого уровня. В приведенном выше примере можно изменить следующее в команде scli «add_ldap_service».
scli --add_ldap_service --ldap_service_uri "ldap://swlab.local" --ldap_base_dn "DC=swlab,DC=local" --ldap_service_name testldap
При выборе base_dn на корневой домен LDAP может запросить у любого подразделения или CN соответствующего пользователя, который входит в группу ролей SIO.