1. 主题
  2. 安全防护
  3. 什么是轻量级目录访问协议(LDAP)身份验证?

什么是轻量级目录访问协议(LDAP)身份验证?

CopiedFailed复制 URL

轻量级目录访问协议(LDAP)是一种可帮助用户查找组织和人员等相关数据的协议。LDAP 有两个主要目标:将数据存储在 LDAP 目录中;以及对要访问该目录的用户进行身份验证。它也为应用提供所需的通信语言,以便从目录服务收发信息。借助目录服务,用户可以访问网络中的组织、个人相关信息以及其他数据的存储位置。

LDAP 最常见的用例是提供一个集中位置来访问和管理目录服务。LDAP 让组织能够存储、管理和保护与该组织、其用户和资产有关的信息,例如用户名和密码。它提供分层的信息结构,可以让用户轻松访问存储内容,当组织在扩大规模、吸纳了更多用户数据和资产时,这是一个相当重要的优势。

LDAP 也可充当身份和访问权限管理(IAM)解决方案来满足用户身份验证的需要,支持 Kerberos 和单点登录(SSO)、简单身份验证安全层(SASL)和安全套接字层(SSL)。

体验红帽企业 Linux

LDAP 是微软的 Active Directory(AD)目录服务中使用的核心协议(但并非是其专用);而 Active Directory 是一个大型目录服务数据库,包含网络中每个用户账户的信息。更具体地说,LDAP 是目录访问协议(DAP)的轻量级版本,提供一个中央位置来访问和管理在传输控制协议/互联网协议(TCP/IP)上运行的目录服务,其最新版本是 LDAPv3。 

AD 提供身份验证以及用户和组管理,它是最终对用户或计算机进行身份验证的主体。这个数据库中包含的属性数量要多于拉取到 LDAP 的属性数量。不过,LDAP 擅长仅凭少量信息查找目录对象,因此不需要从 AD 提取它的全部属性,而且从哪一个目录服务拉取也无关紧要。

LDAP 的主要目标是与 AD 通信,从中提取对象(例如域、用户和组等),并以可用格式将这些对象存储到位于 LDAP 服务器上的专用目录中。

我们可以这样比喻:AD 是世界上最庞大的图书馆,而您想要找一本书名提到丧尸的书。对于 LDAP 而言,这本书是否在美国出版、是否超过 1,000 页,或是否为丧尸末日逃生指南,这些细节都无关紧要,尽管它们确实有助于缩小选择范围。LDAP 是经验丰富的图书管理员,它知道哪里可以找到满足您要求的所有选项,并且会验证您是否已找到要找的目标。

红帽助力优化 Linux 安全防护

LDAP 检索是由什么触发的?它是如何运作的?

LDAP 身份验证流程使用的是一种客户端-服务器身份验证模型,包含以下几个重要组成部分:

  • 目录系统代理(DSA):作为服务器,在其网络中运行 LDAP
  • 目录用户代理(DUA):作为客户端(例如用户的个人电脑),访问 DSA
  • DN:专有名称(Distinguished Name),包含了供 LDAP 检索的目录信息树(DIT)的路径(例如 cn=Susan、ou=users、o=Company)
  • 相对专有名称(RDN):专有名称内路径中的各个组成部分(例如 cn=Susan)
  • 应用编程接口(API):通过 API,您无需了解实施原理,也能将您的产品或服务与其他产品和服务互通。

当用户尝试访问支持 LDAP 的客户端程序(例如其个人电脑上的商务电子邮件应用),整个 LDAP 流程就开始了。使用 LDAPv3 时,有两种用户身份验证方法:简单身份验证(例如使用登录凭据的 SSO)和 SASL 身份验证(将 LDAP 服务器绑定到 Kerberos 等程序)。用户尝试登录时,系统会发送一个请求来对分配给用户的 DN 进行身份验证。DN 是通过启动 DSA 的客户端 API 或服务发送的。

