您的位置:首页 > 其它

LDAP概念和原理

2015-09-11 10:21 501 查看
什么是目录服务?

目录服务就是按照树状存储信息的模式

目录服务的特点?
目录服务与关系型数据库不同?


目录服务的数据类型主要是字符型, 而不是关系数据库提供的整数、浮点数、日期、货币等类型

为了检索的需要添加了BIN(二进制数据)、CIS(忽略大小写)、CES(大小写敏感)、TEL(电话型)等语法(Syntax)

同样也不提供象关系数据库中普遍包含的大量的函数
目录有很强的查询(读)功能,适合于进行大量数据的检索
但目录一般只执行简单的更新(写)操作,不支持批量更新所需要的事务处理功能
它主要面向数据的查询服务(查询和修改操作比一般是大于10:1),不提供事务的回滚(rollback)机制.
目录具有广泛复制信息的能力,适合于多个目录服务器同步/更新

常见的目录服务软件

X.500
LDAP
Actrive Directory,Microsoft公司
NIS

LDAP

LDAP是轻量目录访问协议(Lightweight
Directory Access Protocol)的缩写

LDAP标准实际上是在X.500标准基础上产生的一个简化版本

LDAP特点

LDAP的结构用树来表示,而不是用表格。正因为这样,就不能用SQL语句了
LDAP可以很快地得到查询结果,不过在写方面,就慢得多
LDAP提供了静态数据的快速查询方式
Client/server模型

Server
用于存储数据

Client提供操作目录信息树的工具

这些工具可以将数据库的内容以文本格式(LDAP
数据交换格式,LDIF)呈现在您的面前

LDAP是一种开放Internet标准,LDAP协议是跨平台的 的Interent协议

它是基于X.500标准的,
与X.500不同,LDAP支持TCP/IP(即可以分布式部署)

LDAP存储这样的信息最为有用:
也就是数据需要从不同的地点读取,但是不需要经常更新:


公司员工的电话号码簿和组织结构图
客户的联系信息
计算机管理需要的信息,包括NIS映射、email假名,等等
软件包的配置信息
公用证书和安全密匙

Ldap的client
/server结构


server /usr/sbin/slapd -u ldap -h ldap:///
client数据库操作client 用于对ldap server库进行操作

工具:ldapadd, ldapsearch
实用client 用于将ldap server库在实际工作中使用

工具:radius+ldap, pam+ldap
身份认证在LDAP中提供三种认证机制:

匿名 Ldapsearch –x -LLL
基本认证 通过用户名和密码进行身份识别,又分为简单密码和MD5密码认证

# ldapadd -x -D "cn=root,dc=otas,dc=cn" -W -f base.ldif

-x就是simple authetication

Enter LDAP Password: 输入admin123

adding new entry "dc=otas,dc=cn"

adding new entry "ou=People,dc=otas,dc=cn"

adding new entry "ou=Group,dc=otas,dc=cn"
SASL Simple Authentication and Secure Layer

LDAP提供的在SSL和TLS安全通道基础上进行的身份认证,包括数字证书的认证
Ldap端口号(显然提供分布式ldap)——389,636

[root@vmmac modules]# cat /etc/services | grep ldap

ldap 389/tcp 明文

ldap 389/udp 明文

ldaps 636/tcp #
LDAP over SSL

ldaps 636/udp #
LDAP over SSL

TLS
安全性


分布式LDAP
是以明文的格式通过网络来发送信息的,包括client访问sldap的密码。TLS(SSL
的后继者,由OpenSSL 包)加密机制来解决这个问题。

LDAP目录数据结构

在LDAP中目录是按照树型结构组织——目录信息树(DIT)

DIT是一个主要进行读操作的数据库

DIT由条目(Entry)组成,条目相当于关系数据库中表的记录;

条目是具有分辨名DN(Distinguished Name)的属性-值对(Attribute-value,简称***)的集合

在目录树中怎么组织数据


cn=Fran Smith,ou=employees,dc=foobar,dc=com

------------ -----------------

容器条目 BaseDN

--------------------------------------------

DN

1。在UNIX文件系统中,最顶层是根目录(root),LDAP目录也通常用ROOT做根,通常称为BaseDN

