你的网络在规模和复杂性方面正处于成长期。一路传播每件事物、发展壮大每件事物然后再丢弃每件事物将占用了它一生的时间。当你痛苦的双手抱头,试图弄清楚的时候,你的用户不知道从哪里发现了你的秘密电话号码,他用无穷无尽的问题和要求来纠缠你——这就是我发现它的地方;我并不想记住一打不同的密码;没有工作应该是这样子的。
目录
LDAP能做什么
LDAP不能做什么
到数据库或者不到数据库
根和层
易于升级
ACIs的和ACLs
用户认证
一块卓越的奶酪
预告
几种可能的方案中,考虑两个:1)找到一个新的隐藏地点或者 2) 实现一个LDAP 服务器。尽管找到一个新的隐藏点听起来很理想,他也只是一个我们留给以后的文章的主题。这个系列将会阐释LDAP好在哪里,如何建立LDAP服务器的细节,以及你能用他做什么。
LDAP能做什么
简要地说,LDAP提供了访问、认证和授权的集中管理。他是很容易自定义的并且能够:
·用户和用户组管理集中化
·信息存储集中化
·设置安全和访问控制
·安全委托读取和修改权
·服务于几乎所有平台
·有效地缩放
LDAP不能做什么
·成为一个负载过重的关联或交互数据库
·成为一个文件系统
·在许多范围内跳过高层结构
LDAP协议跨平台、网络意识强、并且基于标准。市场上现在有来自于各个投资商的各种各样的LDAP实现。本系列将主要讨论Linux 上的OpenLDAP 。
到数据库或者不到数据库
现在我们来当一回书生(请戴上你的讨厌胡须和书生用的袖珍保护套)。LDAP——轻型目录访问协议——是一个协议,不是一个数据库。它可访问一种特殊类型的数据库,这种数据库为了快速阅读而最优化。使用LDAP可得到相关的静态信息,如公司目录、用户数据、消费者数据、密码和安全钥匙。OpenLDAP使用了Sleepycat Berkeley DB。说了这么多,我可不是一个老夫子,我只是很满意调用它来运转数据库并且对它所作的工作很满意。
LDAP 不是一个好的选择,尽管有时你需要快速而频繁的修改——例如为了零售后台。它不是一个关联数据库如Oracle、 mySQL 或者 Postgres。实际上,它的结构与关联数据库有着天壤之别。与其将信息存储在行列中,并且设置一组固定的索引和字段,还不如将数据储存在属性类型/属性值对中。这种结构为设计记录提供了巨大的灵活性。例如:一份特殊的用户记录不必重新设计整个数据库就可以添加一种新的类型。任何类型的文本或者二进制数据都可以储存。
根和层
LDAP目录遵循熟悉的Unix文件系统结构——树的顶部有根目录,由根目录分支成许多子目录。典型设计就是一个公司只有一个主要的根目录。然后根据部门、位置、功能,雇员的好坏等等对你来说有用和有意义的任何事物来组织子目录。这不但是组织主目录的一个很好的整理方法,它还允许你使用一种精确的、受约束的方式授予对中心数据池的特殊部分的访问权。
下一步就是采用一种明智的方式分布比特。任何单独的子目录都可复制到其他地方——例如复制到它从属的部门所在的服务器。在任何你喜欢的时间间隔内,对主目录的更新可同步进行,它为用户提供冗余和更快访问,而且使得主服务器上的紧张程度降低。
更新可以根据指示开始进行——或者,如果你需要一个使用术语的理由,那就用"push" 或者 "pull."吧。例如:财政部可先更新他们的目录,然后将更新推进到主服务器上——再次,节省了管理部门许多单调的而且不必要的劳动。它还保存了带宽和系统资源。
易于升级
关于LDAP的分布式特征真正灵活的是你可以从小的开始。你可以采用一种限制性的方式来实现一个LDAP目录,对他进行测试和悬挂,然后在空闲时间内轻而易举地将它放大并迁移更多的功能把它上面。
ACIs的和ACLs
LDAP 访问控制范例(ACIs),共同形成了一个访问控制清单 (ACL),它允许非常细粒度的控制。下面是几个简单例子:
·用户可以修改他们自己的个人信息——例如家庭住址、电话扩充、工作email等等——但是其他人不可以。
·某个特殊用户的所有信息可保存在单独的记录中,但是对单项的访问完全是可以配置的。
·给与经理确切级别的阅读权和对于他们小组的读/写权利。它满足的一个特殊需要就是给与经理充分的访问权,以监督项目文件和报告,但是不给钱。
·允许小组或者小组领导判断哪个人可以得到哪种他们控制下的资源访问权。我绝对不喜欢被次要的琐事如共享文档和项目目录所纠缠,放权给群众好了。
·将密码和用户名以及其他敏感数据置于勤奋的系统管理员的严格控制之下。
用户认证
LDAP支持SASL (简单认证和安全层),它合并了Kerberos、GSSAPI、和 DIGEST-MD。添加LDAP用户认证到一个现有的网络上一点也不可怕。有几个非常好的设备可用来迁移PADL软件(见Resources)提供的、你现有的用户和密码数据。
一块卓越的奶酪
推荐在专注的、卓越的服务器上运行OpenLDAP。在一个更小的、低要求的网络上你可以侥幸不使用共享服务器。在文档化的过程中,你可以看到许多对slapd和slurpd的引用。Slapd是 LDAP daemon程序,而slurpd 则处理复制。