我对 LDAP 还很陌生,只是想学习。我在 debian 上使用 openldap。
有人可以澄清这一点吗?或者给我指出一些可以澄清这些基本概念的链接?
假设我有以下情况,我想在 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 的经销商并将直接客户放入其中,然后使用代码逻辑将其视为特殊客户?
答案1
你可能想要一棵像这样的树:
- com - mycompany - (资料) - resellerN - (东西) - companyR - (东西 - companyN - (东西)
内容包括服务器树、用户树以及您跟踪的任何其他内容。
您需要根据登录用户的 DC 设置 ACL 以使其工作。授予他们访问其 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 文档有很大帮助。