Constrained Delegation
Constrained delegation is an Active Directory feature that lets a service act on behalf of a user, but only toward a specific, approved set of other services. Instead of allowing a service to impersonate users to anything on the network, it limits where that service can act, creating a trust boundary. This makes it a more restricted alternative to unconstrained delegation.
Constrained delegation (Kerberos Constrained Delegation, KCD) is a Kerberos-based delegation mechanism in Active Directory that permits a configured service to impersonate a user and obtain service tickets to a defined list of downstream services, rather than to any service on the network. Per Microsoft's documentation, it lets service administrators specify and enforce application trust boundaries by limiting the target services to which an application service can act on behalf of a user. Configuration typically involves specifying the allowed target SPNs on the delegating service account, and profiles such as Service for User (S4U), including Kerberos-only constrained delegation, govern how the service acquires tickets on the user's behalf. Note that constrained delegation carries security implications: as reflected in the offensive-security sources, compromise of a service account configured for constrained delegation can allow an attacker to impersonate users to the permitted target services. This entry concerns the AD/Kerberos delegation feature; resource-based constrained delegation (RBCD) and delegation semantics in other protocols are out of scope here.
Why it matters
Delegation is a necessary capability in multi-tier applications, where a front-end service must access back-end resources on behalf of an authenticated user rather than under its own identity. The risk is in how broadly that delegation is scoped. Unconstrained delegation permits a service to impersonate a user toward any service on the network, which effectively hands the delegating service the ability to reuse a user's identity anywhere. Constrained delegation exists to narrow that blast radius: per Microsoft's documentation, it lets service administrators specify and enforce application trust boundaries by limiting the target services to which an application service can act on behalf of a user.
That scoping matters because it turns a security control into an explicit, auditable boundary rather than an open-ended grant. Even so, constrained delegation is not risk-free. As reflected in the offensive-security sources, if a service account configured for constrained delegation is compromised, for example, by an attacker who obtains SYSTEM-level privileges on a machine account configured for delegation, that attacker can impersonate users to the permitted target services. In other words, the trust boundary limits where abuse can occur, but compromise of the delegating account still exposes everything within that boundary.
For architects and administrators, this makes the precise configuration of allowed target services a security-sensitive decision. The value of constrained delegation depends entirely on keeping the list of permitted downstream services as tight as the application actually requires, and on protecting the delegating service account itself, since it becomes a high-value target once configured for delegation.
Who it's relevant to
Inside KCD
Common questions
Answers to the questions practitioners most commonly ask about KCD.
