首先,Active Directory 是集中式存储库 (central repository),其中存储企业中的所有对象及其各自的属性。
它是一个分层 (hierarchical) 多主 (Multi-master) 模型的数据库。
无论域控制器 (DC) 联网与否,都可以在企业中任意给定的 DC 上处理对数据库的更改。
这当中,[多主] 意味着可灵活地在企业中的任何 DC 上进行数据的更改。
但它也可能造成冲突,Windows 处理更新冲突的一种方法是最后写入有效(last writer wins)。
尽管此方法在某些情况下可以接受,但有时也不能解决太过困难的冲突。
所以,最好是防止冲突的发生,而不是在事后试图解决冲突。
为了防止数据更新中出现冲突,Active Directory 以 [单主] 方式对某些对象执行更新。
同时,Active Directory 扩展了早期版本 Windows 中的单主模型,拆分出多个角色,并可将任一角色传输到任何 DC,
在单主模型中,整个目录中只有某台特定的 DC 可以处理特定对象的更新。
也正因为这些 Active Directory 角色未绑定到单个 DC,因此它称为 FSMO(灵活的单主机操作) 角色。
目前 Windows 中有五个 FSMO 角色:
-
架构主机 (Schema master)
-->Forest-wide,每个林 1 台,由位于林根域的 DC 承担。
·综述:
拥有 Schema master 角色的 DC 是唯一可以处理目录架构更新的 DC。
架构更新完成后,它将从架构主机复制到目录中的所有其他 DC。
·激活条件:
目录服务启动成功,且入站方向的 [架构 NC] 已经被角色所有者复制成功时,此角色激活。
·连接条件:
林中的 DC 和成员仅在更新架构时才与 FSMO 角色联系。
·宕机影响:
若 Schema master 不可用,则不可对活动目录架构进行变更,但日常操作均不涉及架构变更,不会立即引发故障。
·命名上下文 (Naming context, NC):
LDAP 路径:LDAP://cn=schema,cn=configuration,dc= -
域命名主机 (Domain naming master)
-->Forest-wide,每个林 1 台,由位于林根域的 DC 承担。
·综述:
拥有 Domain naming master 角色的 DC 是唯一可以处理林中域关系更新的 DC。
如,在林中建新域或子域时,由 Domain naming master 确保林内域名空间的一致性(域名唯一性、完整性)。
·激活条件:
目录服务启动,且入站方向的 [配置 NC] 已被角色所有者成功复制时,此角色激活。
·连接条件:
林中的成员仅在更新交叉引用时才与 FSMO 角色持有者联系。
林中的 DC 会在林中添加/删除域时联系,以及在 DC 上添加了应用程序目录分区的新实例。
-->例如,已为默认 DNS 应用程序目录分区登记 DNS 服务器。
·宕机影响:
若 Domain naming master 不可用,则无法增加新域/子域,但日常操作均不涉及域名更改,不会立即引发故障。
·命名上下文:
[Partitions\Configuration]
LDAP 路径:LDAP://CN=Partitions,CN=Configuration,DC= -
RID 主机 (RID master)
-->Domain-wide,每个域 1 台。
·综述:
RID 全称为 Relative ID,即:相对 ID。
域中每个安全主体的 SID 都是唯一的,RID master 负责处理来特定域内所有 DC 的 [RID 池] 的请求。
*也负责处理安全主体对象的域间移动 (从其域中删除一个对象并将其放入另一个域) 的处理。
域中的每台 DC 都被分配了一个 RID 池,允许它为自己创建的安全主体分配 RID。
当为某台 DC 分配的 [RID 池] 低于阈值时,该 DC 会向域内的 RID master 发出额外 RID 请求。
域 RID master 从域内未分配的 RID 池中检索 RID 来响应请求,并将它们分配给请求 DC 的池中。
每个域只有一个 RID master,换句话说,林中可以有多个域,每个域都有一台 RID master。
·激活条件:
目录服务启动,且入站方向的 [域 NC] 已被角色所有者成功复制时,此角色激活。
·连接条件:
当 DC 检索新的 RID 池时,它们会与 FSMO 角色持有者联系,新的 RID 池通过 AD 复制 (AD replication) 传递给请求 DC。
·宕机影响:
若 RID Master 不可用,同时,某台 DC 的 RID 池用完,则该 DC 无法创建新的安全标识对象。
换句话说,如果 DC 仍有可用的 RID 池,则可以继续创建对象。 -
PDC 仿真器 (PDC emulator)
-->Domain-wide,每个域 1 台。
综述:
对于依赖时间同步的 Kerberos 认证协议来说,域内通用且准确的时间是必须的。
PDC emulator 是确保域内所有 Windows 系统使用相同时间的关键组件。
位于林根的 PDC emulator 对企业具有权威性,应配置为从外部源收集时间。
所有 PDC 在选择其入站时间合作伙伴时都遵循域的层次结构。
同时,PDC emulator 保留以下功能:
4-1 域中其他 DC 所做的密码更改将先复制到 PDC emulator,然后再复制到其他 DC。
-->也包括 AD 数据库和基于文件系统提供的 SYSVOL 共享文件夹。
4-2 用户在某台 DC 上发生身份验证失败时,错误会转发到 PDC emulator,由其向用户报告验证失败的消息。
4-3 在 PDC emulator 上处理帐户锁定。
4-4 PDC emulator 执行基于 Windows NT 4.0 服务器的 PDC 或更早版本的 PDC 为基于 Windows NT 4.0 或更早版本客户端执行的所有功能。
激活条件:
当 PDC emulator 发现 [域 NC] 头的 [fSMORoleOwner] 属性指向自身时,将始终处于活动状态,没有入站复制要求。
连接条件:
DC 会在有新密码或本地密码验证失败时会联系 PDC emulator。
宕机影响:
尽管大多数认证和资源访问操作继续工作,
但依赖于 PDC Emulator 的特定功能(如密码更改、时间同步、账户锁定)将无法进行同步,很快将发生认证问题。 -
基础结构主机 (Infrastructure master)
-->Domain-wide,每个域 1 台。
综述:
当一个域中的对象引用另一个域中的另一个对象时,通常使用 [GUID]、[SID(用于安全主体引用)] 和 [DN]。
Infrastructure master 负责 [跨域] 对象引用的更新和协调(更新跨域对象的 SID 和 DN)。
-->将这些引用与全局编录服务器 (GC) 中的数据进行比较,并在发现不一致时修改非 GC 域控制器中的跨域引用。
-->然后通过 AD 复制机制将这些修改传播到其他域控制器。
GC 保存了整个林中每个对象的部分属性 (全局编录属性) 的副本,以允许 GC 快速响应跨域查询。
如果 Infrastructure master 位于 GC ,则 Infrastructure master 会认为拥有了所有的对象进而停止工作。
-->GC 拥有林内所有对象的部分信息,对 GC 来说,它不需要通过跨域引用来获取林内其他域的对象信息。
-->如果域内所有 DC 都是 GC,则所有 DC 都拥有最新数据,谁担任 Infrastructure master 角色并不重要。
激活条件:
目录服务启动,且入站方向的 [域 NC] 已被角色所有者成功复制时,此角色激活。
连接条件:
没有连接要求,它是一种林内部清理功能。
宕机影响:
除非环境是多域结构且域控制器不是全局编录(GC)服务器,否则大多数日常操作不依赖于跨域对象引用更新,也就无影响。
参考文献
Active Directory FSMO roles in Windows