本帖最后由 木二 于 2022-3-24 14:40 编辑
一 LDAP概述简介1.1 目录服务 目录是一个为查询、浏览和搜索而优化的数据库,它以树状结构来组织数据,类似文件目录。
目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚(rollback)等复杂功能,不适于存储修改频繁的数据。 所以目录天生是用来查询的,查询和修改操作比一般是大于10:1,它的数据修改使用简单的锁定机制实现All-or-Nothing,它的目标是快速响应和大容量查询并且提供多目录服务器的信息复制功能。 目录服务是一个特殊的数据库,用来保存描述性的、基于属性的对象详细信息,支持过滤功能。
目录服务是动态的,灵活的,易扩展的,如:人员组织管理,电话簿,地址簿。
LDAP目录服务是由目录数据库和一套访问协议组成的系统。
1.2 LDAP概念 LDAP(Lightweight Directory Access Protocol)是基于X.500标准的轻量目录访问协议,其实是一种目录服务,类似于我们所使用诸如 NIS(Network Information Service)、DNS (Domain Name Service)等网络目录,LDAP数据库是一种特殊的数据库,对查询进行了优化。
目录服务数据库是成树状结构组织数据,类似文件目录一样。
1.3 LDAP/AD/域控 LDAP是一种通讯协议,相当于在x.500标准基础上产生的一个简化版本(从v3版本开始也有自身独有的许多特性),并且是抽象的,而微软的AD(Active Directory)是这种标准的具体实现,而不是LDAP本身。
即AD(Active Directory)是微软对目录服务数据库的实现方式,而LDAP 则是为访问Active Directory 而设计的访问协议。
LDAP也是有client端和server端,server端是用来存放资源,client端用来操作增删改查等操作。
通常说的LDAP是指运行这个数据库的服务器。
在域控中,涉及到用户、权限等管理,因此微软使用了LDAP协议,开发出AD这个具体实现的的应用,相当于利用了AD当做LDAP服务器存放了用户名、权限等信息,从而解决了域控这个具体的问题。
总之:Active Directory = LDAP服务器+LDAP应用(Windows域控)。 即Active Directory是LDAP的一个具体实现(AD实现一个LDAP服务器),然后使用这个LDAP服务器(也就是AD)又实现了另一个具体应用(域控)。
1.4 LDAP特点 LDAP是一个跨平台的、标准的协议,得到了业界广泛的认可;
LDAP服务器可以使用基于“推”或“拉”的技术,用简单的或基于安全证书的安全认证,复制部分或全部数据,既保证了数据的安全性,又提高了数据的访问效率;
LDAP是一个安全的协议,LDAP v3支持SASL(Simple Authentication and Security Layer)、SSL(Secure Socket Layer)和TLS(Transport Layer Security),使用认证来确保事务的安全;LDAP提供了不同层次的访问控制,以限制不同用户的访问权限;
LDAP支持异类数据存储,LDAP存储的数据可以是文本资料、二进制图片等;
大多数的LDAP服务器安装简单,也容易维护和优化。
1.5 LDAP安全性 1.5.1 精细化控制 LDAP具备很强的安全性,很精细化的访问控制。 提供不同层次的访问控制或者ACI,且这些访问可以在服务端控制,比在客户端(软件)保证数据安全,其安全性更高,利用LDAP的ACI,可以完成:
给予用户改变电话号码和家庭地址的权限,但是限制他们对其它数据(如,职务、年龄等等)的权限,分配对其他数据“只读”权限; 给予“HR-groups”组中的所有人权限,以便于能改变用户信息,如:上级领导、工作岗位、员工工号、部门名称等,但是对其它域没有写权限; 禁止任何人查询LDAP服务器上的管理员用户口令,但是可以允许用户改变自己自身的口令; 给予经理访问他们上级的家庭电话的只读权限,但是禁止其他人有这个权限; 给予“host-groups”组中的任何人创建、删除和编辑所有保存在LDAP服务器中的与计算机主机有关的信息。
1.5.2 TLS安全性 分布式LDAP 是以明文的格式通过网络来发送信息的,包括client访问sldap的密码。 TLS(SSL 的后继者,由OpenSSL 包)加密机制来解决这个问题。
1.5.3 端口号
LDAP默认端口如下: 类型 端口/协议 报文 ldap 389/tcp 明文 ldap 389/udp 明文 ldaps 636/tcp ldap over ssl ldaps 636/udp ldap over ssl
二 LDAP术语
2.1 目录树 与LDAP强关联的目录树概念如下: 目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树,树中的每个节点是一个条目。
条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。
对象类:与某个实体类型对应的一组属性,对象类是可以继承的,这样父类的必须属性也会被继承下来。
属性:描述条目的某个方面的信息,一个属性由一个属性类型和一个或多个属性值组成,属性有必须属性和非必须属性。
Entry条目:LDAP中的基本单位,类似数据库中的一条记录。
如下为一个典型的条目: - dn: uid=fsmith, ou=employees, dc=foobar, dc=com #完整DN,包括在目录树中的完整路径
- objectclass: person
- objectclass: organizationalPerson
- objectclass: inetOrgPerson
- objectclass: foobarPerson
- uid: fsmith
- givenname: Fran
- sn: Smith
- cn: Fran Smith
- cn: Frances Smith #CN允许有多个值
- telephonenumber: 510-555-1234
- roomnumber: 122G
- o: Foobar, Inc.
- mailRoutingAddress: fsmith@foobar.com
- mailhost: mail.foobar.com
- userpassword: {crypt}3x1231v76T89N
- uidnumber: 1234
- gidnumber: 1200
- homedirectory: /home/fsmith
- loginshell: /usr/local/bin/bash
复制代码
2.2 属性/属性类型
2.2.1 属性(Attribute) 每个条目都可以有很多属性(Attribute),如对于人常见的属性有:姓名、地址、电话等属性。
每个属性都有对应的(属性)值,属性值可以有单个、多个,如一个人可以有多个电话号码。
提示:属性/值搜索的时候是不区分大小写的。
2.2.2 属性类型(AttributeType) 每个属性都有唯一的属性类型(AttributeType),属性类型约定属性值的数据格式和语法类型(Syntax)。
比如,属性cellPhone的类型为telephoneNumber,它规定了电话号码是由数字组成的,其中允许插入一些分隔符,如连接符、括号、空格等。
基于现实情况,多值属性用ldap组织的信息会比简单的表结构更加理想。
属性类型也约定了属性值是否可以有多少个,多值属性类型也可以使人员信息的组织变得更加灵活并接近现实情况,比如:人员的手机、地址、邮箱等属性都可以有多个值。
多值属性用ldap组织的信息会比简单的表结构更加理想。
类型也规定了属性查询时的匹配规则、排序顺序、大小写敏感等。
2.3 对象类(ObjectClass) 对象类(ObjectClass)是属性的集合,LDAP预想了很多人员组织机构中常见的对象,并将其封装成对象类。
比如人员(person)含有姓(sn)、名(cn)、电话(telephoneNumber)、密码(userPassword)等属性,单位职工(organizationalPerson)是人员(person)的继承类,除了上述属性之外还含有职务(title)、邮政编码(postalCode)、通信地址(postalAddress)等属性。
通过对象类可以方便的定义条目类型。
每个条目可以直接继承多个对象类,这样就继承了各种属性。
如果2个对象类中有相同的属性,则条目继承后只会保留1个属性。
比如公司员工和小区住户两个对象类,则姓名,性别,年龄可能是相同的,因此只保留1个即可,岗位,职级则对于公司员工是独有的。
对象类同时也规定了那些属性是基本信息,必须含有(Must 活Required,必要属性);哪些属性是扩展信息,可以含有(May或Optional,可选属性)。 对象类有三种类型:结构类型(Structural)、抽象类型(Abstract)和辅助类型(Auxiliary)。
结构类型是最基本的类型,它规定了对象尸体的基本属性,每个条目属于且仅属于一个结构型对象类。
抽象类型可以是结构类型或其他抽象类型父类,它共同将对象属性中共性的部分组织在一起,称为其他类的模板,条目不能直接集成抽象型对象类。
辅助类型规定了对象实体的扩展属性。
虽然每个条目只属于一个结构型对象类,但可以同时属于多个辅助型对象类。
2.4 模式(Schema) 对象类(ObjectClass)、属性类型(AttributeType)、语法(Syntax)分别约定了条目、属性、值,他们之间的关系如下图所示: 如上全部组织在一起,构成了模式(Schema),模式中的每一个元素都有唯一的OID编号,如张三性取向为男,这个元素,表示为:1.5.1。
条目数据在导入时通常需要接受模式检查,它确保了目录中所有的条目数据结构都是一致的。
2.5 基本术语 LDAP主要术语如下:
如上术语示例:
深信服公司江西办jf部(技服部)有一个员工xianghongying,则:
dc=sangfor,dc=inc:两层dc , inc是有限公司的简称;
ou=jf:组织单位,这里是部门;
cn=xianghongying:通用名是员工名字,更多的使用的是工号。
将以上信息从小到大进行组合,相当于目录结构从里到外的组合,以逗号进行分割的结果是: dn:cn=xianghongying,ou=jx,ou=jf,dc=sangfor,dc=inc
这一串就是该员工的唯一标识,如果其他部门有同名的员工也不会重复, 所以这就是DN。
cn为xianghongying的对象可以有其特定的属性,如name=xianghongying,age=18。
2.6 其他术语O:Organization,组织名,3-64个字符
2.7 规则限制LDAP的操作(增加、删除、修改和检索)都是以Entry为基本对象; Base DN,LDAP目录最顶部的根,写在最右边。
三 LDAP模型
3.1 LDAP四种模型 在LDAP中信息以树状方式组织,在树状信息中的基本数据单元是条目,而每个条目由属性构成,属性中存储有属性值。
3.3 命名模型 在LDAP中的命名模型,即LDAP中的条目定位方式。
在LDAP中每个条目均有自己的DN。
RDN是条目在父节点下的唯一名称标识,如同文件系统中,带路径的文件名就是DN,文件名就是RDN。
3.4 功能模型 在LDAP中共有四类10种操作:
更新类:如添加条目、删除条目、修改条目、修改条目名;
除了扩展操作,另外9中是LDAP的标准操作;
扩展操作是LDAP中为了增加新的功能,提供的一种标准的扩展框架,逐步成为LDAP标准的扩展操作,有修改密码和StartTLS扩展,在新的RFC标准和草案中正在增加一些新的扩展操作,不同的LDAP厂商也都各自定义了自己的扩展操作。
3.5 安全模型 LDAP中的安全模型主要通过身份认证、安全通道和访问控制来实现。
四 LDAP产品及应用
4.1 LDAP应用 LDAP具有的查询效率高、树状的信息管理模式、分布式的部署框架以及灵活而细腻的访问控制,使LDAP广泛地应用于基础性、关键性信息的管理,如用户信息、网络资源信息等。
LDAP的应用主要涉及几种类型:
科学计算类:DCE(Distributed Computing Envirionment,分布式计算环境)、UDDI(Universal Description,Discovery and Integration,统一描述、发现和集成协议); 网络资源管理类:MAIL系统、DNS系统、网络用户管理、电话号码簿; 电子政务资源管理类:内网组织信息服务、电子政务目录体系、人口基础库、法人基础库。 Linux PAM (ssh, login, cvs. . . ); 各种服务登录(ftpd, php based, perl based, python based. . . );
4.2 LDAP产品 LDAP:轻量级目录访问协议,本身是一个访问协议,对于不同厂家基于此协议开发了不同的产品,当前LDAP数据存储的主流产品: |