У нас работает openLDAP, но какой-то уникальный? ситуация, которую я не знаю, как описать. Пытаемся найти лучшее решение, чем то, что у нас есть.
tl; dr: Как разрешить:
без дублирования uid = sysadmin1 в каждом subou fooco и barco:
dc=ourorg
ou=fooco
uid=oracle
ou=barco
uid=oracle
...
ou=us
uid=sysadmin1
uid=sysadmin2
...
Подробнее: Мы предоставляем услуги (системы) для нескольких отдельных дочерних организаций (FooCo и BarCo в этом примере), но у нас есть собственные «глобальные учетные записи». Мы пытаемся запустить один LDAP (см. Ниже). И, например, каждая подорганизация настаивает на том, чтобы их служебная учетная запись Oracle db (например, логин, который запускает процессы db) называлась «oracle» (я проиграл эту битву). Таким образом, очевидно, что мы не можем использовать одно и то же RDN, но мы можем использовать разные DN, помещая uid учетной записи в разные поддеревья (как указано выше). Однако при аутентификации по базовому постоянному току (скажем, RHEL7 и AIX), как бы мы специально «помогли» серверу, принадлежащему FooCo, использовать поддерево FooCo, а BarCo - использовать поддерево Barco (опять же, используя RHEL7 и AIX)? Ответ прост: мы настроили сервер FooCo на использование ou = FooCo, dc = ourdc как BASEDN. Однако у нас есть и другие пользователи (команда системных администраторов), которым ТАКЖЕ необходимо иметь возможность войти в систему (в идеале, используя LDAP). Также нет смысла помещать системных администраторов в КАЖДОЕ поддерево - у них должна быть где-то одна запись.
Мы пробовали aliases / extensibleObject (немного), то есть uid = aliassa1, ou = fooco -> uid = sysadmin1, ou = us, и хотя он отлично работает для ldapsearch, он не будет работать для аутентификации / login / su / и т.п. (но ldap.conf имеет значение "DEREF always").
Итак, есть ли идеи для решений, указанных выше? Творческий способ обойти эту проблему? Спасибо!!
Возможности зависят от конкретной среды, и я не могу комментировать AIX.
Например, более новые версии SSSD на RHEL поддерживает несколько баз поиска
ldap_search_base = ou=fooco,dc=ourorg?subtree?ou=us,dc=ourorg?subtree?
и должно быть возможно сделать что-то подобное с другими библиотеками LDAP (например, установить pam_filter
что соответствует обоим ou=foo
и ou=us
когда используешь pam_ldap
в Linux).
Другой вариант - ограничить вход в систему определенными группами (например, всеми пользователями ou=foo
и ou=us
принадлежать cn=foologin,cn=groups,dc=ourcorp
. Это можно даже автоматизировать с помощью некоторых серверов LDAP (например, с помощью dynlist
оверлей на OpenLDAP).