Kerberos 约束委派概述

适用范围:Windows Server 2022、Windows Server 2019、Windows Server 2016

本概述主题面向 IT 专业人员介绍 Windows Server 2012 R2 和 Windows Server 2012 中 Kerberos 约束委派的新功能。

功能描述

在 Windows Server 2003 中引入的 Kerberos 约束委派,为服务所使用的委派提供了一种更安全的形式。 配置了 Kerberos 约束委派后,它限制了指定服务器可代表用户执行的服务。 这需要域管理员权限来为服务配置一个域账户,并把该账户限制到单个域。 在如今的企业中,前端服务的设计并非旨在限制于仅与其域中的服务集成。

在域管理员配置了服务的早期操作系统中,服务管理员没有有效途径来了解哪些前端服务委派给了其拥有的资源服务。 并且可委派给资源服务的任何前端服务都代表了一个潜在的攻击点。 如果托管前端服务的服务器受到安全威胁,并且它已配置为委派给资源服务,则资源服务也会受到安全威胁。

在 Windows Server 2012 R2 和 Windows Server 2012 中,配置服务的约束委派的能力已从域管理员转移到服务管理员。 这样,后端服务管理员可以允许或拒绝前端服务。

有关 Windows Server 2003 中引入的约束委派的详细信息,请参阅 Kerberos 协议转换和约束委派

Kerberos 协议的 Windows Server 2012 R2 和 Windows Server 2012 实现包括专门用于约束委派的扩展。 Service for User to Proxy (S4U2Proxy) 允许服务使用其用户 Kerberos 服务票证从密钥发行中心 (KDC) 获得服务票证,以用于后端服务。 这些扩展允许将约束委派配置到后端服务帐户(可在另一域中)。 有关这些扩展的详细信息,请参阅 MSDN 库中的 [MS-SFU]:Kerberos 协议扩展:用户服务和约束委派协议规范

实际应用

约束委派让服务管理员能够通过限制应用程序服务可以代表用户的范围来指定和加强应用程序信任边界。 服务管理员可以配置哪些前端服务账户能委派到其后端服务。

通过支持 Windows Server 2012 R2 和 Windows Server 2012 中的跨域约束委派,可以将前端服务(例如 Microsoft Internet Security and Acceleration (ISA) Server、Microsoft Forefront Threat Management Gateway、Microsoft Exchange Outlook Web Access (OWA) 和 Microsoft SharePoint Server)配置为使用约束委派对其他域中的服务器进行身份验证。 这将通过使用现有的 Kerberos 基础结构来支持跨域的服务解决方案。 域管理员或服务管理员可以管理 Kerberos 约束委派。

跨域的基于资源的约束委派

Kerberos 约束委派可以在前端服务与资源服务不在同一域中时用于提供约束委派。 服务管理员能通过指定可以在资源服务账户对象上代表用户的前端服务域账户来配置新委派。

这一更改增添了什么价值?

通过支持跨域约束委派,可以将服务配置为使用约束委派(而不是非约束委派)来对其他域中的服务器进行身份验证。 这将通过使用现有的 Kerberos 基础结构来支持跨域的服务解决方案身份验证,而不需要信任委派到任何服务的前端服务。

这也会将服务器是否应信任委托标识源的决定从委派方域管理员转移到资源所有者。

工作原理的不同之处是什么?

基础协议中的更改允许跨域约束委派。 Kerberos 协议的 Windows Server 2012 R2 和 Windows Server 2012 实现包括 Service for User to Proxy (S4U2Proxy) 协议的扩展。 这组 Kerberos 协议扩展允许服务使用其用户 Kerberos 服务票证从密钥发行中心 (KDC) 获得服务票证,以用于后端服务。

有关这些扩展的实施信息,请参阅 MSDN 库中的 [MS-SFU]:Kerberos 协议扩展:用户服务和约束委派协议规范

有关使用与 Service for User (S4U) 扩展相比提早的票证授予票证 (TGT) 的 Kerberos 委派的基础消息队列的详细信息,请参阅 1.3.3 协议概述 部分(“[MS-SFU]:Kerberos 协议扩展:用户服务和约束委派协议规范”)。

基于资源的约束委派的安全影响

基于资源的约束委派将委派的控制权掌握在拥有所访问资源的管理员手中。 这取决于资源服务的属性,而不是受信任委派的服务。 因此,基于资源的约束委派不能使用以前控制协议转换的 Trusted-to-Authenticate-for-Delegation 位。 在执行基于资源的约束委派时,KDC 始终允许协议转换,就像设置了位一样。

由于 KDC 不限制协议转换,因此引入了两个新的已知 SID,以便向资源管理员提供此控制。 这些 SID 标识是否已发生协议转换,并且可以与标准访问控制列表一起使用,以根据需要授予或限制访问权限。

SID 说明
AUTHENTICATION_AUTHORITY_ASSERTED_IDENTITY
S-1-18-1
SID,表示客户端的标识由身份验证机构根据拥有客户端凭据的证明进行断言。
SERVICE_ASSERTED_IDENTITY
S-1-18-2
SID,表示客户端标识由服务进行断言。

后端服务可以使用标准 ACL 表达式来确定如何对用户进行身份验证。

如何配置基于资源的约束委派?

若要配置资源服务以允许代表用户的前端服务访问,则需要使用 Windows PowerShell cmdlet。

  • 若要检索主体列表,请使用带有 Properties PrincipalsAllowedToDelegateToAccount 参数的 Get-ADComputer、Get-ADServiceAccount 和 Get-ADUser cmdlet

  • 若要配置资源服务,请使用带有 PrincipalsAllowedToDelegateToAccount 参数的 New-ADComputer、New-ADServiceAccount、New-ADUser、Set-ADComputer、Set-ADServiceAccount 和 Set-ADUser cmdlet

软件要求

基于资源的约束委派只能在运行 Windows Server 2012 R2 和 Windows Server 2012 的域控制器上配置,但可以在混合模式林中应用。

必须将以下修补程序应用到用户帐户域中所有运行 Windows Server 2012 的域控制器,这些域控制器位于前端域和后端域(运行比 Windows Server 更早的操作系统版本)之间的引用路径上:基于资源的约束委派 KDC_ERR_POLICY 在具有基于 Windows Server 2008 R2 的域控制器的环境中失败 (https://support.microsoft.com/en-gb/help/2665790/resource-based-constrained-delegation-kdc-err-policy-failure-in-enviro)。