LDAP入门与进阶
概述介绍
- X.500目录服务,它不是为TCP/IP网络设计的,由于现在TCP/IPx协议使用广泛。由于这个原因诞生了LDAP
- LDAP 轻型目录访问协议,是目录服务前端访问协议(主要是以X.500目录为主),不是对目录服务本身制定的协议。
- LDAP和关系数据库是两种不同层次的概念:
- 前者是存贮模式和访问协议,后者是存贮方式(同一层次如网格数据库,对象数据库)
- LDAP比关系数据库抽象层次更高的存贮概念,与查询语言SQL属同一级别。LDAP实现了指定的数据结构的存贮,它包括以下可以用关系数据库实现的结构要求:树状组织、条目认证、类型定义、许可树形记录拷贝
- LDAP最大的优势: 可以在任何计算机平台上,用很容易获得的而且数目不断增加的LDAP的客户端程序访问LDAP目录。而且也很容易定制应用程序为它加上LDAP的支持。
- LDAP服务器可以用
推或拉的方法复制部分或全部数据。复制技术是内置在LDAP服务器中的而且很容易配置 - 允许使用ACL控制对数据读和写的权限。ACL可以根据谁访问数据、访问什么数据、数据存在什么地方以及其它对数据进行访问控制。因为这些都是由LDAP目录服务器完成的,所以不要担心在客户端的应用程序上是否要进行安全检查
- LDAP服务器对读密集型的操作进行了优化。读取速度比优化后的关系型数据库快一个数量级。但是不提供事务的回滚机制。它的数据修改使用简单的锁定机制实现ALL-OR-Nothing。
LDAP的元素介绍
名词介绍
DN
LDAP中的条目定位方式,DN是该条目在整个树中的唯一名称标识
RDN
条目在父节点下的唯一名词;
如同文件系统中,带路径的文件名就是DN,文件名就是RDN
ObjectClass介绍
- objectClass
条目中的记录通过objectclass实现分类,objectClass是一个继承性的类定义,并指定必须具备的属性。如某一条目指定必须符合OranganizationaIUnit,则它必须具备ou类型指定的属性;
通过objectClass分类,分散的条目中的记录就实际上建立了一个索引结构,为告诉的读查询打下了基础。
objectClass也是过滤器的主要查询对象
- schema
数据样式schema是针对不同的应用,由用户指定(设计)类和属性类预定义,条目中的类(objectClass)和属性必须在LDAP服务器启动时载入内存的schema已有定义。
AD中的条目必须符合AD的schema。如果已提供的schema中的定义不够用,用户可以自行定义新的schema。
- objectClass与Attribute关系
objectClass 是一个特殊的属性
它既是实体(entry)的代表,继承上面的属性
其实也是一个属性,可以在实体中定义多个objectClass从而有更多的属性
每一个ObjectClass都是来自于top,top含有must objectClass这样的属性。如果是继承自top objectClass不是must,可有可没有。但是如果定义成top,则必须再定义一个objectClass类型
LDAP中Entry必须属于某一个objectClass
objectClass分为三种:Abstract,Structural,Auxiliary。 要定义一个Entry必须包含一个Structural类型的objectClass,其他两个类型可0个或多个。
Top是一个顶级objectClass,里面定义了一个MUST Attribute objectClass,因此必须有一个其他的Structural objectClass才能定义一个Entry。
子objectClass会继承父objectClass中的全部Attribute
Entry是一个instance,而objectClass就是class
每一个objectClass都定义了一些Attribute,其Attribute仍然可以是objectClass。在这些Attribute中分为两种类型MUST(必须包括的属性)、MAY(可选)。
一个objectClass的Attribute也包括所有继承自父objectClass和自身定义的
LDAP用户指南
常用命令
1 | ldapsearch -x -H ldap://ldap.dtmiller.com:389 -D cn=admin,dc=qingmutec,dc=com -w -b '' -s base |
安全控制:ACL
1 | # cn,sn: self my write, all may read |