客户端会自动绑定到 DSA,LDAP 使用 DN 来搜索与 LDAP 数据库中记录相匹配的对象或对象集合。DN 中的 RDN 在这个阶段非常重要,因为它们会一步一步引导 LDAP 搜索 DIT,以找到目标对象。如果路径在后端缺少连接的 RDN,结果可能会呈现为无效。在本例中,LDAP 搜索的对象是个人用户账户(cn=Susan),它只有在目录中的账户有匹配的 uid 和 userPassword 时才会验证用户。用户组在 LDAP 目录中也被看做是对象。

一旦用户收到回复(无论有效或无效),客户端就会从 LDAP 服务器解绑。然后,通过验证的用户可以访问 API 及其服务,包括所需的文件、用户信息和其他应用数据,具体取决于系统管理员授予的权限。

LDAP 采用轻量级结构并且使用了 DIT,因而能快速运行 LDAP 搜索,并成功提供搜索结果。想要顺利浏览 LDAP 服务器并理解 LDAP 搜索的工作原理,了解 DIT 至关重要。

DIT 能够让用户快速浏览不同层级的 LDAP 目录,以便缩小搜索结果范围并提供对查询的回复。DIT 以根目录开头,后跟国家或地区,然后划分为两个子类:域组件(dc)和组织名称(o)。

域访问组件(dc)

dc(例如 dc=com、dc=example)使用域名系统(DNS)映射来查找互联网域名,并将其转译为 IP 地址。

大多数用户不知道他们搜索的目标对象的域名和/或 IP 地址。在这种情况下,LDAP 使用分配给用户的专有名称(DN)作为路径,以便快速浏览 DIT 并找到搜索结果。接下来就要使用 o 子类了。

组织名称(o)

o 子类(例如 o-Company)是 DN 中列出的最常用子类之一,通常也是 LDAP 运行搜索时的起始位置。例如,一个简单路径通常以 o 子类开头,分叉到组织部门(ou),后跟用户账户或组。

组织部门(ou)

如前文所述,ou 是 o 的一个子类,通常表现为 ou=users 或 ou=group,分别包含用户账户或组的列表。在目录中,它可能如下所示:

  • o-Company

    • ou=groups

      • cn=developers

    • ou=users

      • cn=Susan 

通用名称(cn)

通用名称(cn)用于标识组或个人用户账户的名称(例如 cn=developers、cn=Susan)。用户可以从属于某个组;因此,如果 Susan 是开发人员,也可能会存在于 cn=developers 下。

属性和值

LDAP DIT 中的各个子类(即 o、ou、cn)都包含属性和值,或者含有 LDAP 目录结构相关信息的模式,它们有助于缩小搜索范围。属性类似于地址簿中的条目,有着名称、电话号码和地址等标签,每个属性分配有相应的值。例如,Susan 可能是 name 属性的值。

在 cn=Susan 账户中,user id(uid)和 userPassword 是属性,而用户的登录凭据则是值。不过,在 cn=developers 这样的组中,Susan 可能有 uniqueMember 属性(例如,uniqueMember=cn-Susan,ou-Users,o-Company)。这会将路径映射到 Susan 的个人用户账户所处的位置,以及 LDAP 所搜索的信息。用户账户是 DIT 中的末端,也是 LDAP 最终提取搜索结果的地方。

此外,还有许多其他属性类型和语法可以帮助缩小搜索范围,包括 organizationalPerson(structural)或 personal(structural)等 ObjectClass。不过,为了保持轻量和易用,LDAP 中的属性数量是有限的。

企业网络管理员通常要同时管理成千上万的用户。这意味着,他们要根据用户的角色以及对日常任务所需文件(例如访问公司内网)的访问权限来分配访问控制和策略。

LDAP 可以简化用户管理过程,节省网络管理员的宝贵时间,并将身份验证流程集中到一处。在将 LDAP 集成到环境中之前,务必要思考以下几个问题:

  • 容量:您需要存储的用户管理数据有多少?要考虑实施 LDAP 解决方案的产品是否有足够容量来存储和管理您需要的所有数据。

  • 搜索频率:是否有用户每天都需要访问的数据,例如公司内网、电子邮件应用或服务?如果有,那 LDAP 应该很适合您。

  • 数据组织:LDAP 中的简单 DIT 能否满足您的数据组织需求,还是说需要更精细的系统?

