阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

LDAP服务器的概念和原理简单介绍

466次阅读
没有评论

共计 4524 个字符,预计需要花费 12 分钟才能阅读完成。

1. 目录服务

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象 Linux/Unix 系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。

目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:

  • 企业员工信息,如姓名、电话、邮箱等;
  • 公用证书和安全密钥;
  • 公司的物理设备信息,如服务器,它的 IP 地址、存放位置、厂商、购买时间等;

LDAP 是轻量目录访问协议 (Lightweight Directory Access Protocol) 的缩写,LDAP 是从 X.500 目录访问协议的基础上发展过来的,目前的版本是 v3.0。与 LDAP 一样提供类似的目录服务软件还有 ApacheDS、Active Directory、Red Hat Directory Service。

2. LDAP 特点

  • LDAP 的结构用树来表示,而不是用表格。正因为这样,就不能用 SQL 语句了
  • LDAP 可以很快地得到查询结果,不过在写方面,就慢得多
  • LDAP 提供了静态数据的快速查询方式
  • Client/server 模型,Server 用于存储数据,Client 提供操作目录信息树的工具
  • 这些工具可以将数据库的内容以文本格式(LDAP 数据交换格式,LDIF)呈现在您的面前
  • LDAP 是一种开放 Internet 标准,LDAP 协议是跨平台的 Interent 协议

3. LDAP 组织数据的方式

LDAP 服务器的概念和原理简单介绍

 

4. 基本概念

在浏览 LDAP 相关文档时经常会遇见一些概念,下面是常见概念的简单解释。

4.1 Entry

条目,也叫记录项,是 LDAP 中最基本的颗粒,就像字典中的词条,或者是数据库中的记录。通常对 LDAP 的添加、删除、更改、检索都是以条目为基本对象的。

dn:每一个条目都有一个唯一的标识名(distinguished Name,DN),如上图中一个 dn:”cn=baby,ou=marketing,ou=people,dc=mydomain,dc=org”。通过 DN 的层次型语法结构,可以方便地表示出条目在 LDAP 树中的位置,通常用于检索。

rdn:一般指 dn 逗号最左边的部分,如 cn=baby。它与 RootDN 不同,RootDN 通常与 RootPW 同时出现,特指管理 LDAP 中信息的最高权限用户。

Base DN:LDAP 目录树的最顶部就是根,也就是所谓的“Base DN”,如”dc=mydomain,dc=org”。

4.2 Attribute

每个条目都可以有很多属性(Attribute),比如常见的人都有姓名、地址、电话等属性。每个属性都有名称及对应的值,属性值可以有单个、多个,比如你有多个邮箱。

属性不是随便定义的,需要符合一定的规则,而这个规则可以通过 schema 制定。比如,如果一个 entry 没有包含在 inetorgperson 这个 schema 中的objectClass: inetOrgPerson,那么就不能为它指定 employeeNumber 属性,因为 employeeNumber 是在 inetOrgPerson 中定义的。

LDAP 为人员组织机构中常见的对象都设计了属性(比如 commonName,surname)。下面有一些常用的别名:

属性别名语法描述值(举例)
commonNamecnDirectory String姓名sean
surnamesnDirectory StringChow
organizationalUnitNameouDirectory String单位(部门)名称IT_SECTION
organization oDirectory String组织(公司)名称example
telephoneNumber Telephone Number电话号码110
objectClass 内置属性organizationalPerson

4.3 ObjectClass

对象类是属性的集合,LDAP 预想了很多人员组织机构中常见的对象,并将其封装成对象类。比如人员(person)含有姓(sn)、名(cn)、电话 (telephoneNumber)、密码(userPassword) 等属性,单位职工 (organizationalPerson) 是人员 (person) 的继承类,除了上述属性之外还含有职务(title)、邮政编码(postalCode)、通信地址 (postalAddress) 等属性。

通过对象类可以方便的定义条目类型。每个条目可以直接继承多个对象类,这样就继承了各种属性。如果 2 个对象类中有相同的属性,则条目继承后只会保留 1 个属性。对象类同时也规定了哪些属性是基本信息,必须含有(Must 活 Required,必要属性):哪些属性是扩展信息,可以含有(May 或 Optional,可选属性)。

对象类有三种类型:结构类型(Structural)、抽象类型 (Abstract) 和辅助类型(Auxiliary)。结构类型是最基本的类型,它规定了对象实体的基本属性,每个条目属于且仅属于一个结构型对象类。抽象类型可以是结构类型或其他抽象类型父类,它将对象属性中共性的部分组织在一起,称为其他类的模板,条目不能直接集成抽象型对象类。辅助类型规定了对象实体的扩展属性。每个条目至少有一个结构性对象类。

