CentOS 6.2目录服务之LDAP(一)

LDAP是light weight Directory Access Protocol (轻量级目录访问协议)的缩写,其前身是更为古老的DAP协议。基于X.500标准的,但是很简单,并且可以根据需要定制。与X.500不同,LDAP支持TCP/IP,美国空间,这对访问Internet是必须的。LDAP的核心规范在RFC中都有定义,大体上讲,LDAP协议定义了和后台数据库通信的方法、客户端软件和LDAP协议之间的通信标准,如后图。

QQ交流群:41405569

LDAP Client是指各种需要身份认证的软件,例如Apache、ProFTPD和Samba等。LDAPSever指的是实现LDAP协议的软件,例如OpenLDAP等。DataStorage指的是OpenLDAP的数据存储,如关系型数据库(Mysql)或查询效率更高的嵌入式数据库(BerkeleyDB),甚至是平面文本数据库(一个TXT的文本文件)。可见OpenLDAP软件只是LDAP协议的一种实现形式,并不包括后台数据库存储,但在很多时候管理员经常将LDAPServer和DataStorage放在同一服务器中,这样就产生了常说的LDAP数据库,虽然后台数据库可以多种多样,但LDAP协议还规定了数据的存储方式。LDAP数据库是树状结构,与DNS类似。

webldap架构

在图右中,以这种方式存储数据最大的一个好处就是查询速度块,LDAP数据库专门对读操作进行了优化,OpenLDAP配合Berkeley DB 可使其读操作的效率得到很大提高,LDAP数据库的树状结构的另一个好处是便于分布式的管理。

实现思路

同一身份认证是改变原有的认证策略,使需要认证的软件都通过LDAP进行认证,如下图。在同一身份认证之后,用户的所有信息都存储在LDAP Server中。终端用户在需要使用公司内部服务的时候都需要通过LDAP服务器的认证。每个员工只需记住一个密码,在需要修改用户信息的时候可以通过管理员提供的Web界面直接修改LDAP Server中的信息。

webldap

目前大部分主流软件都对LDAP有很好地支持,但由于各类软件对LDAP的支持程度不同,在做实施的时候也要区别对待。软件对LDAP的支持可以分为两大类:

1、一类是完全支持,也就是在软件的配置文件中加入和LDAP有关的选项就可以完成。这种方式的好处是不需要借助其他的工具或软件,由软件的开发团队直接完成对LDAP的支持。可能的缺陷也在此,由于各个软件开发团队的水平和开发者经验有所差异,虽然同样是支持了LDAP,但稍微复杂一些的高级功能就无法提供,有的时候甚至出现运行错误导致整个软件出现问题。

2、另一类软件由于很多原因并不直接支持LDAP,而是通过PAM做身份认证,由于PAM本身支持LDAP,这样也同样可以实现使用LDAP做身份验证,这种方式对LDAP的支持同样尤其优势,软件开发人员不需要修改代码支持LDAP协议,减少了软件本身产生安全漏洞的可能,缺点是一些不希望使用PAM的系统中这样的软件就无法通过LDAP进行用户认证,俄日全额虽然PAM对LDAP的支持已经很完善,但一些高级、复杂的功能还是无法实现,正是由于这些原因,这类软件为数不多,比较典型的就是VSFTPD和CVS。

使用LDAP做身份认证

为什么需要使用LDAP数据库?用传统的关系型数据库不可以吗?从上述说明中可以看到LDAP服务器就是起到了一个认证Server的作用,从技术本身而言这个认证Server具体使用何种数据库并不重要,如果使用一个关系型数据库也可以达到统一身份认证的目的,但LDAP自身的优势使得很多公司最终选择它,以下是一些选择LDAP的重要原因:

1、LDAP是一个开放的标准协议,不同于SQL数据库,LDAP的客户端是跨平台的,并且对几乎所有的程序语言都有标准的API接口,即使是改变了LDAP数据产品的提供厂商,开发人员也不用担心需要修改程序才能适应新的数据库产品,这个优势是使用SQL语言进行查询的关系型数据库难以达到的。

2、由于LDAP数据库存储是树状结构,整棵树的任何一个分支都可以单独放在一个服务器中进行分布式管理,不仅有利于做服务器的负载均衡,还方便了跨地域的服务器部署,这个优势在查询负载大或企业在不同地域都设有分公司的时候尤为明显。

3、LDAP支持强认证方式,可以达到很高的安全级别,在国际化方面,LDAP使用了UTF-8编码来存储各种语言的字符。

4、更灵活的添加数据类型,LDAP是根据Schema的内容定义各种属性之间的从属关系及匹配模式,例如在关系型数据库中如果要为用户增加一个属性,就要在用户表中增加一个字段,这在拥有庞大数量用户的情况下是十分困难的,需要改变表结构。但LDAP只需要在Schema中加入新的属性,服务器空间,不会由于用户的属性增多而影响查询性能。

5、LDAP数据库是对读操作进行优化的一种数据库,在读写比例大于7比1的情况下,LDAP会体现出极高的性能。这个特征正适合了身份认证的需要。

目前,很多公司都把LDAP和自己的产品、技术结合在一起,增加LDAP在各个领域中的有效性,这一切都来源于LDAP是一个开放的协议,很容易与其他标准协议共存。

LDAP软件的选择

几乎所有大的IT厂商都有自己的商用LDAP产品,每个厂商的LDAP产品都有其特点,现在已经有了许多基于LDAP协议开服出的资源管理系统和工具,如OpenLDAP、NDS(Novell Directory Service)和ADS(Active Directory Service)等。它们已经逐渐的被使用在各个需要目录服务的领域,并且应用的趋势在增强。OpenLDAP是Michjgan大学发布的免费软件,实现了LDAP v2、LDAPv3的功能并且提供源代码,可以在大多数的Unix和Linux系统中安装。OpenLADP与其他的商用软件相比有很多优势,如商用的软件版本更新很慢,对Bug的反映速度比开源软件差许多,OpenLDAP还包含了很多有创造性的新功能,能满足大多数使用者的要求。OpenLDAP是开源软件,近年来国内很多公司开发的LDAP产品都是基于OpenLDAP开发,开发者能够直接利用它所附带的Shell工具开发应用。这些Shell包括了查询(ldapsearch)、修改(ldapmodify)、删除(ldapdelete)、增加(ldapadd)等,也可以调用它提供的API来开发应用。

OpenLDAP的安装和配置

OpenLDAP可以采用多种数据库作为后台,包括Berkeley DB、GDBM、Mysql、Oracle等,这里采用Berkeley DB,由于OpenLDAP需要Berkeley DB来存放数据,所以需要安装Berkeley DB 5.2.36。Berkeley DB是一个高性能,嵌入数据库编程库,它由美国Sleepycat Software 公司开发的一套开放源码的嵌入式数据库的程序库(database library),它为应用程序提供可伸缩的、高性能的、有事务保护功能的数据管理服务,有时也简称DBD。

[root@chenyi ldap]# tar zxf db-5.2.36.tar.gz[root@chenyi dist]# cd db-5.2.36/build_unix/[root@chenyi build_unix]# ../dist/configure –prefix=/software/BerkeleyDB.5.2[root@chenyi build_unix]# make && make install一个人骑行,孤单却内省;一群人骑行,壮观而有力。

CentOS 6.2目录服务之LDAP(一)

相关文章:

你感兴趣的文章:

标签云: