信任关系如何作用于 Active Directory 中的林(预览版)
Active Directory 域服务 (AD DS) 通过域和林信任关系提供跨多个域或林的安全性。 在跨信任进行身份验证之前,Windows 必须先检查用户、计算机或服务请求的域是否与请求帐户的域有信任关系。
若要检查此信任关系,Windows 安全系统计算接收请求的服务器与请求帐户域中的 DC 之间的信任路径。
AD DS 和 Windows 分布式安全模型提供的访问控制机制为域和林信任的操作提供了环境。 要使这些信任正常工作,每个资源或计算机必须具有指向其所在域中 DC 的直接信任路径。
Net Logon 服务通过与受信任域授权机构进行身份验证的远程过程调用(RPC)连接来实现信任路径。 安全通道还通过域间信任关系扩展到其他 AD DS 域。 此安全通道用于获取和验证安全信息,包括用户和组的安全标识符(SID)。
注意
域服务支持多个林信任方向,包括当前预览的双向信任和可以是传入或传出的单向信任。
有关信任如何应用于域服务的概述,请参阅林概念和功能。
若要开始在域服务中使用信任,请创建使用林信任的托管域。
信任关系流
信任中安全通信的流动性决定了信任的弹性。 如何创建或配置信任决定了通信在林中或跨林的扩展程度。
信任的方向决定了信任之间的通信流。 信任可以是单向或双向,可以是可传递的或不可传递的。
下图显示了默认情况下,树 1 中的所有域和 树 2 具有可传递信任关系。 因此,树 1 中的用户可以访问 树 2 中的域中的资源,树 2 中的用户可以在资源上分配适当的权限时访问 树 1中的资源。
单向和双向信任
信任关系使对资源的访问权限可以是单向或双向。
单向信任是在两个域之间创建的单向身份验证路径。 域 A 与 域 B之间的单向信任,域 A 中的用户可以访问 域 B中的资源。但是,域 B 中的用户无法访问 域 A中的资源。
某些单向信任可以是不可传递的,也可以是可传递的,具体取决于要创建的信任类型。
在双向信任中,域 A信任域 B,域 B 信任 域 A。此配置意味着可以在两个方向的两个域之间传递身份验证请求。 有些双向关系的传递性或非传递性可能取决于所创建的信任类型。
本地 AD DS 林中的所有域信任关系都是双向且可传递的信任关系。 创建新的子域时,会在新的子域和父域之间自动创建双向可传递信任。
可传递和非可传递信任
传递性确定信任是否可以扩展到形成信任的两个域之外。
- 可传递信任可用于扩展与其他域的信任关系。
- 非可传递信任可用于拒绝与其他域的信任关系。
每次在林中创建新域时,都会在新域与其父域之间自动创建双向可传递信任关系。 如果将子域添加到新域,信任路径将向上流动到域层次结构,从而扩展新域与其父域之间创建的初始信任路径。 在域树形成过程中,可传递的信任关系向上流动,从而在域树中的所有域之间创建可传递的信任。
身份验证请求遵循这些信任路径,因此林中任何域中的帐户都可以由林中的其他任何域进行身份验证。 使用单一登录过程,具有适当权限的帐户可以访问林中任何域中的资源。
林信任
林间信任关系帮助您管理分段的 AD DS 基础结构,并支持在多个林之间访问资源和其他对象。 森林信托对服务提供商、正在合并或收购的公司、协作业务 Extranet 和寻求管理自治解决方案的公司非常有用。
使用森林信任,可以链接两个不同的森林,形成单向或双向可传递的信任关系。 使用林信任,管理员可以将通过单个信任关系连接两个 AD DS 林,以便提供跨林的无缝身份验证和授权体验。
只能在一个森林中的森林根域与另一个森林中的森林根域之间创建森林信任。 林信任只能在两个林之间创建,不能隐式扩展到第三个林。 此行为意味着,如果在 林 1 和 林 2之间创建了一项森林信任,并在 林 2 和 林 3之间又创建了一项森林信任,则林 1 与 林 3之间并没有隐式信任关系。
下图显示了一个组织中三个 AD DS 林之间两个单独的林信任关系。
此示例配置提供以下访问权限:
- 林域 2 中的用户可以访问 林域 1 或 林域 3 中任何域内的资源。
- 林 3 中的用户可以访问林 2 所含任何域中的资源
- 林 1 中的用户可以访问林 2 所含任何域中的资源
此配置不允许林 1 中的用户访问林 3 中的资源,反之亦然。 若要允许林 1 和林 3 中的用户共享资源,则必须在这两个林之间创建双向可传递信任。
如果在两个林之间创建单向林信任,则受信任林的成员可以利用信任林中的资源。 但是,信托只以一个方向运行。
例如,在林 1(受信任林)与林 2(信任林)之间创建单向林信任时:
- 林 1 的成员可以访问林 2 中的资源。
- 林 2 的成员不能使用同一信任访问林 1 中的资源。
重要
Microsoft Entra 域服务支持多个方向的林信任。
森林信托要求
需要确认你拥有正确的域名系统 (DNS) 基础结构,然后才能创建林信任。 仅当以下 DNS 配置之一可用时,才能创建林信任:
有一个根 DNS 服务器是两个林 DNS 命名空间的根 DNS 服务器 - 根区域包含每个 DNS 命名空间的委派,所有 DNS 服务器的根提示都包括根 DNS 服务器。
如果没有共享的根 DNS 服务器,并且每个林 DNS 命名空间中的根 DNS 服务器使用 DNS 条件转发器,让每个 DNS 命名空间路由对其他命名空间中名称的查询。
重要
任何具有信任关系的 Microsoft Entra 域服务林都必须使用此 DNS 配置。 托管森林 DNS 命名空间以外的 DNS 命名空间不是 Microsoft Entra 域服务的一项功能。 条件转发器是适当的配置。
如果没有共享的根 DNS 服务器,并且每个林 DNS 命名空间中的根 DNS 服务器使用 DNS 辅助区域,让每个 DNS 命名空间路由对其他命名空间中名称的查询。
若要在 AD DS 中创建林信任,你必须是(林根域中的)“域管理员”组或 Active Directory 中的“企业管理员”组的成员。 为每个信任分配了一个密码,两个林中的管理员都必须知道这个密码。 两个林中的“企业管理员”成员可以同时在这两个林中创建信任,在这种情况下,会自动为这两个林生成并写入随机加密的密码。
托管域林支持多达五个到本地林的单向出站林信任。 Microsoft Entra 域服务的出站林信任在 Microsoft Entra 管理中心创建。 拥有以前在本地 Active Directory 中记录的特权的用户必须配置传入林信任。
信任进程和交互
许多域间和林间事务依赖于域信任或林信任来完成各种任务。 本部分介绍跨信任访问资源并评估身份验证引用时发生的过程和交互。
身份验证引荐处理概述
当身份验证请求被引用到域时,该域中的域控制器必须确定是否存在与请求来自的域的信任关系。 信任的方向以及信任是可传递的还是非传输性的,还必须在对用户进行身份验证以访问域中的资源之前确定。 受信任域之间发生的身份验证过程因使用的身份验证协议而异。 Kerberos V5 和 NTLM 协议会以不同方式处理向域进行身份验证的引用
Kerberos V5 引用处理
Kerberos V5 身份验证协议依赖于域控制器上的 Net Logon 服务,以获取客户端身份验证和授权信息。 Kerberos 协议连接到在线密钥发行中心 (KDC) 和 Active Directory 帐户存储以获取会话票证。
Kerberos 协议还对跨领域票证授予服务(TGS)使用信任,并跨安全通道验证特权属性证书(PAC)。 Kerberos 协议仅对非 Windows 品牌操作系统 Kerberos 领域(如 MIT Kerberos 领域)执行跨领域身份验证,无需与 Net Logon 服务交互。
如果客户端使用 Kerberos V5 进行身份验证,它会请求从帐户域中域控制器到目标域中服务器的票证。 Kerberos KDC 充当客户端和服务器之间的受信任中介,并提供一个会话密钥,使双方能够相互进行身份验证。 如果目标域与当前域不同,KDC 会遵循逻辑过程来确定是否可以引用身份验证请求:
被请求的服务器所在的域是否直接信任当前域?
- 如果是,则向客户端发送对被请求域的引用。
- 如果没有,请转到下一步。
当前域与信任路径上的下一个域之间是否存在可传递信任关系?
- 如果是,请将客户推荐到信任路径的下一个领域。
- 如果没有,请向客户端发送登录被拒绝消息。
NTLM 引用处理
NTLM 身份验证协议依赖于域控制器上的 Net Logon 服务,以获取客户端身份验证和授权信息。 此协议对不使用 Kerberos 身份验证的客户端进行身份验证。 NTLM 使用信任在域之间传递身份验证请求。
如果客户端使用 NTLM 进行身份验证,则身份验证的初始请求将直接从客户端转到目标域中的资源服务器。 此服务器会创建质询待客户端响应。 然后,服务器将用户的响应发送到其计算机帐户域中的域控制器。 此域控制器根据其安全帐户数据库检查用户帐户。
如果数据库中不存在该帐户,域控制器会使用以下逻辑确定是执行直通身份验证、转发请求还是拒绝请求:
当前域是否与用户的域有直接信任关系?
- 如果是,则域控制器会将客户端的凭据发送到用户域中的域控制器进行直通身份验证。
- 如果没有,请转到下一步。
现有域名与用户域名之间是否具有传递信任关系?
- 如果是,请将身份验证请求传递到信任路径中的下一个域。 此域控制器通过根据它自己的安全帐户数据库检查用户的凭据来重复此过程。
- 如果没有,请向客户端发送登录被拒绝的消息。
对于通过林信任实现身份验证的请求的基于 Kerberos 的处理
当两个林通过林信任连接时,可以在林间路由使用 Kerberos V5 或 NTLM 协议发出的身份验证请求,以提供对这两个林中资源的访问权限。
第一次建立林信任时,每个林都会收集其伙伴林中的所有受信任命名空间,并将信息存储在受信任的域对象中。 受信任的命名空间包括在另一个林中使用的域树名称、用户主体名称 (UPN) 后缀、服务主体名称 (SPN) 后缀和安全 ID (SID) 命名空间。 会将 TDO 对象复制到全局目录。
注意
不支持未加考究的备用 UPN 后缀。 如果本地域使用与域服务相同的 UPN 后缀,则登录必须使用 sAMAccountName。
必须先将资源计算机的服务主体名称 (SPN) 解析为另一个林中的位置,身份验证协议才能遵循林信任路径。 SPN 可以是以下名称之一:
- 主机的 DNS 名称。
- 域的 DNS 名称。
- 服务连接点对象的可分辨名称。
当一个林中的工作站尝试访问另一个林中的资源计算机上的数据时,Kerberos 身份验证过程会联系域控制器,以获取到资源计算机 SPN 的服务票证。 一旦域控制器查询全局目录并确定该 SPN 与域控制器不在同一个林中,域控制器会将对其父域的引用发送回工作站。 此时,工作站会查询服务票证的父域,并继续跟踪引荐链,直到到达资源所在的域。
下图和步骤详细说明了运行 Windows 的计算机尝试从另一个林中的计算机访问资源时使用的 Kerberos 身份验证过程。
User1 使用来自 europe.tailspintoys.com 域的凭据登录到 Workstation1。 然后,用户尝试访问位于 usa.wingtiptoys.com 林中的 FileServer1 上的共享资源。
Workstation1 联系其域 ChildDC1 中域控制器上的 Kerberos KDC,并为 FileServer1 SPN 请求服务票证。
ChildDC1 在其域数据库中找不到该 SPN,并查询全局目录以了解 tailspintoys.com 林中是否有任何域包含此 SPN。 由于全局目录仅限于其自己的林,因此未找到该 SPN。
然后,全局目录将检查其数据库,查找与其林建立的任何林信任的相关信息。 如果找到,它会将林信任受信任的域对象 (TDO) 中列出的名称后缀与目标 SPN 的后缀进行比较,以查找匹配项。 找到匹配项后,全局目录会反过来向 ChildDC1 提供路由提示。
路由提示有助于将身份验证请求定向到目标林。 仅当所有传统身份验证通道(例如本地域控制器和全局编录)无法找到 SPN 时,才使用提示。
ChildDC1 反过来向 Workstation1 发送对其父域的引用。
Workstation1 联系 ForestRootDC1(其父域)中的域控制器,以获取对 wingtiptoys.com 林的林根域中域控制器 (ForestRootDC2) 的引用。
Workstation1 联系 wingtiptoys.com 林中的 ForestRootDC2,以获取用于所请求服务的服务票证。
ForestRootDC2 联系其全局目录以查找 SPN,全局目录查找 SPN 的匹配项,并将其发送回 ForestRootDC2。
然后,ForestRootDC2 将对 usa.wingtiptoys.com 的引用发送回 Workstation1。
Workstation1 联系 ChildDC2 上的 KDC,并协商 User1 的票证,以获得对 FileServer1 的访问权限。
Workstation1 具有服务票证后,它将服务票证发送到 FileServer1,该文件读取 User1的安全凭据并相应地构造访问令牌。
受信任的域对象
存储在其域中的“系统”容器中的受信任的域对象 (TDO) 表示组织内的每个域或林信任。
TDO 内容
TDO 中包含的信息会因其是由域信任还是森林信任创建而有所不同。
创建域信任时,TDO 中表示 DNS 域名、域 SID、信任类型、信任传递性和互惠域名等属性。 林信任 TDO 还存储其他属性,用于标识来自伙伴林的所有受信任的命名空间。 这些属性包括域名、用户主体名称(UPN)后缀、服务主体名称(SPN)后缀以及安全 ID (SID) 命名空间。
由于信任以 TDO 的形式存储在 Active Directory 中,因此林中的所有域都了解整个林中已建立的信任关系。 类似地,当两个或更多林通过林信任联接在一起时,每个林中的林根域都将了解受信任的林中所有域之间的信任关系。
TDO 密码更改
信任关系中的两个域共享密码,密码存储在 Active Directory 中的 TDO 对象中。 在帐户维护过程中,信任域控制器每隔 30 天更改存储在 TDO 中的密码。 由于所有双向信任实际上是两个方向相反的单向信任,因此双向信任的过程需要重复两次。
信任具有信任和受信任端。 在受信任的端,任何可写域控制器都可用于该过程。 在信任端,PDC 模拟器执行密码更改。
若要更改密码,域控制器将完成以下过程:
信任域中的主域控制器 (PDC) 模拟器会创建新的密码。 受信任域中的域控制器永远不会启动密码更改。 它始终由受信任的域 PDC 模拟器启动。
信任域中的 PDC 模拟器将 TDO 对象的 OldPassword 字段设置为当前 NewPassword 字段。
信任域中的 PDC 模拟器将 TDO 对象的 NewPassword 字段设置为新密码。 如果受信任的域中的域控制器无法收到更改,或者在发出使用新信任密码的请求之前未复制更改,则保留以前的密码副本可以还原为旧密码。
信任域中的 PDC 模拟器对受信任域中的域控制器进行远程调用,要求将信任帐户上的密码设置为新密码。
受信任域中的域控制器将信任密码更改为新密码。
信任关系的每一端,更新将被复制到域中的其他域控制器。 在信任域中,更改会触发受信任域对象的紧急复制。
密码现已在两个域控制器上更改。 正常复制会将 TDO 对象分发到域中的其他域控制器。 但是,信任域中的域控制器可能会更改密码而未成功更新受信任的域中的域控制器。 这种情况可能会发生,因为无法建立处理密码更改所需的安全通道。 此外,受信任的域中的域控制器可能在过程中某个时间点不可用,并且可能无法收到更新后的密码。
若要处理密码更改未成功通信的情况,信任域中的域控制器永远不会更改新密码,除非它已使用新密码成功进行身份验证(设置安全通道)。 此行为是为什么旧密码和新密码都保存在信任域的 TDO 对象中。
在使用密码进行身份验证成功之前,不会完成密码更改。 旧存储的密码可用于安全通道,直到受信任的域中的域控制器收到新密码,从而启用不间断的服务。
如果使用新密码进行身份验证失败,因为密码无效,信任域控制器会尝试使用旧密码进行身份验证。 如果它使用旧密码成功进行身份验证,则会在 15 分钟内恢复密码更改过程。
信任密码更新需要在 30 天内复制到信任双方的域控制器。 如果在 30 天后更改了信任密码,并且域控制器只有 N-2 密码,则无法从信任端使用信任,并且无法在受信任端创建安全通道。
信任使用的网络端口
由于必须跨各种网络边界部署信任,因此它们可能必须跨越一个或多个防火墙。 在这种情况下,可以跨防火墙隧道信任流量,或在防火墙中打开特定端口,以允许流量通过。
重要
Active Directory 域服务不支持将 Active Directory RPC 流量限制为特定端口。
请参阅 Microsoft 支持文章如何为 Active Directory 域和信任配置防火墙的“Windows Server 2008 及更高版本”部分,了解林信任所需的端口。
支持服务和工具
为了支持信任和身份验证,使用一些其他功能和管理工具。
Net Logon
Net Logon 服务维护从基于 Windows 的计算机到域控制器的安全通道。 它还在以下与信任相关的进程中使用:
信任设置和管理 - Net Logon 可帮助维护信任密码、收集信任信息,并通过与 LSA 进程和 TDO 交互来验证信任。
对于林信任,信任信息包括林信任信息 (FTInfo) 记录,其中包含受信任的林声明要管理的命名空间集,使用指示每个声明是否受信任林信任的字段进行批注。
身份验证 – 通过安全通道向域控制器提供用户凭据,并返回用户的域 SID 和用户权限。
域控制器位置 – 有助于定位和查找域内或跨域的域控制器。
直通验证 – 其他域中用户的凭据由 Net Logon 处理。 当信任域需要验证用户的标识时,它会通过 Net Logon 将用户的凭据传递到受信任的域进行验证。
特权属性证书 (PAC) 验证 – 使用 Kerberos 协议进行身份验证的服务器需要在服务票证中验证 PAC 时,它会将安全通道中的 PAC 发送到其域控制器进行验证。
本地安全机构
本地安全机构(LSA)是一个受保护的子系统,用于维护系统上本地安全的各个方面的相关信息。 LSA 提供用于在名称和标识符之间进行转换的各种服务,统称本地安全策略。
LSA 安全子系统在内核模式和用户模式下提供服务,用于验证对对象的访问、检查用户特权和生成审核消息。 LSA 负责检查受信任或不受信任的域中的服务提供的所有会话票证的有效性。
管理工具
管理员可以使用 Active Directory 域和信任、Netdom 和 Nltest 来公开、创建、删除或修改信任。
- Active Directory 域和信任是一个 Microsoft 管理控制台 (MMC),用于管理域信任、域和林功能级别以及用户主体名称后缀。
- 可以使用 Netdom 和 Nltest 命令行工具查找、显示、创建和管理信任。 这些工具直接与域控制器上的 LSA 机构通信。
后续步骤
若要开始使用林信任创建托管域,请参阅创建和配置域服务托管域。 随后可以创建到本地域的出站林信任。