我对 LDAP 还很陌生,正在尝试设计一个满足特定需求的模式。
我有一个支持组织。
有三个级别 P1 - 最低权限 P2 - 中间 P3 - 最高权限。
我已将支持团队分成几个子团队。
TeamA 管理客户 A1、A2、A3 等;TeamB 管理客户 B1、B2、B3 等。
客户 A1 有自己的内部用户。每个客户的内部用户都有 2 个权限级别,即 P1 或 P2。他们的 P1 或 P2 权限仅适用于与他们自己相关的内容。即来自客户 A1 的 P2 对客户 A2 没有任何权限。
TeamA 人员(管理客户 A1、A2 等)拥有 P1 或 P2 权限。TeamA 中拥有 P2 权限的人员将拥有 TeamA 管理的每个客户的 P2 权限。即 TeamA P2 将拥有 A1、A2、A3(所有客户)的 P2 权限。
然后是超级支持团队。这里的人员不特定于客户群体。来自超级支持团队的 P2 将拥有客户 A1、客户 B1 的 P2 权限 - 一切权限。P3 的情况类似。
我已经设计了一个架构
# 根节点 dn:dc=myorg,dc=com 对象类:组织 对象类:dcObject o: myorg.com 直流: myorg # 群组 dn:ou=组,dc=myorg,dc=com 对象类:组织单位 ou:群组 dn:cn=P1,ou=组,dc=myorg,dc=com 对象类:组织角色 中国: P1 描述:最低级别 dn:cn=P2,ou=Groups,dc=myorg,dc=com 对象类:组织角色 中国:P2 描述:更高级别 dn:cn=P3,ou=Groups,dc=myorg,dc=com 对象类:组织角色 中国:P3 描述:最高级别的支持 # 团队 dn:ou=团队,dc=myorg,dc=com 对象类:组织单位 ou:合作伙伴 描述:团队 # 队 A dn:ou=teamB,ou=团队,dc=myorg,dc=com 对象类:组织单位 ou:teamA 描述:A队 # B 队 dn:ou=teamb,ou=团队,dc=myorg,dc=com 对象类:组织单位 ou: teamB 描述:B队 # 顾客 # A 队的客户 A1 dn:ou=custa1,ou=teama,ou=Team dc=myorg,dc=com 对象类:组织单位 ou:custa1 描述:一些组织 # B 队的顾客 B2 dn:ou=custb2,ou=teamb,ou=团队,dc=myorg,dc=com 对象类:组织单位 ou:custb2 描述:其他一些组织
到目前为止这是正确的吗?
我遇到了一些困难 - 我如何将来自不同团队,不同客户,超级支持等的人员放进去,以便在使用 uname/passwd 绑定到 ldap 服务器后很容易找出特定用户拥有哪些权限。
有人可以帮助我或者指出一个具有类似要求的示例模式吗?
答案1
我内心的学究必须指出,您在此处创建的不是架构,而是布局。架构定义对象类型和对象的属性,布局定义对象的位置以及为属性分配的值。
那太偏僻了...
当您添加人员时,您将把他们与您定义的组织角色关联起来,并且人员可以属于其中的多个角色。事实上,他们的对象实际所在的位置并不赋予任何权利;这是将 OR 与他们关联起来的行为。当他们绑定时,他们将获得他们所属的 OR 的权利,无论他们的对象在哪里。
为了回答你关于他们拥有什么权利的问题,他们应该在两个地方列出:
- 在他们的用户对象上
- 在 organizationRole 对象上
您可以形成 LDAP 查询以从用户对象中提取 orMember 属性,或查询具有该用户成员的所有组织角色对象。用户属性的确切名称取决于您实际使用的 LDAP 架构。