什么是轻量级目录访问协议(LDAP)?
- IAM 词汇表
- 什么是轻量级目录访问协议(LDAP)?
轻量级目录访问协议(LDAP)是一种开放、独立于厂商的协议,应用程序使用该协议通过网络访问和维护目录信息。目录是一种集中式数据存储,用于存储组织的用户、群组和设备相关数据,而 LDAP 最常用于通过该目录对用户进行身份验证。当用户使用同一用户名和密码登录工作邮箱、VPN 或公司内部应用程序时,LDAP 会在后台运行。LDAP 允许多个应用程序通过共享的集中式目录验证凭据,而无需每个应用程序维护自己的用户列表,因此成为登录企业系统的基础技术。
LDAP 最初被设计为目录访问协议(DAP)的一种更简单、更高效的替代方案;DAP 则是 X.500 目录标准中的一种较旧且资源开销较大的访问协议。LDAP 保留了结构化目录的核心理念,同时减少了复杂的实现要求和开销,从而更易于采用。
LDAP 与 Active Directory 对比
虽然人们通常认为 LDAP 和 Active Directory 是相互竞争的替代方案,但实际上两者完全不同。LDAP 是用于访问和管理目录信息的一套标准规则,也可以说是一种共享语言。它本身不存储任何数据,而是应用程序用来与目录进行通信的协议。
Active Directory(AD)是 Microsoft 提供的目录服务产品,用于存储和管理网络上的用户、群组和设备信息。LDAP 是 Active Directory 用来让应用程序读取和写入其目录的协议。简单来说,LDAP 就是 Active Directory 可以使用的一种语言。由于 LDAP 是一种开放且独立于厂商的标准,因此受到各种目录产品和服务的支持,包括 OpenLDAP、JumpCloud 和 Oracle Internet Directory。无论组织选择使用哪种目录,应用程序都可以依赖同一协议;这种灵活性是 LDAP 得到广泛采用的重要原因之一。
LDAP 是如何工作的?
LDAP 采用客户端-服务器模型,其中客户端是需要目录信息的应用程序(如登录界面或电子邮件程序),服务器则是目录本身。与 LDAP 目录的典型交互包括客户端发送请求,LDAP 服务器根据目录处理请求,然后返回响应。要了解目录的组织方式,首先需要了解其中可以存储哪些内容:
- 条目:目录中的一条记录。条目通常代表一个对象,例如个人、群组或设备。
- 属性:与条目关联的数据,包括姓名、电子邮件地址、电话号码或部门。每个属性都有类型和值。
- 可分辨名称(DN):用于标识目录中条目的唯一“地址”,这意味着任意两个条目都不能使用相同的 DN。DN 以路径形式表示,由条目名称及其所属层级构成,用于准确告知目录条目的位置。
条目按照称为目录信息树(DIT)的层级结构进行组织。与公司组织结构图类似,DIT 从较宽泛的根节点向下分支为更具体的分组,例如部门,最终延伸到用户等单个条目。这种树状结构使 DN 可以作为路径来理解,每个人的 DN 都描述了从树顶到其条目所在位置的路径。
LDAP 的常见应用场景
LDAP 的几乎所有用途都可以归结为一个核心思想:多个应用程序可以共享一个关于用户和资源的集中式权威数据源,而无需各自维护自己的数据。以下是组织使用 LDAP 的最常见方式。
身份验证和授权
LDAP 的主要应用场景包括身份验证和授权。身份验证涉及确认用户身份,这通过 LDAP 绑定操作实现:应用程序提交用户身份和密码,由目录验证或拒绝。授权则涉及确定已通过身份验证的用户可以执行哪些操作。LDAP 目录将用户组织到群组中,应用程序会检查群组成员身份,以授予或拒绝访问权限。例如,只有“HR”群组的成员才能在薪资系统中进行编辑。
集中式用户管理
传统上,每个应用程序都维护自己的用户和密码列表。过去,新员工入职意味着需要在多个地方逐一创建账户,而员工离职则意味着要逐一查找并禁用这些账户;如果遗漏任何一个账户,都会带来严重的安全风险。借助 LDAP,所有应用程序都通过同一个目录进行身份验证。这样可以加快入职和离职流程、保持密码策略一致,并在一个集中位置审计谁拥有对哪些资源的访问权限。
单点登录(SSO)基础
由于每个应用程序都可以指向同一个目录,因此 LDAP 为单点登录(SSO)奠定了基础,使一套凭据可以用于不同的系统。需要明确的是,LDAP 是 SSO 的基础,而其本身并不是 SSO。完整的 SSO 体验(用户只需登录一次,即可在各个应用程序之间切换而无需重新输入密码)通常还需要其他协议,但其底层的共享身份源通常是 LDAP 目录。
联系人查询
由于目录存储了人员及其属性,应用程序可以将其作为全公司共享的地址簿进行查询。例如,当用户开始输入同事姓名时,电子邮件客户端可能会自动补全其电子邮件地址;或者,内部工具中的“员工目录”搜索可能会返回该同事的信息。在这里,LDAP 的工作方式完全符合预期:目录针对读取进行了优化,能够处理大量快速查询,因此非常适合此类查询。
存储配置信息
除人员外,目录还可以存储网络打印机、服务器和共享设备等机器资源的条目。这样,应用程序和用户便可从一个集中位置发现并连接这些资源,而无需逐一手动配置。工作站可以通过目录定位附近的打印机,系统也可以在启动时获取设备设置。虽然这只是一个规模较小的应用场景,但它体现了 LDAP 的灵活性。
LDAP 端口和安全性
默认情况下,LDAP 通过 389 端口进行通信,这是 LDAP 流量使用的标准端口。但是,LDAP 本身不提供加密,因此数据会以明文传输。任何能够拦截该流量的人都可能读取其中的内容,包括用户名和密码等敏感信息。对于经常用于处理登录的协议而言,这构成重大风险,因此强烈建议使用加密。以下是保护 LDAP 安全的两种最常见方式:
- LDAPS 使用 636 端口。在此模式下,连接建立后即进行加密,因此整个会话期间的流量都会受到保护。其中的 S 代表“安全”(Secure),与 HTTPS 中的含义相同。
- StartTLS 使用标准的 389 端口。它不使用单独的安全端口,而是先建立普通 LDAP 连接,然后使用 TLS 将其升级为加密连接。最终效果与 LDAPS 类似,但它是在同一端口上完成协商,而不是使用专用端口。
关键点是,389 端口上的普通 LDAP 本身不提供任何保护。无论使用 636 端口上的 LDAPS 还是 389 端口上的 StartTLS,都应将加密视为必不可少的措施。
LDAP 的优缺点
LDAP 的优势解释了它为何长期以来一直是企业身份管理的重要支柱,而其局限性则表明,在某些情况下需要借助辅助工具,或者 LDAP 并非最合适的选择。
| LDAP 的优势 | LDAP 的局限性 |
|---|---|
LDAP 的优势
| LDAP 的局限性
|