SLAPO-DYNLIST(5)

НАЗВАНИЕ

slapo-dynlist - наложение динамических списков для slapd

ОБЗОР

/usr/local/etc/openldap/slapd.conf

ОПИСАНИЕ

Наложение slapd(8) dynlist позволяет наполнять содержимым динамические группы и другие объекты. Каждый раз при возвращении записи с определённым объектным классом, значения заданного атрибута, представляющие собой LDAP URI, раскрываются путём выполнения поискового запроса LDAP, и перечисленные в URI атрибуты найденных записей добавляются в оригинальную запись. (Объектный класс и атрибут с LDAP URI определяются в конфигурации наложения). При выполнении поиска не позволяются рекурсии во избежание потенциальных бесконечных зацикливаний.

Поскольку результирующая запись строится динамически, в своём конечном виде (со всеми собранными атрибутами) она существует только после построения, перед возвратом её клиенту. Как следствие, динамически добавленные атрибуты не участвуют в фазе оценки поискового фильтра при обработке поискового запроса. Другими словами, фильтрация по динамически добавленным атрибутам всегда завершается неудачей.

Полученная в результате подстановки запись должна соответствовать модели данных LDAP, поэтому соблюдаются ограничения модели данных. К примеру, если в списке атрибутов перечислен атрибут, у которого разрешено только одно значение (SINGLE-VALUE), в итоговой записи будет присутствовать только первое из полученных в результате поиска значений. При использовании элемента управления manageDSAit (RFC 3296) описанных выше действий не происходит. В этом случае возвращается содержимое самой записи динамической группы, то есть URL не раскрываются, а сами возвращаются в ответ на запрос.

КОНФИГУРАЦИЯ

Специфичные для наложения dynlist директивы конфигурации должны иметь префикс dynlist-, во избежание потенциальных конфликтов с директивами базы данных, к которой применяется это наложение, или с другими наложениями, применяемыми к той же базе данных.

overlay dynlist

Эта директива добавляет наложение dynlist к текущей базе данных или, при указании до определения какой-либо базы данных, к базе данных frontend; подробнее смотрите в slapd.conf(5).

Следующая директива конфигурации slapd.conf определяется для наложения dynlist. Она может указываться несколько раз после директивы overlay.

dynlist-attrset <group-oc> [<URI>] <URL-ad> [[<mapped-ad>:]<member-ad> ...]

Значение group-oc представляет собой имя объектного класса (objectClass). При нахождении записи с этим объектным классом запускается процесс динамического наполнения этой записи данными.

Опциональный URI ограничивает область действия директивы только теми записями, которые попадают в диапазон, задаваемый частями DN, scope и filter этого URI.

Значение URL-ad представляет собой имя описания атрибута (attributeDescription), содержащего URI, посредством которого наложение будет наполнять запись данными. Если в записи нет ни одного такого атрибута, наполнение выполняться не будет. Если пересечение запрашиваемых в операции Search атрибутов (или атрибутов, присутствующих в утверждениях, предназначенных для выполнения сравнения) и атрибутов, перечисленных в URI, будет пустым, то расширения записи по данному конкретному URI происходить не будет. Указываемый в этом значении тип атрибута должен быть подтипом от labeledURI.

Значение member-ad является опциональным; при его наличии, наложение dynlist переходит в режим составления динамической группы: в указанном атрибуте в качестве значений будут перечислены DN записей, найденных в результате выполнения внутреннего поиска по указанному в атрибуте URL-ad URI. В этом случае часть attrs данного URI должна быть опущена. Сравнения, в утверждениях которых присутствуют значения атрибута member-ad записи с объектным классом group-oc, выполняются так, как если бы DN записей, найденных в результате выполнения поиска по URI, присутствовали бы в записи с объектным классом group-oc как значения атрибута member-ad.

