Вопрос или проблема
Я пытаюсь настроить сервер Bitnami LDAP (docker) с функциональностью memberOf. Я подключил каталоги схем (с overlay ldif) и ldif для пользователей и групп.
Вот мой overlay:
# Загрузка модулей
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcmoduleload: refint
olcModulePath: /opt/bitnami/openldap/lib/openldap
#overlay memberof
dn: olcOverlay=memberof,olcDatabase={2}mdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
#overlay refint
dn: olcOverlay=refint,olcDatabase={2}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
olcOverlay: refint
olcRefintAttribute: owner
olcRefintAttribute: manager
olcRefintAttribute: member
olcRefintAttribute: memberOf
а здесь пользователи и группы:
dn: dc=maxcrc,dc=com
changetype: add
objectClass: domain
objectClass: top
dc: maxcrc
dn: ou=People,dc=maxcrc,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: People
description: Контейнер для пользовательских записей
dn: ou=Groups,dc=maxcrc,dc=com
changetype: add
objectclass: top
objectclass: organizationalUnit
ou: Groups
description: Контейнер для записей групп
dn: cn=admingroup,ou=Groups,dc=maxcrc,dc=com
changetype: add
objectClass: groupOfNames
cn: admingroup
member: cn=Jack Miller,ou=People,dc=maxcrc,dc=com
dn: cn=Jack Miller,ou=People,dc=maxcrc,dc=com
changetype: add
objectClass: top
objectClass: person
objectClass: organizationalPerson
cn: Jack Miller
sn: miller
userPassword: 1234
Если я пытаюсь добавить “memberOf: cn=admingroup,ou=Groups,dc=maxcrc,dc=com” к пользователю miller, сервер не запускается. Возможно, существует пример ldif, который должен работать?
Я пробовал примеры из Интернета, уже читал вопросы/ответы на StackOverflow, но ничего не помогло. В режиме отладки возникает эта ошибка (32 – неверный DN???):
memberof_value_modify DN=”cn=jack miller,ou=people,dc=maxcrc,dc=com”
add memberOf=”cn=admingroup,ou=Groups,dc=maxcrc,dc=com” failed err=32
Вы не можете добавить MemberOf. Он создается автоматически.
Добавьте пользователя в группу, и у вас будет memberOf.
Для добавления участников вам также нужно подключить каталог /ldifs, но для начала я бы добавил первых пользователей через compose файл.
- LDAP_USERS=user01,user02
- LDAP_PASSWORDS=password1,password2
Ответ или решение
Чтобы настроить сервер Bitnami OpenLDAP с использованием функциональности memberOf и правильно применить конфигурацию LDIF для пользователей и групп, вы должны следовать некоторым ключевым шагам. Давайте подробно разберем, что необходимо сделать, чтобы успешно внедрить данную функциональность на вашем сервере.
Теоретическая часть
Функциональность memberOf в LDAP позволяет автоматически определять, в каких группах состоит пользователь, добавляя атрибут memberOf к записи пользователя. Это упрощает управление, так как вы можете легко определить, к каким группам принадлежит пользователь, без необходимости вручную обновлять информацию о членстве при каждом изменении.
OpenLDAP предоставляет overlay (перекрытие), называемое memberOf, которое автоматически обновляет атрибут memberOf для записи пользователя при изменении его членства в групповом объекте.
Примерная реализация конфигурации
Вы уже правильно начали с загрузки необходимых модулей и настройки overlay в вашем конфигурационном файле. Но для начала, важно убедиться, что структура вложенных директорий правильно организована, и все зависимости успешно загружены.
Пример настройки overlay
# Загружаем модули
dn: cn=module,cn=config
cn: module
objectClass: olcModuleList
olcModuleLoad: memberof
olcmoduleload: refint
olcModulePath: /opt/bitnami/openldap/lib/openldap
# Настройка overlay memberof
dn: olcOverlay=memberof,olcDatabase={2}mdb,cn=config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: member
olcMemberOfMemberOfAD: memberOf
# Настройка overlay refint
dn: olcOverlay=refint,olcDatabase={2}mdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
olcOverlay: refint
olcRefintAttribute: owner
olcRefintAttribute: manager
olcRefintAttribute: member
olcRefintAttribute: memberOf
Практическая реализация и применение конфигурации
-
Убедитесь в корректности DNs: Ошибка, с которой вы столкнулись ("err=32"), может указывать на неверный DN. В вашем примере
cn=Jack Miller,ou=People,dc=maxcrc,dc=com
возможно имеет неправильный формат. Убедитесь, что все DNs написаны правильно и соответствуют существующим записям в вашей базе данных. -
Проверьте наличие необходимых схем и служб: Убедитесь, что все необходимые схемы загружены и включены в конфигурацию с использованием правильного пути и порядка.
-
Попробуйте добавить пользователя к группе вместо явного указания memberOf: Атрибут memberOf не должен устанавливаться вручную; он будет автоматически модифицирован overlay. Поэтому вам необходимо лишь добавить пользователя в группу
cn=admingroup
и проверить, обновляется ли информация:dn: cn=admingroup,ou=Groups,dc=maxcrc,dc=com changetype: modify add: member member: cn=Jack Miller,ou=People,dc=maxcrc,dc=com
-
Проверка работоспособности с помощью тестовых пользователей: Используйте ваши переменные окружения для начальной загрузки пользователей через файл компоновки (например, Docker Compose):
environment: - LDAP_USERS=JackMiller - LDAP_PASSWORDS=СекретныйПароль
-
Перезагрузите сервер после модификаций: После всех изменений и загрузки новых данных перезагрузите OpenLDAP, чтобы применить изменения.
-
Отладка и логирование: Включите подробное логирование для диагностики. Это поможет выявить проблемы в эндпойнтах или DNs, если те существуют. Используйте команды для проверки записанных данных:
ldapsearch -x -LLL -H ldap://localhost -b "dc=maxcrc,dc=com"
Заключение
При правильной настройке и соблюдении всех инструкций функциональность memberOf облегчит управление группами в OpenLDAP, автоматически отражая изменения в членстве пользователей. Если после выполнения всех шагов проблема все еще не решена, рассмотрите возможность пересмотра логов или обращения в поддержку Bitnami за дополнительной помощью. Не забывайте, что правильность конфигурации часто зависит от мелочей: точности именования, порядка загрузки и общих условий среды, где разворачивается сервер.