2。因为历史(X.500)的原因,LDAP目录用OU(Organization
Unit)
从逻辑上把数据分开来。

Ou
也是一种条目,容器条目


3.Ou
下就是真正的用户条目






什么是dn?

DN,Distinguished
Name分辨名

在LDAP中,一个条目的分辨名叫做“DN”,DN是该条目在整个树中的唯一名称标识

DN相当于关系数据库表中的关键字(Primary Key);

是一个识别属性,通常用于检索

常见的两种DN设置:

基于cn(姓名)cn=Fran Smith,ou=employees,dc=foobar,dc=com

(dn格式就是这么一大串)

最常见的CN是/etc/group转来的条目
基于uid(User ID)uid=fsmith,ou=employees,dc=foobar,dc=com

最常见的UID是/etc/passwd和/etc/shadow转来的条目
[root@vmmac migration]# ldapsearch -x -LLL "uid=mac*"

dn: uid=mac,ou=People,dc=otas,dc=cn 唯一标适

uid: mac

cn: mac CN=Common Name 为用户名或服务器名

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword:: e2NyeXB0fSQxJGRTMFJoR1lwJHk0dkdKc1ByM3BlVmo4Z243dEhoQTA=

shadowLastChange: 13697

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 500

gidNumber: 500

homeDirectory: /home/mac

dn: uid=macg,ou=People,dc=otas,dc=cn

uid: macg

cn: macg

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword:: e2NyeXB0fSQxJGxHdE9tTW9vJHR0TFhpYXc2Y1VJb0RyWU9xUlVDSzE=

shadowLastChange: 14186

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 503

gidNumber: 503

homeDirectory: /home/macg
Base
DN (就是dc=,dc= )


LDAP目录树的最顶部就是根,也就是所谓的“Base DN"。

BaseDN通常采用两种格式:

(假定我在名为FooBar
的电子商务公司工作,这家公司在Internet上的名字是foobar.com)

商务型格式——以X.500格式表示的基准DNo="FooBar, Inc.", c=US
Internet型格式——以公司的Internet 域名地址表示的基准DN)

是最常用的格式
dc=foobar, dc=com
LDIF
格式(此格式用于LDAP数据导入、导出)


LDIF是LDAP数据库信息的一种文本格式,包含:

行界定
冒号分隔
属性-值对

[root@vmmac migration]# cat passwd.ldif

dn: uid=mac,ou=People,dc=otas,dc=cn

uid: mac

cn: mac

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword: {crypt}$1$dS0RhGYp$y4vGJsPr3peVj8gn7tHhA0

gidNumber: 500

homeDirectory: /home/mac
一个典型的
entry例子(一个属性可以有多个值)


Foobar, Inc.的员工Fran Smith的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有多个值

你可能只知道她的名字叫Fran,但是对人力资源处的人来说她的正式名字叫做Frances。因为保存了她的两个名字

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
属性/值搜索的时候是不区分大小写的

某些特殊的属性(例如,password)在搜索的时候需要区分大小写。

/etc/passwd和/etc/group文件里的用户被migrate导入ldap后,会产生两条条目,分别属于People这个ou,和Group这个ou

显然属于People ou的条目对应passwd,属于Group ou的条目对应group

dn: cn=test1,ou=Group,dc=otas,dc=cn

objectClass: posixGroup

objectClass: top

cn: test1

userPassword:: e2NyeXB0fXg=

gidNumber: 500

/etc/group
dn: uid=test1,ou=People,dc=otas,dc=cn

uid: test1

cn: test1

objectClass: account

objectClass: posixAccount

objectClass: top

objectClass: shadowAccount

userPassword:: e2NyeXB0fSQxJHpGR3drdUdlJFIyZ3BZTlh3QzVPaXFOck1CTGU2QjE=

shadowLastChange: 14298

shadowMax: 99999

shadowWarning: 7

loginShell: /bin/bash

uidNumber: 500

gidNumber: 500

homeDirectory: /home/test1

/etc/passwd

/etc/shaddow
user和group在ldap中的不同

从属ou不同

user属于ou=People

group属于ou=Group

dn表示方式不同

user的dn用uid打头:uid=news,ou=People,dc=otas,dc=cn

group的dn用cn打头:cn=news,ou=Group,dc=otas,dc=cn
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: