Я новичок в LDAP и просто пытаюсь научиться. Я использую openldap на debian.
Может ли кто-нибудь прояснить это - или, альтернативно, указать мне какую-то ссылку, которая проясняет эти основные концепции?
Скажем, у меня есть следующая ситуация, которую я хочу представить в ldap
Я управляю компанией. Компания продает серверы, которые устанавливаются на сайтах клиентов. Компания продает некоторые серверы напрямую, а некоторые через торговых посредников. Компания имеет инструмент централизованного администрирования, который может управлять всеми серверами клиентов. Я хочу иметь разные права доступа, когда кто-то входит на сервер.
Есть 3 уровня разрешений P1, P2 и P3.
есть логины для сотрудников компании, реселлеров, а также для сотрудников клиентов.
Доступ каждого сотрудника будет определяться тем, чей он сотрудник - Мои сотрудники будут иметь доступ ко всем серверам - Сотрудники торгового посредника будут иметь доступ только к серверам, которые были проданы торговым посредником. - Сотрудники Заказчика будут иметь доступ только к серверам, принадлежащим Заказчику.
Даже среди всех этих сотрудников уровень доступа будет зависеть от того, есть ли у них разрешения P1, P2 или P3.
т.е. мой сотрудник с доступом P3 может выполнять все операции на всех серверах. Мой сотрудник с доступом P1 может выполнять ограниченные операции на всех серверах Сотрудник торгового посредника с доступом P1 может выполнять ограниченные операции на всех серверах на всех серверах, которые были проданы через этого посредника и так далее, и так далее.
Это то, что я начинаю с dn: dc = mycompany, dc = com objectclass: organization objectclass: 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 = servers, dc = mycompany, dc = com Затем у меня есть одна запись для каждого сервера cn = srv1, ou = servers, dc = mycompany, dc = com и т. Д.
Как узнать, какой сервер принадлежит какому клиенту. Могу ли я добавить участника: внутри клиента? В этом случае у клиента будут некоторые участники, которые являются сотрудниками, и некоторые участники, которые являются серверами. Это нормально?
Или есть способ лучше?
Как я представляю прямых клиентов?
Должен ли я создать торгового посредника под названием direct и поместить в него прямых клиентов, а затем использовать логику кода, чтобы рассматривать его как специального клиента?
Вам может понадобиться дерево, например:
- com - mycompany - (stuff) - resellerN - (stuff) - companyR - (stuff - companyN - (stuff)
Материал будет состоять из деревьев серверов, пользователей и всего, что вы отслеживаете.
Вам нужно будет настроить ACL для работы на основе контроллера домена авторизованного пользователя. Дайте им доступ к вещам в их 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 очень помогает.