Автор Тема: Доступ к данным LDAP  (Прочитано 102968 раз)

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Доступ к данным LDAP
« : 19 Апрель 2013, 17:18:43 »
Всем здравствуйте!

Прошу помощи в решении задачи, я новичок в освоении LDAP, но задача срочная.

Необходимо настроить доступ к данным LDAP так, чтобы у суперпользователя -- на редактирование всех записей, а у пользователей -- просмотр только своих данных и редактирование только пароля!

Заранее благодарен за ответы и советы!
« Последнее редактирование: 20 Апрель 2013, 04:00:17 от egor »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #1 : 20 Апрель 2013, 03:54:25 »
Здравствуйте! Если под суперпользователем подразумевается тот, DN которого определён в конфигурации как rootDN (olcRootDN), то для него не надо определять никаких прав -- он всегда имеет полные права на всё. В этом случае ACL будут выглядеть так:
access to attr=userPassword
        by self write
        by anonymous auth
        by * none

access to *
        by * read

Если у суперпользователя какая-то отдельная запись, тогда ACL будет выглядеть так:
access to attr=userPassword
        by self write
        by dn.base="cn=superuser,dc=mycompany,dc=ru" write
        by anonymous auth
        by * none

access to *
        by dn.base="cn=superuser,dc=mycompany,dc=ru" write
        by * read

Если у Вас динамическая конфигурация то второй случай будет выглядеть так (первый адаптируйте сами):
dn: olcDatabase={1}bdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attr=userPassword
        by self write
        by dn.base="cn=superuser,dc=mycompany,dc=ru" write
        by anonymous auth
        by * none
olcAccess: {1}to *
        by dn.base="cn=superuser,dc=mycompany,dc=ru" write
        by * read

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #2 : 20 Апрель 2013, 16:30:19 »
Егор, спасибо большое! По первому варианту удалось, все получилось! Получается авторизованные пользователи могут редактировать только свой пароль! Остальное на чтение!

А подскажите пожалуйста, как сделать, чтоб они видели только свою учетку, я пользуюсь phpldapadmin. После авторизации, они видят всю БД LDAP, а хочется чтоб только свою учетку!

Или может посоветуете еще более удобный клиет, желательно web-интерфейс.

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #3 : 22 Апрель 2013, 09:34:31 »
Здравствуйте! ACL чтобы можно было видеть только свою запись:
access to attr=userPassword
        by self write
        by anonymous auth
        by * none

access to *
        by self read
        by * search

Насчёт клиентов посмотрите здесь.

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #4 : 25 Апрель 2013, 13:31:31 »
А как реализовать, пользователь имел возможность все свои данные редактировать, а остальных не видел!

Что-то не получилось у меня!

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #5 : 25 Апрель 2013, 14:50:55 »
Очевидно, так:
access to attr=userPassword
        by self write
        by anonymous auth
        by * none

access to *
        by self write
        by * search

Можно даже короче:
access to *
        by self write
        by anonymous auth
        by * search

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #6 : 25 Апрель 2013, 21:08:42 »
Егор, спасибо огромное!

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #7 : 27 Апрель 2013, 02:00:45 »
Егор, разрешите еще раз потревожить!

Вот раз уж я уже разрешил пользователям редактировать пароль, далее тут подумал, а почему бы не попробовать подключить проверку формата измененного пароля, ну например, думаю формат такой: от 6-ти символов, и только большие и маленькие буквы?

Подскажите, пожалуйста, возможно ли такое реализовать? Если да, то как, как-то  включить проверку устанавливаемого пароля по регэкспу?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #8 : 27 Апрель 2013, 04:19:32 »
Здравствуйте! Вам надо к свой базе данных прикрутить наложение ppolicy, тогда можно будет применять к паролям различные ограничения. Почитайте здесь, в конце страницы есть примеры. Не слишком просто, но разобраться можно, мы тут с одним товарищем настраивали историю паролей, можете посмотреть.

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #9 : 27 Апрель 2013, 11:19:35 »
Егор, спасибо! Буду разбираться. Если возникнут вопросы, буду задавать!

Еще раз спасибо Вам за помощь!

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #10 : 29 Апрель 2013, 23:15:58 »
Доброго времени суток!

В общем покопал и как я понял, то для реализации задуманного, чтоб пароль состоял из 6-ти символов и только буквы большие и маленькие, то используются след аттрибуты:
1) pwdMinLength - для определения длины
2) pwdCheckQuality и pwdCheckModule - для выставления нестандартного расширения политик, в моем случае это большие и маленькие буквы.

С первым вроде более менее понятно, а вот со вторым сложнее - не нашел никакого нормального описания.

Может что посоветуете?

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #11 : 30 Апрель 2013, 04:16:13 »
Здравствуйте! В pwdCheckModule должна быть указана библиотека проверки паролей. Из ныне поддерживаемых самая известная -- от проекта LTB, почитайте, там хорошее описание. Библиотеку можно либо скомпилировать из исходников, либо, если у Вас centos (или другая производная redhat) -- скачать готовый rpm-пакет. Исходники и rpm можно получить на этой странице.

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #12 : 30 Апрель 2013, 13:25:47 »
Егор, не подскажешь, сейчас пытаюсь наложить политику, он мне выдает:
  ldapadd -x -W -D cn=config -f policyAdd.ldif
Enter LDAP Password:
adding new entry "olcOverlay=ppolicy,olcDatabase={1}bdb,cn=config"
ldap_add: Invalid syntax (21)
        additional info: objectClass: value #0 invalid per syntax

Наложение политики, взял из Вашего поста.
« Последнее редактирование: 30 Апрель 2013, 13:36:38 от mister87 »

egor

  • Администратор
  • Старожил
  • *****
  • Сообщений: 486
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #13 : 01 Май 2013, 07:15:54 »
Здравствуйте! Скорее всего Вы не загрузили динамический модуль или не добавили набор схемы данных, необходимые для этого наложения. Если у Вас динамическая конфигурация, то посмотрите здесь. Если статическая -- добавьте в начало slapd.conf (до определения баз данных):
include /etc/openldap/schema/ppolicy.schema
moduleload ppolicy.la

Егор

mister87

  • Новичок
  • *
  • Сообщений: 15
    • Просмотр профиля
Re: Доступ к данным LDAP
« Ответ #14 : 03 Май 2013, 02:53:00 »
Егор, доброго времени суток!

Вроде что-то начало получаться, но есть снова проблемы. Что сделал:
1) Проверил схему - применена
2) Подключение модуля ppolicy:
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/openldap
olcModuleLoad: ppolicy.la
3) Установил библиотеку
check_password.so
Сразу же настроил ее
4) Наложение политики:
dn: olcOverlay=ppolicy,olcDatabase={2}bdb,cn=config
objectClass: olcPPolicyConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=PPolicy Default,ou=System,dc=mycompany,dc=ru
5) Политика:
dn: cn=PPolicy Default,ou=System,dc=mycompany,dc=ru
objectClass: applicationProcess
objectClass: pwdPolicy
cn: PPolicy Default
pwdAttribute: 2.5.4.35
pwdInHistory: 3
pwdCheckModule: check_password.so
pwdCheckQuality: 1
При добавлении в базу самой политики вот что:
# ldapadd -x -W -D cn=config -f ppolicyDefault.ldif
Enter LDAP Password:
adding new entry "cn=PPolicy Default,ou=System,dc=mycompany,dc=ru"
ldap_add: Object class violation (65)
        additional info: attribute 'pwdCheckModule' not allowed

В чем может быть причина? Из-за чего он не может найти атрибут pwdCheckModule?