Альтернативный вариант: можно использовать конструкцию mapped-ad:member-ad для отображения значений атрибутов, полученных в результате поиска, в значения других атрибутов. В этом случае DN записей, найденных в результате поиска, не используются для наполнения значений атрибута member-ad, но значения атрибутов member-ad, если те указанны в части attrs URI из атрибута URL-ad, отображаются в значения атрибутов mapped-ad. Можно задавать несколько настроек отображения.

Наложение dynlist может использоваться с любыми механизмами манипуляции данными, но главным образом оно предназначено для использования с механизмами локального хранения данных. В случае, если поиск по URI потребляет много ресурсов и повторяется часто с чётко определёнными шаблонами, следует рассмотреть возможность добавления наложения proxycache после dynlist в стеке наложений.

АВТОРИЗАЦИЯ

По умолчанию поиск по URI и последующее наполнение записи выполняется с использованием идентификационной сущности текущего пользователя LDAP. Эту идентификационную сущность можно переопределить путём указания в атрибуте dgIdentity записи группы DN другого пользователя LDAP. В этом случае при поиске по URI и наполнении объекта будет использоваться идентификационная сущность пользователя, указанного в dgIdentity. Если в качестве значения dgIdentity задана строка нулевой длины, наполнение записи будет выполняться анонимно. Обратите внимание, что атрибут dgIdentity определён в наборе схемы данных dyngroup, который должен быть загружен перед тем, как использовать возможность авторизации с dgIdentity. Если в записи группы также присутствует атрибут dgAuthz, его значение используется для определения того, какие идентификационные сущности авторизованы использовать для наполнения этой группы идентификационную сущность, указанную в атрибуте dgIdentity. Значения в атрибуте dgAuthz должны соответствовать экспериментальному синтаксису OpenLDAP authz.

ПРИМЕРЫ

В этом примере все адреса электронной почты, присутствующие в базе данных, собираются в одной записи. Прежде всего, убедитесь, что в slapd.conf содержатся следующие директивы:

    include /path/to/dyngroup.schema
    # ...

    database <database>
    # ...

    overlay dynlist
    dynlist-attrset groupOfURLs memberURL

Кроме того, убедитесь, что slapd загружает модуль dynlist.la, если тот скомпилирован в виде загружаемого модуля. После этого добавьте в базу данных такую запись:

    dn: cn=Dynamic List,ou=Groups,dc=example,dc=com
    objectClass: groupOfURLs
    cn: Dynamic List
    memberURL: ldap:///ou=People,dc=example,dc=com?mail?sub?(objectClass=person)

Если в URI не указана часть <attrs>, будут собраны все (неоперационные) атрибуты.

В этом примере реализуется возможность создания динамических групп, члены которых собираются в атрибуте member:

    include /path/to/dyngroup.schema
    # ...

    database <database>
    # ...

    overlay dynlist
    dynlist-attrset groupOfURLs memberURL member

Динамическая группа с авторизацией от имени записи, указанной в dgIdentity:

    dn: cn=Dynamic Group,ou=Groups,dc=example,dc=com
    objectClass: groupOfURLs
    objectClass: dgIdentityAux
    cn: Dynamic Group
    memberURL: ldap:///ou=People,dc=example,dc=com??sub?(objectClass=person)
    dgIdentity: cn=Group Proxy,ou=Services,dc=example,dc=com

ФАЙЛЫ

/usr/local/etc/openldap/slapd.conf

конфигурационный файл slapd по умолчанию.

СМОТРИТЕ ТАКЖЕ

slapd.conf(5), slapd-config(5), slapd(8). Наложение slapo-dynlist(5) поддерживает динамическую конфигурацию через back-config.

ПРИЗНАНИЕ ЗАСЛУГ

Этот модуль был написан в 2004 году Pierangelo Masarati для SysNet.

Отображение атрибутов было добавлено Emmanuel Dreyfus в 2008 году.

OpenLDAP 2.4.47 SLAPO-DYNLIST(5) 2018/12/19