Как обычно реализуются вложенные группы в LDAP? - PullRequest
14 голосов
/ 05 января 2011

Я прихожу к LDAP как возможному инструменту для управления серверами доступа и исходным кодом на работе, и хотя я смог понять основные понятия, такие как представление пользователей и компьютеров как объектов, которые создают атрибуты и определяют какие атрибуты должны применяться к сущности на основе примененных к ним объектных классов, есть несколько ошибок, которые все еще не имеют смысла для меня, и я надеюсь, что кто-то может помочь объяснить, как они работают.

Как работают вложенные группы?

Я могу понять, что такое ou (организационная единица), и понять, как помещать в них людей и использовать класс groupOfNames для работы в качестве контейнера для участников, например, этот фрагмент LDIF из zytrax

    # create FIRST Level groups branch

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

    # create the itpeople entry under groups

    dn: cn=itpeople,ou=groups,dc=example,dc=com
    objectclass: groupofnames
    cn: itpeople
    description: IT security group
    member: cn=William Smith,ou=people,dc=example,dc=com

    # create the hrpeople entry under groups

    dn: cn=hrpeople,ou=groups,dc=example,dc=com
    objectclass: groupofnames
    cn: hrpeople
    description: Human Resources group
    member: cn=Robert Smith,ou=people,dc=example,dc=com

Как бы я добавил дополнительные уровни вложенности?

То, что я ищу, это что-то вроде этого псевдокода здесь:

ou='Projects' /
description: This top level group has a few people in it that can create new groups, and control who's in them
member: cn=Robert Smith,ou=people,dc=example,dc=com

    -- somethingsomethingAbitrarilyNestedGroup='project-name'
        member: cn=Robert Smith,ou=people,dc=example,dc=com

        -- groupOfNames = 'project-name development'
            member: cn=Robert Smith,ou=people,dc=example,dc=com
            member: cn=Jane Doe,ou=people,dc=example,dc=com
            member: cn=server1$,ou=servers,dc=example,dc=com

        -- groupOfNames = 'project-name staging'
            member: cn=Jane Doe,ou=people,dc=example,dc=com
            member: cn=server2$,ou=servers,dc=example,dc=com

Учитывая эту иерархию, каков наилучший способ предоставления доступа к этой группе сейчас?

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

Как это обычно делается с помощью такого инструмента, как OpenLDAP, позволяющего другим клиентам ldap контролировать членство в группе после того, как они аутентифицируются как пользователь с правильными правами?

Ответы [ 2 ]

15 голосов
/ 27 февраля 2011

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

Вложенные группы мертвыпросто.Если вы используете объектный класс groupOfNames, просто добавьте еще один атрибут member в родительскую группу со значением DN дочерней группы.

Из своего псевдокода:

# Assuming your "groups" OU already exists...
# First create the child groups

dn: cn=project-name development,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: project-name development
member: cn=Robert Smith,ou=people,dc=example,dc=com
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server1$,ou=servers,dc=example,dc=com

dn: cn=project-name staging,ou=groups,dc=example,dc=com
objectclass: groupofnames
cn: project-name development
member: cn=Jane Doe,ou=people,dc=example,dc=com
member: cn=server2$,ou=servers,dc=example,dc=com

# Now create the parent group
dn: 'project-name,ou=groups,dc=example,dc=com'
objectclass: groupofnames
member: cn=Robert Smith,ou=people,dc=example,dc=com
member: cn=project-name staging,ou=groups,dc=example,dc=com
member: cn=project-name development,ou=groups,dc=example,dc=com

Hiearchy внутри подразделений в действительности состоит только в том, чтобы разделить ваше дерево LDAP на «логические» сегменты в зависимости от структуры вашей организации.Так, например, вы можете оставить все свои группы для управления «Отделом развития» в их собственном подразделении, так что хорошо и понятно, к чему они относятся.Объекты могут ссылаться друг на друга и довольно счастливо вкладываться друг в друга, ссылаясь друг на друга с соответствующими атрибутами (в данном случае member).

6 голосов
/ 22 ноября 2012

Я считаю, что при обращении к пользовательским объектам вы должны использовать uid=, а не cn=

Проблема, с которой я сталкиваюсь при создании групп вложений, заключается в том, что многие приложения, которые могут ссылаться на группу, не знакомы сдля поиска во вложенных группах объектов-членов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...