全局编录(global catalog)是 Active Directory (AD)的一项功能,它允许域控制器(DC)对林(forest)中的任意对象提供信息,而不管该对象是否属于其所属域。启用全局编录功能的域控制器称为 global catalog servers。
核心功能
全局编录服务器执行多项功能,在多域林环境中尤其重要:
- 身份验证。 在进行交互式域登录时,DC 会处理身份验证请求,并提供有关用户帐户所属的所有组的授权信息,该信息将包含在生成的用户访问令牌中。DC 必须访问全局编录服务器,以获取以下内容:
- 用户主体名称解析。 使用用户主体名称发起的登录请求(例如 “username@domain.com”)需要在全局编录中进行搜索,以确定关联的用户对象的专有名称(distinguished name)。
- 通用组成员身份。 在多域环境中发起的登录请求需要使用全局编录:它可以检查是否存在任何通用组,并确定正在登录的用户是否属于这些组中的任意一个。由于全局编录是通用组成员身份信息的唯一来源,因此在多域林中进行身份验证时必须访问全局编录服务器。
- 对象搜索。全局编录可使执行搜索的用户看见林中的目录结构是透明的。例如,林中的任意一台全局编录服务器都能够仅凭对象的 samAccountName 来识别用户对象。没有全局编录服务器的情况下,仅凭其 samAccountName 来识别用户对象可能需要对林中的每个域分别执行搜索。
全局编录的工作原理
Active Directory 分区
要理解全局编录如何工作,首先需要先了解一点关于 Active Directory 数据库 的结构。域控制器会将 Active Directory 数据库存储在一个单独的文件中,即 NTDS.dit。为了简化管理并促进高效复制,数据库会在逻辑上划分为多个分区。
每台域控制器都至少维护三个分区:
- 域分区 包含有关域的对象及其属性的信息。每台域控制器都包含其本地域分区的完整可写副本。
- 配置分区 包含有关林拓扑的信息,其中包括域控制器和站点链接。林中的每台域控制器都维护配置分区的完整可写副本。
- 架构分区 是配置分区的逻辑扩展;它包含林中每个对象类的定义,以及控制创建和操作这些对象的规则。林中的每台域控制器都维护架构分区的完整副本。除了拥有该林的 Schema Master 操作主机角色的那台 DC 之外,所有 DC 上的架构分区都是只读的。
域控制器还可以维护 应用分区。 这些分区包含与与 AD 集成的应用程序相关的信息,并且可以包含除安全主体之外的任何类型的对象。应用分区没有特定的复制要求;不需要复制到其他域控制器,但可以配置为复制到林中的任意 DC。
您可以使用以下 PowerShell cmdlet 来识别 DC 上存在的分区:
Get-ADDomainController -Server <SERVER> | Select-Object -ExpandProperty Partitions
全局编录分区
考虑一个包含三个域的林(forest),每个域都有一个全局编录服务器,如下所示:
如前所述,每个 DC 都会维护其本地域分区、配置分区和架构分区的副本。在这种多域林(forest)中,全球编录服务器还会托管一组额外的只读分区。每个只读分区都包含来自林中其他域之一的域分区的部分只读副本。正是这些部分只读分区中的信息,使得全局编录服务器能够在多域林中处理身份验证和全林范围的搜索请求。
复制到全局编录服务器的对象属性子集称为 Partial Attribute Set(PAS)。可以使用以下 PowerShell cmdlet 列出域中 Partial Attribute Set 的成员:
Get-ADObject -SearchBase (Get-ADRootDSE).SchemaNamingContext -LDAPFilter "(isMemberOfPartialAttributeSet=TRUE)" -Properties lDAPDisplayName | Select lDAPDisplayName
在单个域的林中,所有 DC 都托管林中唯一的域分区;因此,每个 DC 都包含林中所有对象的记录,并且可以处理身份验证以及域服务请求。
Active Directory 利用这一点:允许单个域的林中的任何域控制器都能充当 虚拟 全局编录服务器,而不论其是否已配置为全局编录服务器。唯一的限制是:只有配置为全局编录服务器的 DC 才能响应专门发往全局编录的查询。
部署全局编录服务器
创建新域时,第一个 DC 将被设置为全局编录服务器。要将其他 DC 配置为全局编录服务器,可在 Active Directory Sites and Services 管理控制台中服务器的 NTDS Settings 属性里启用“Global Catalog”复选框,或使用以下 PowerShell cmdlet:
Set-ADObject -Identity (Get-ADDomainController -Server <SERVER>).NTDSSettingsObjectDN -Replace @{options='1'}
林中的每个站点都应至少包含一个全局编录服务器,以消除为了检索全局编录信息而必须让身份验证 DC 跨网络通信的需求。在无法在站点中部署全局编录服务器的情况下(例如小型远程分支机构),Universal Group Membership Caching 可以减少与身份验证相关的网络流量,并允许远程站点的 DC 使用缓存的通用组成员身份信息来处理本地站点登录请求。此功能要求远程 DC 与全局编录服务器通信,以处理初始登录并执行搜索请求。
建议将所有 DC 配置为全局编录服务器,除非有特定原因需要避免这样做。
Netwrix Auditor for Active Directory
分享到
了解更多
关于作者
Kevin Joyce
产品管理总监
Netwrix 产品管理总监。Kevin 对网络安全充满热情,尤其致力于理解攻击者为利用组织环境所采用的策略与技术。凭借八年的产品管理经验,并专注于 Active Directory 和 Windows 安全,他将这种热情投入到帮助构建解决方案中,助力组织保护其身份、基础设施和数据。