对象类本身是可以相互继承的,所以对象类的根类是 top 抽象型对象类。以常用的人员类型为例,他们的继承关系:
LDAP 服务器的概念和原理简单介绍

下面是 inetOrgPerson 对象类的在 schema 中的定义,可以清楚的看到它的父类 SUB 和可选属性 MAY、必要属性 MUST(继承自 organizationalPerson),关于各属性的语法则在 schema 中的 attributetype 定义。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# inetOrgPerson
# The inetOrgPerson represents people who are associated with an
# organization in some way. It is a structural class and is derived
# from the organizationalPerson which is defined in X.521 [X521].
objectclass (2.16.840.1.113730.3.2.2
NAME ‘inetOrgPerson’
DESC ‘RFC2798: Internet Organizational Person’
SUP organizationalPerson
STRUCTURAL
MAY (
audio $ businessCategory $ carLicense $ departmentNumber $
displayName $ employeeNumber $ employeeType $ givenName $
homePhone $ homePostalAddress $ initials $ jpegPhoto $
labeledURI $ mail $ manager $ mobile $ o $ pager $
photo $ roomNumber $ secretary $ uid $ userCertificate $
x500uniqueIdentifier $ preferredLanguage $
userSMIMECertificate $ userPKCS12 )
)

 

4.4 Schema

对象类(ObjectClass)、属性类型(AttributeType)、语法(Syntax)分别约定了条目、属性、值,他们之间的关系如下图所示。所以这些构成了模式(Schema)——对象类的集合。条目数据在导入时通常需要接受模式检查,它确保了目录中所有的条目数据结构都是一致的。
LDAP 服务器的概念和原理简单介绍

schema(一般在 /etc/ldap/schema/ 目录)在导入时要注意前后顺序。

4.5 backend & database

ldap 的后台进程 slapd 接收、响应请求,但实际存储数据、获取数据的操作是由 Backends 做的,而数据是存放在 database 中,所以你可以看到往往你可以看到 backenddatabase指令是一样的值如 bdb。一个 backend 可以有多个 database instance,但每个 database 的 suffix 和 rootdn 不一样。openldap 2.4 版本的模块是动态加载的,所以在使用 backend 时需要 moduleload back_bdb 指令。

bdb是一个高性能的支持事务和故障恢复的数据库后端,可以满足绝大部分需求。许多旧文档里(包括官方)说建议将 bdb 作为首选后端服务(primary backend),但 2.4 版文档明确说 hdb 才是被首先推荐使用的,这从 2.4.40 版默认安装后的配置文件里也可以看出。hdb 是基于 bdb 的,但是它通过扩展的索引和缓存技术可以加快数据访问,修改 entries 会更有效率,有兴趣可以访问上的链接或 slapd.backends。

另外 config 是特殊的 backend,用来在运行时管理 slapd 的配置,它只能有一个实例,甚至无需显式在 slapd.conf 中配置。

4.6 TLS & SASL

分布式 LDAP 是以明文的格式通过网络来发送信息的,包括 client 访问 ldap 的密码(当然一般密码已然是二进制的),SSL/TLS 的加密协议就是来保证数据传送的保密性和完整性。

SASL(Simple Authenticaion and Security Layer)简单身份验证安全框架,它能够实现 openldap 客户端到服务端的用户验证,也是 ldapsearchldapmodify 这些标准客户端工具默认尝试与 LDAP 服务端认证用户的方式(前提是已经安装好 Cyrus SASL)。SASL 有几大工业实现标准:Kerberos V5、DIGEST-MD5、EXTERNAL、PLAIN、LOGIN。

Kerberos V5 是里面最复杂的一种,使用 GSSAPI 机制,必须配置完整的 Kerberos V5 安全系统,密码不再存放在目录服务器中,每一个 dn 与 Kerberos 数据库的主体对应。DIGEST-MD5 稍微简单一点,密码通过 saslpasswd2 生成放在 sasldb 数据库中,或者将明文 hash 存到 LDAP dn 的 userPassword 中,每一个 authid 映射成目录服务器的 dn,常和 SSL 配合使用。参考将 LDAP 客户端配置为使用安全性

EXTERNAL 一般用于初始化添加 schema 时使用,如ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif

4.7 LDIF

LDIF(LDAP Data Interchange Format,数据交换格式)是 LDAP 数据库信息的一种文本格式,用于数据的导入导出,每行都是“属性: 值”对,见 openldap ldif 格式示例

OpenLDAP(2.4.3x)服务器安装配置方法见这里。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-10/147561.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4524字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995161
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...