Вопрос по макету LDAP
Я очень плохо знаком с LDAP и просто пытаюсь учиться. Я использую openldap на Debian.
Может кто-то уточнить это - или поочередно указать мне на какую-то ссылку, которая прояснит эти основные понятия?
Допустим, у меня есть следующая ситуация, которую я хочу представить в ldap
Я управляю компанией. Компания продает серверы, которые установлены на сайтах клиентов. Компания продает некоторые серверы напрямую, а некоторые через посредников. Компания имеет инструмент централизованного администрирования, который может управлять всеми клиентскими серверами. Я хочу иметь разные права доступа, когда кто-то входит в систему на сервере.
Есть 3 уровня разрешений P1, P2 и P3.
Есть логины для сотрудников компании, реселлеров, а также для клиентов.
Доступ каждого сотрудника будет определяться тем, чей сотрудник он - мои сотрудники будут иметь доступ ко всем серверам - сотрудники реселлера будут иметь доступ только к тем серверам, которые были проданы реселлером. - Сотрудники Заказчика будут иметь доступ только к тем серверам, которые принадлежат Заказчику.
Даже среди всех этих сотрудников уровень доступа, который они имеют, будет зависеть от того, имеют ли они разрешения P1, P2 или P3.
т.е. мой сотрудник с доступом P3 может выполнять все операции для всех серверов. Мой сотрудник с доступом P1 может выполнять ограниченные операции на всех серверах. Сотрудник посредника с доступом P1 может выполнять ограниченные операции на всех серверах на всех серверах, которые были проданы через этого посредника, и так далее, и так далее.
Это то, что я начинаю с dn: dc = mycompany, dc = com объектный класс: организация объектный класс: dcObject o: mycompany.net dc: mycompany
# Perms #
dn: ou=perms, dc=mycompany,dc=com
objectclass: organizationalUnit
dn: cn=p1, ou=perms, dc=mycompany,dc=com
objectclass: organizationalRole
cn: p1
dn: cn=p2, ou=perms,dc=mycompany,dc=com
objectclass: organizationalRole
cn: p2
# Reseller #
dn: ou=resellers, dc=mycompany,dc=com
objectclass: organizationalUnit
dn: cn=r1, ou=resellers, dc=mycompany,dc=com
objectclass: organizationalUnit
member: uid=xyz, ou=unames, dc=mycompany,dc=com
dn: cn=r2, ou=resellers, dc=mycompany,dc=com
objectclass: organizationalUnit
member: uid=abc, ou=unames, dc=mycompany,dc=com
# Customers #
dn: ou=customers, dc=mycompany,dc=com
objectclass: organizationalUnit
dn: cn=c1, ou=customers, dc=mycompany,dc=com
objectclass: organizationalUnit
member: uid=mno, ou=logins, dc=mycompany,dc=com
member: uid=pqr, ou=logins, dc=mycompany,dc=com
dn: cn=c2, ou=customers, dc=mycompany,dc=com
objectclass: organizationalUnit
member: uid=mno2, ou=logins, dc=mycompany,dc=com
// unames
dn: ou=unames, dc=mycompany,dc=com
objectclass: organizationalUnit
ou: logins
dn: uid=abc, ou=unames, dc=mycompany,dc=com
objectclass: inetOrgPerson
cn: a
sn: bc
employeeType: cn=p2, ou=roles,dc=mycompany,dc=com
dn: uid=pqr, ou=logins, dc=mycompany,dc=com
objectclass: inetOrgPerson
cn: p
sn: qr
employeeType: cn=p1, ou=roles, dc=mycompany,dc=com
Не уверен, что это правильно. Но даже если это правильно, я запутываюсь за этим
Как у меня есть серверы? Допустим, я создаю ou = серверы, dc = mycompany, dc = com. Затем у меня есть одна запись для каждого сервера cn=srv1, ou= Servers, dc = mycompany, dc = com и т. Д.
Как узнать, какой сервер принадлежит какому клиенту. Я добавляю участника: внутри клиента? В этом случае у клиента будет несколько участников, которые являются сотрудниками, а некоторые участники будут серверами. Это нормально?
Или есть лучший способ сделать это?
Как я представляю прямых клиентов?
Должен ли я создать посредника под названием "прямые" и "привлечь прямых клиентов", а затем использовать логику кода, чтобы рассматривать его как особого клиента?
1 ответ
Вы можете хотеть дерево что-то вроде:
- com - mycompany - (материал) - реселлер N - (вещи) - companyR - (прочее - компания N - (вещи)
Материал будет состоять из деревьев серверов, пользователей и всего, что вы отслеживаете.
Вам нужно будет настроить ACL для работы на основе зарегистрированного DC пользователя. Дайте им доступ к вещам в их DC и ниже.
Это даст вам три уровня DC, расположенных следующим образом:
dc=mycomppany,dc=com
dc=resellerN,dc=mycomppany,dc=com
dc=companyM,dc=resellerN,dc=mycomppany,dc=com
dc=companyN,dc=mycomppany,dc=com
Вам нужно будет создать и протестировать соответствующие ACL регулярных выражений для дополнительных уровней. (Я хотел бы, чтобы ACL для вашей организации работал первым и работал оттуда. Я считаю, что документация Zytrax очень помогает.