原文链接:
 
LDAP基本概念(转)
1.LDAP目录树结构
LDAP目录以树状的层次结构来存储数据,非常类似于自顶向下的DNS树或文件系统的目录树。目录由包含有描述性信息的各个条目(或称"记录")组成,LDAP使用一种简单的、基于字符串的方法来表示目录条目。像DNS的主机名那样,LDAP目录记录的标识名(Distinguished Name,简称DN)用来读取某个条目。
LDAP定位于提供全球目录服务,数据按层次结构组织,从一个根开始,向下分支到各个条目。最顶层的是"根"或基本DN;目录往下被进一步细分成组织单元(OU,或称组织单位);在这些OU中包含数据的条目。这种层次结构如图7.1所示。要实现LDAP,预先规划一个可扩展且有效的结构很重要。下面介绍 LDAP目录树的有关概念。
基本DN
它是LDAP目录树的"根"或最顶部,也有人译为基准DN。在安装LDAP服务器时首先需要决定基本DN。可使用以下3种格式来表示基本DN。
以最原始的X.500标准格式表示,如o=mycompany,c=CN。其中o=mycompany表示组织名;c=CN表示组织所在国别。在基本DN中使用国家代码很容易让人产生混淆。
直接用公司的DNS域名作为基本DN,如o=mycompany.com。这种格式很直观,没有改变域名,也是目前最常用的格式。
用DNS域名的不同部分组成基本DN,如dc=mycompany, dc=com。这种格式将DNS域名分成两个部分,但是更灵活,更便于扩展。例如,当mycompany.com和myoffice.com合并之后,不必修改现有结构,可以简单地将dc=com作为基本DN。对于新安装的LDAP服务器,强烈建议使用这种格式。
组织单元
在基本DN(根目录)的下面是容器或组织单元(Organization Unit,简称OU),用于对数据进行分组和分类。OU相当于子目录,属于目录树的"分枝",也可继续划分更低一级的OU。OU应尽可能地保持简单,以保持可扩展性,因为嵌套层次越多,查询效率就越低。
记录项
在LDAP目录结构的OU下面是实际的记录项,也称条目(Entry),相当于目录树中的"树叶",或者相当于数据库表中的记录。目录中的所有记录项都有一个惟一的识别名称,也就是所谓的DN。每一个记录项的DN是由两个部分组成的:RDN和记录在LDAP目录中的位置。RDN是DN中与目录树的结构无关的部分。几乎存储在LDAP目录中的所有数据都有一个惟一名称,这个名称通常存储在cn(Common Name,公用名称)这个属性里。在LDAP中存储的对象都用它们的cn值作为RDN的基础。记录项存储多个属性,每个属性相当于一个数据库表中的字段,都有一种类型,有一个或多个值(表示单值字段和多值字段)。例如,将公司员工信息作为一条记录,这里给出一个完整的DN:
cn=wang, ou=employee, dc=mycompany, dc=com
其中cn=wang是RDN,用于惟一标识或区别记录;后面的ou和dc值指向目录结构中记录的位置。对于员工信息记录,还需定义更为详细的属性(字段),如头衔、电话和地址等。
对象类和模式
像普通的数据库一样,存储数据需要定义表的结构,定义各个字段。对于目录数据来说,也需要定制目录的对象类型。LDAP存储各种类型的数据对象,这些对象可以用属性来表示。LDAP目录用对象类(objectClasses)的概念来定义运行哪一类的对象使用什么属性。在几乎所有的 LDAP服务器中,都要根据需要扩展基本的LDAP目录的功能,创建新的对象类或者扩展现存的对象类。所有对象类都从其父对象类继承。
模式(Schema)是按照相似性进行分组的对象类集合。例如,广为使用的inetOrgPerson模式包含departmentNumber、 employeeType、givenName、homePhone和manager等的对象类。inetOrgPerson模式还继承了其他"父"模式的许多对象类。
2.LDAP复制
LDAP服务器通常支持目录复制(Replication),可以使用"推"(Push)或"拉"(Pull)的方法在LDAP服务器之间复制部分或全部数据。例如,可以将数据"推"到远程办公室,以增加数据的安全性,也可以有选择地(不复制需要隐藏的信息)将子目录树从主LDAP服务器复制到公用 LDAP服务器上。为保持数据同步更新,还可采用实时复制。为安全起见,可在要复制LDAP的服务器之间使用安全验证。
3.LDAP的安全和访问控制
为保证数据访问安全,可使用LDAP的ACL(访问控制列表)来控制对数据读和写的权限。ACL可以根据谁访问数据、访问什么数据、数据存在什么地方等对数据进行访问控制。这些都是由LDAP目录服务器完成的,比用客户端的软件保证数据安全要可靠得多。此外,可以容易地将LDAP与大多数现有的安全层或认证系统(例如SSL、Kerberos和PAM等)集成在一起。