Вопрос по макету 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 очень помогает.

Другие вопросы по тегам