Конфигурирование динамических групп

Группы — быстрый путь предоставления пользователям прав доступа к определённым возможностям или функциональности в каталогах LDAP. Для этих целей в директиве access to (атрибуте olcAccess в cn=config) есть специфичный для групп вариант условия <who>. Реальные права, которые будут предоставлены группе, также определяются в директиве access to (атрибуте olcAccess в cn=config). Группы могут настраиваться статически с использованием объектного класса groupOfNames. Каждый член такой группы должен быть определён индивидуально, а затем должна осуществляться его поддержка при изменении статуса его членства в группе. В LDAP есть функция динамических групп, когда группа формируется динамически на основании результатов поискового запроса LDAP. Такие группы могут быть чрезвычайно эффективны, когда в группе очень много членов, либо они постоянно изменяются. Функция динамических групп, как насущная потребность, реализована многими производителями служб каталогов, однако до сих пор не стандартизована (нет соответствующего RFC).

Обычно динамические группы используют объектный класс groupOfURLs.

Наверх

Пример:

Приведённые ниже фрагменты LDIF демонстрируют построение группы itpeople, которой будут предоставлены привилегии на доступ и изменение паролей или параметров конфигурации в записях пользователей. Члены группы будут заполняться автоматически путём поискового запроса, основанного на URL. В данной конфигурации создаётся отдельная ветка groups, в которой будет располагаться группа itpeople. Такая организация каталога показана на диаграмме:

DIT с добавленной веткой groups

В OpenLDAP динамические группы реализованы с помощью наложения dynlist (директива overlay dynlist). Описание этого наложения и формат параметров смотрите здесь. Настройка директив данного наложения показана в следующем фрагменте slapd.conf:

# фрагмент slapd.conf по настройке dynlist
...
# требуется подключение набора схемы dyngroup
include /etc/openldap/schema/dyngroup.schema
...
# пример загрузки модуля для наложения dynlist
# при использовании неабсолютного формата пути
# к модулю требуется директива modulepath
modulepath /usr/libexec/openldap
loadmodule dynlist.la

# абсолютный формат пути
# не требуется директива modulepath
loadmodule /usr/libexec/openldap/dynlist.la
...
database bdb
...
# При использовании после директивы database область
# применения ограничивается данным разделом database.
# Может также определяться до директив database -
# область применения будет глобальной
overlay dynlist
dynlist-attrset groupOfURLs memberURL
...

В этом определении указано, что если при выполнении поискового запроса сервер встречает запись с объектным классом groupOfURLs, он будет выполнять ещё один поисковый запрос по URL, указанному в атрибуте memberURL этой записи, и результат этого поискового запроса в виде множества атрибутов будет возвращён в эту же запись (полный список параметров наложения dynlist с пояснениями смотрите здесь).

# фрагмент LDIF для создания ветки group в корне DIT

dn: ou=groups,dc=example,dc=com
objectclass:organizationalunit
ou: groups
description: generic groups branch

# создание записи группы itpeople

dn: cn=itpeople,ou=groups,dc=example,dc=com
objectclass: groupOfURLs
cn: itpeople
memberURL: ldap:///ou=people,dc=example,dc=com?cn,sn?one?(ou=it*)

...

В данном случае указанный поисковый LDAP URL создаст поисковый запрос на локальном сервере (это следует из синтаксиса ///) с базой поиска ou=people,dc=example,dc=com только по записям на один уровень ниже (one), возвращающий атрибуты cn и sn любых записей, в которых атрибут ou (organizationalUnitName) начинается с "it", либо содержит только "it" (поиск без учёта регистра символов). Члены данной группы (которые будут возвращены в результате поиска) могут затем использоваться для получения каких-либо привилегий при помощи директив access to (или атрибутов olcAccess в случае cn=config).

Наверх



Проблемы, комментарии, предположения, исправления (включая битые ссылки) или есть что добавить? Пожалуйста, выкроите время в потоке занятой жизни, чтобы написать нам, вебмастеру или в службу поддержки. Оставшийся день Вы проведёте с чувством удовлетворения.

Нашли ошибку в переводе? Сообщите переводчикам!

Copyright © 1994-2017 ZyTrax, Inc. Все права защищены. Последнее изменение страницы: 21 октября 2015 г.
Переведено участниками проекта Pro-LDAP.ru в 2012 г.