LDAP
LDAP 协议
LDAP 是轻量目录访问协议(Lightweight Directory Access Protocol)
主要用于查询和修改目录服务提供者(如 Active Directory)中的项目,它以树状结构存储数据库,读的性能高,但写入性能差,在企业中被广泛用于管理用户、组织结构以及权限等(不经常变更的数据)
此外,AD(Active Directory)是微软实现的支持 LDAP 协议的数据库
LDAP 基础概念
DN(Distinguished Name),专有名称,LDAP中对象的唯一路径,一般而言由下面的几部分组成:
- DC(Domain component)一般为公司名,域组件,可以理解为域名的组成部分,LDAP中至少有一个DC。如
mydomain.org
可以表示为dc=mydomain,dc=org
- OU(Organisation Unit)组织单元,类比公司中的部门,最多可以有四级,每级最长 32 个字符,可以为中文
- CN(Common Name)代表一个具体实例,即具体用户的名称(非路径),为用户名或者服务器名,最长可以到 80 个字符,可以为中文
LDAP解析
举例,如果张三在 A 公司(hello.org)的 IT 部门,那么张三的 DN 为CN=ZhangSan,OU=ITDepartment,DC=hello,DC=org
,查找顺序则由 DC 到 CN,即:
- DC=org
- DC=hello
- OU=ITDepartment
- CN=ZhangSan
此外,如果 A 公司还有子公司,假如李四在子公司(subdomain.hello.org)的销售部,那么李四的 DN 为CN=LiSi,OU=SaleDepartment,DC=subdomain,DC=hello,DC=org
,查找顺序也是由 DC 到 CN,即:
- DC=org
- DC=hello
- DC=subdomain
- OU=SaleDepartment
- CN=LiSi
LDAP 搜索
通过查询目录,可以直接收集到要求的数据。查询目录需要指定两个要素
- BaseDN
- 过滤规则
比如指定 BaseDN 为 DC=test.DC=local
就是以 DC=test.DC=local
为根往下搜索
LDAP 搜索过滤器语法有以下子集:
- 用与号 (
&
) 表示的 AND 运算符 - 用竖线 (
|
) 表示的 OR 运算符 - 用感叹号 (
!
) 表示的 NOT 运算符 - 用名称和值表达式的等号 (
=
) 表示的相等比较 - 用名称和值表达式中值的开头或结尾处的星号 (
*
) 表示的通配符
工具 ldapsearch
LDAP 加密
- LDAP over SSL(即 ldaps)
Ldap 默认不加密情况下使用 389 端口,当使用 ldaps 的时候使用 636 端口
连接方式
- LDAP over TLS(即 ldap + TLS)StartTLS
LDAP over TLS 可以简单理解为 ldaps 的升级;它默认使用 389 端口,但是会通讯的时候加密;客户端连接 LDAP 时,需要指明通讯类型为 TLS
连接方式
参考文档
OpenLDAP
参考文档:https://notes.lzwang.ltd/DevOps/Docker/DeployService/docker_deploy_ldap/#_3