虽然 LDAP 通常在 AD 中使用,但也可用于为其他工具和客户端环境提供用户身份验证,包括 Unix 上的红帽目录服务器,以及 Windows 上的开源应用 OpenLDAP。您还可以将 LDAP 的身份验证和用户管理功能用于 API 管理、基于角色的访问权限控制(RBAC),或者 Docker 和 Kubernetes 等其他应用和服务。

红帽® 企业 Linux® 内含集中式身份管理功能,可让您使用跨整个数据中心的单个可扩展接口对用户进行身份验证,并实施 RBAC。

红帽企业 Linux 的身份管理涵盖了一系列身份验证和授权功能,例如:

  • 集中式身份管理。红帽企业 Linux 支持集中式身份管理,让组织能够从单一位置实施安全控制、满足合规标准并管理身份验证策略,从而确保跨平台的一致性、改善用户体验并减轻 IT 负担。
  • 多因素身份验证(MFA)和免密码功能。红帽企业 Linux 提供多因素身份验证(MFA),增加了第二层身份验证。红帽企业 Linux 支持无密码身份验证(包括用于 SSH 和 GDM 登录的 FIDO2/WebAuthn 和基于密钥的 Kerberos 票据),从而推动零信任架构(ZTA)的成熟落地,使安全防护机制从简单的 MFA,升级为具备抗钓鱼攻击和自适应能力的身份验证体系。
  • 外部身份提供商集成。红帽企业 Linux 支持用户通过 OAuth 2.0 向客户端进行身份验证,并与 Keycloak、Entra ID(Azure AD)和 GitHub 等外部身份提供商集成。这使得身份验证和授权流程能够委托给外部实体,从而在多样化的 IT 环境中提升灵活性和互操作性。
  • 全面的策略和证书管理。 红帽企业 Linux 提供量身定制的安全防护策略管理,包括用于委派身份管理(IdM)服务器管理权限的基于角色的访问权限控制,以及用于限制特权升级的自定义 sudo 规则。它还提供强大的证书管理工具,可实现证书整个生命周期的自动化,包括跟踪到期情况、确保及时续期,以及利用公钥基础架构(PKI)身份验证来验证受信任的身份,这是 ZTA 的关键组成部分。
  • 使用系统角色实现自动化和编排。借助红帽系统角色(由 Ansible 自动化平台提供支持),红帽企业 Linux 可实现安全防护配置和管理的自动化。这种自动化对于在所有环境(从云端到本地)中大规模确保一致性和合规性至关重要,可减少手动操作和潜在的配置错误。系统角色是 CISA ZTA 框架内自动化和编排层的一部分。

进一步了解红帽企业 Linux 安全防护

对于具有更专业化需求的用户,红帽也以附加组件形式提供红帽目录服务器。

红帽目录服务器是一个基于 LDAP 的目录,可以面向多元大型环境进行扩展。使用近乎直接替换的方案来取代成本高昂的现有第三方 LDAP 解决方案,利用一系列复制选项来管理分散而复杂的目录拓扑。此解决方案可为您的目录数据提供可自定义的属性和模式,为您带来灵活性。

红帽官方博客

获取有关我们的客户、合作伙伴和社区生态系统的最新信息。

所有红帽产品试用

我们的免费试用服务可让您亲身体验红帽的产品功能,为获得认证做好准备,或评估某个产品是否适合您的企业组织。

扩展阅读

什么是安全防护自动化?

安全防护自动化是指依托技术手段,在减少人工协助的情况下执行任务,从而实现安全防护流程、应用和基础架构的深度集成。

什么是 DevSecOps?

如果您想充分发挥 DevOps 的敏捷性和响应能力,则必须在应用的整个生命周期内兼顾 IT 安全性。

左移与右移:有何区别

左移和右移是指在软件开发生命周期的每个阶段都实施持续测试。

安全防护 相关资源

相关文章