免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4012 | 回复: 8
打印 上一主题 下一主题

[ldap] 如何建立该DIT [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-12 15:46 |只看该作者 |倒序浏览
20可用积分
公司的需求是这样的,有三个ou:部门,员工,商家
部门有好几个,不同的员工属于不同的部门,每个部门都有一个组长。一个员工可以访问一个或者多个商家,部门的组长可以访问其组员所有可以访问的商家。
目前dit的结构我还不知道如何建立比较合适,而且后期会有数据的更新,比方说有新员工进来。

我的想法是这样的:

  1. dc=com
  2.     dc=example
  3.         ou=部门
  4.                 cn=部门1
  5.                 cn=部门2
  6.         ou=员工
  7.                 cn=张三
  8.                 cn=李四
  9.         ou=商家
  10.                 cn=商家1
  11.                 cn=商家2
复制代码


比方说要求,张三能访问商家1,我直接在access里写对应的条目,可以实现,但是如果数据量很大,建立与维护都会很困难,因为要更新access条目。
另外部门的组长可以访问其组员所有可以访问的商家不知道该如何实现。。。。

最佳答案

查看完整内容

dc=com dc=example ou=employee cn=department1 cn=department2 cn=Manager,cn=department1,ou=employee,dc=example,dc=com (title=manager) cn=Manager,cn=department2,ou=employee,dc=example,dc=com (title=manager) cn=employee1,cn=department1,ou=employee,dc=example,dc=com (title=engineer) cn=employee2,cn=de ...

论坛徽章:
0
2 [报告]
发表于 2009-03-12 15:46 |只看该作者
dc=com
    dc=example
       ou=employee
              cn=department1
              cn=department2
                  cn=Manager,cn=department1,ou=employee,dc=example,dc=com (title=manager)
                  cn=Manager,cn=department2,ou=employee,dc=example,dc=com (title=manager)
                  cn=employee1,cn=department1,ou=employee,dc=example,dc=com (title=engineer)
                  cn=employee2,cn=department1,ou=employee,dc=example,dc=com (title=engineer)
                  cn=employee3,cn=department1,ou=employee,dc=example,dc=com (title=engineer)
      ou=customer
              cn=customer1
              cn=customer2

dn: cn=Manager,cn=department1,ou=employee,dc=example,dc=com
cn: Manager
cn: department1
cn: name
uid: name
title: manager

dn: cn=employee1,cn=department1,ou=employee,dc=example,dc=com
cn: employee1
cn: department1
cn: name
uid: name
title: engineer


## department1的Manager可以wirte本部门的所有customer信息
##所有员工都可以write自己的customer记录
##所有用户具有read权限
access to dn.subtree="ou=customer,dc=example,dc=com" filter=(cn=department1)
        by dn="cn=Manager,cn=department1,ou=employee,dc=example,dc=com" write
        by self write
        by users read

## department2的Manager可以wirte本部门的所有customer信息
##所有员工都可以write自己的customer记录
##所有用户具有read权限
access to dn.subtree="ou=customer,dc=example,dc=com" filter=(cn=department2)
        by dn="cn=Manager,cn=department2,ou=employee,dc=example,dc=com" write
        by self write
        by users read

## department3的Manager可以wirte本部门的所有customer信息
##所有员工都可以write自己的customer记录
##所有用户具有read权限
access to dn.subtree="ou=customer,dc=example,dc=com" filter=(cn=department3)
        by dn="cn=Manager,cn=department2,ou=employee,dc=example,dc=com" write
        by self write
        by users read

这样一来,不需要修改ACL除非公司的部门减少或者增加,这种改动应该是非常小的。
当新的员工加入的时候也不需要修改ACL, 因为员工的权限是read或者write自己加入的客户信息.
NOTE: 唯一的要求就是,每个员工自己的客户纪录的OWNER必须是自己。这样(by self write)才能生效

[ 本帖最后由 sky天空之城 于 2009-3-23 14:32 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2009-03-12 15:58 |只看该作者

回复 #1 Dreamhat 的帖子

不知道这样是否可行

  1. dc=com
  2.     dc=example
  3.         ou=部门
  4.                 cn=组长名字1(有group属性,然后把该组下的员工添加进去)
  5.                 cn=组长名字2(有group属性,然后把该组下的员工添加进去)
  6.         ou=员工
  7.                 cn=张三
  8.                 cn=李四
  9.         ou=商家
  10.                 cn=商家1
  11.                 cn=商家2
复制代码


这样就可以使用group.exact参数实现组长访问旗下所有组员可以访问的商家了
如果有1000个商家,就要写1000条access规则了。。。。。

论坛徽章:
0
4 [报告]
发表于 2009-03-12 16:08 |只看该作者
或者就两个ou
然后所有的策略全用access实现。。。

  1. dc=com
  2.     dc=example
  3.         ou=员工
  4.                 cn=张三
  5.                 cn=李四
  6.                 cn=组长1
  7.         ou=商家
  8.                 cn=商家1
  9.                 cn=商家2
复制代码

论坛徽章:
0
5 [报告]
发表于 2009-03-12 18:37 |只看该作者
暂时没用到这么复杂的设计,但是我看到的最复杂的ACL设置,都可以用SET的写法解决。建议你去看看http://www.openldap.org/faq/data/cache/1133.html

论坛徽章:
0
6 [报告]
发表于 2009-03-23 22:55 |只看该作者
直接用数据库不是更方便一些嘛~~
用LDAP实现这功能不是不可以,只是太麻烦了~

论坛徽章:
0
7 [报告]
发表于 2009-03-24 12:54 |只看该作者
其实楼主自己也发现问题了,就是 ACL 的更新。所以还是建议用 SQL 这样的数据库来做更合适一些。

或者在 LDAP 里保存数据,SQL 只保存权限控制相关的内容,这样也许更合适一些,兼有 LDAP 的优势和灵活的权限控制。

论坛徽章:
0
8 [报告]
发表于 2009-03-25 22:49 |只看该作者
谢谢楼上各位
我把分数给打字最多的了,虽然我看不大懂

论坛徽章:
0
9 [报告]
发表于 2009-03-30 19:19 |只看该作者
原帖由 Dreamhat 于 2009-3-25 22:49 发表
谢谢楼上各位
我把分数给打字最多的了,虽然我看不大懂

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP