Автор Тема: Вопросы про настройку БД meta  (Прочитано 1003 раз)

VlgSlv

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Вопросы про настройку БД meta
« : 04 Февраль 2021, 12:56:41 »
Доброго всем!
Возможно вопросы ламерские  - недавно только занялся openldap.
Погуглил + поискал по форуму, ответов на них не нашел (может плохо искал)
Есть локальный ЛДАП и АД настраиваю БД meta следующим образом
# {3}meta, config
dn: olcDatabase={3}meta,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMetaConfig
olcDatabase: {3}meta
olcSuffix: dc=AA,dc=BB,dc=CC
olcDbOnErr: continue

далее uri
#локальный ЛДАП
dn: olcMetaSub={0}uri,olcDatabase={3}meta,cn=config
objectClass: olcMetaTargetConfig
olcMetaSub: uri
olcDbURI:"ldap://192.16.20.20/dc=ldap,dc=AA,dc=BB,dc=CC"
olcDbIDAssertBind: bindmethod=simple binddn="CN=admin,DC=AA,DC=BB,DC=CC" credentials=ping mode=none
olcDbProtocolVersion: 3
olcDbRebindAsUser: FALSE

# Active Directory
dn: olcMetaSub={1}uri,olcDatabase={3}meta,cn=config
objectClass: olcMetaTargetConfig
olcMetaSub: uri
olcDbURI:"ldap://10.14.20.6/ou=uf,dc=AA,dc=BB,dc=CC"
olcDbIDAssertBind: bindmethod=simple binddn="CN=user,OU=Service Accounts,OU=DR,OU=UF,DC=UF,DC=RT,DC=RU" credentials= pong  mode=none
olcDbProtocolVersion: 3
olcDbRebindAsUser: FALSE

Вопросы следующие:
1.  olcMetaSub и {3}meta добавлялись через ldapadd  ... -f add.ldif , но после
ldapsearch -Y EXTERNAL -H ldapi:/// -b cn=config
обноружил , что  olcDbIDAssertBind: представлено ввиде
olcDbIDAssertBind:: YmluZG1ldGh  .... =


2. если я ищу пользователя из локального ЛДАП, что из АД
ldapsearch -vvv  -x -b "dc=AA,dc=BB,dc=CC"  -H "ldap://192.16.20.20"   "(uid=userLDAP)"
ldapsearch -vvv   -x -b "dc=AA,dc=BB,dc=CC"  -H "ldap://192.16.20.20"   "(sAMAccountName=userAD)"
то в ответ получаю
# search result
search: 2
result: 1 Operations error
Но в логах сервера  в первом случае имею найденного пользователя в "локальном ЛДАП", но ошибку при обращении к АД
Feb  4 12:19:03 ubuntuLDAP slapd[30519]: [rw] searchBase: "ou=uf,dc=AA,dc=BB,dc=CC" -> "ou=uf,dc=AA,dc=BB,dc=CC"
Feb  4 12:19:03 ubuntuLDAP slapd[30519]: [rw] searchFilter: "(uid=userLDAP)" -> "(uid=userLDAP)"
Feb  4 12:19:03 ubuntuLDAP slapd[30519]: [rw] searchResult: "cn=Fname Lname ,ou=users,dc=ldap,dc=AA,dc=BB,dc=CC" -> "cn=Fname Lname,ou=users,dc=ldap,dc=AA,dc=BB,dc=CC"
Feb  4 12:19:03 ubuntuLDAP slapd[30519]: [rw] searchAttrDN: "cn=admin,dc=ldap,dc=AA,dc=BB,dc=CC" -> "cn=admin,dc=ldap,dc=AA,dc=BB,dc=CC"
Feb  4 12:19:03 ubuntuLDAP slapd[30519]: conn=1010 op=1 meta_back_search[1] match="" err=1 (Operations error) text="000004DC: LdapErr: DSID-0C090A7D, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v3839".
Feb  4 12:19:03 ubuntuLDAP slapd[30519]: send_ldap_result: err=1 matched="" text=""

А во втором случае
Feb  4 12:22:46 ubuntuLDAP slapd[30519]: [rw] searchBase: "ou=uf,dc=AA,dc=BB,dc=CC" -> "ou=uf,dc=AA,dc=BB,dc=CC"
Feb  4 12:22:46 ubuntuLDAP slapd[30519]: [rw] searchFilter: "(SAMACCOUNTNAME=userAD)" -> "(SAMACCOUNTNAME=userAD)"
Feb  4 12:22:46 ubuntuLDAP slapd[30519]: conn=1011 op=1 meta_back_search[1] match="" err=1 (Operations error) text="000004DC: LdapErr: DSID-0C090A7D, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v3839".
Feb  4 12:22:46 ubuntuLDAP slapd[30519]: send_ldap_result: err=1 matched="" text=""

Выглядит как если не правильно указаны binddn= ... и credentials в  olcDbIDAssertBind для АД, но с теми же параметрами с того же ресурса
ldapsearch -v -x -D "CN=user,OU=Service Accounts,OU=DR,OU=UF,DC=UF,DC=RT,DC=RU" -w "pong" -b "OU=UF,DC=AA,DC=BB,DC=CC" -H "ldap://10.14.20.6"  "(&(sAMAccountType=805306368)(sAMAccountName=userAD))"
имеем нормальный результат
...
# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Подскажите, где собака зарыта?




egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 465
    • Просмотр профиля
Re: Вопросы про настройку БД meta
« Ответ #1 : 04 Февраль 2021, 19:21:35 »
Здравствуйте!

Суть механизма meta в "склейке" двух и более разных каталогов (то есть каталогов с разными суффиксами) под одним общим корнем. То есть мы объединяем каталоги dc=first,dc=com и dc=second,dc=com под общим корнем dc=union,dc=com , тогда к содержимому первого каталога можно обратиться, например, как к dc=f,dc=union,dc=com , а к содержимому второго как к dc=s,dc=union,dc=com . Надеюсь, более-менее понятно объяснил. Метакаталог работает как прокси: получает запрос от клиента, смотрит из какого исходного каталога требуются данные и перенаправляет запрос туда, подставив нужный суффикс; получив ответ от источника данных, он выполняет обратное преобразование суффикса и отправляет полученные и преобразованные данные клиенту.

Вот хороший пример настройки (как раз про AD): http://sdn.tovy.ru/openldap-meta-backend-active-directory/. Или вот ещё: https://gist.github.com/pbruna/7229c3e99dd4bf57b73c.

Обратите внимание на директиву suffixmassage (olcDbRewrite: suffixmassage "dc=f,dc=union,dc=com" "dc=first,dc=com"), именно она отвечает за преобразование суффиксов в описанном выше процессе. Также обратите внимание, что в LDAP-URI в директиве uri (olcDbURI) должен быть указан локальный суффикс как он будет представлен в метакаталоге, а не реальный суффикс каталога. Внимательней посмотрите в примерах и поймёте, что я имею ввиду.

Кроме того, для AD в дополнение к idassert-bind требуется указать директиву idassert-authzFrom (olcDbIDAssertAuthzFrom) с тем же значением, что и в первом примере выше ("dn:*"). Без неё, насколько я помню, AD не возвращает ответа.

Это была попытка ответа на второй вопрос =) . С первым же всё просто: значение атрибута slapd преобразовал в кодировку base64, о чём свидетельствуют два двоеточия после имени атрибута. Это делается во избежание потери данных в сложном значении атрибута.

Егор

VlgSlv

  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Re: Вопросы про настройку БД meta
« Ответ #2 : 05 Февраль 2021, 13:06:00 »
Спасибо огромное!
Ваш совет очень помог!