Configurare la delega vincolata Kerberos (KCD) in un dominio gestitoConfigure kerberos constrained delegation (KCD) on a managed domain

Molte applicazioni devono accedere alle risorse nel contesto dell'utente.Many applications need to access resources in the context of the user. Active Directory supporta un meccanismo denominato delega Kerberos che consente questo caso d'uso.Active Directory supports a mechanism called Kerberos delegation, which enables this use-case. È anche possibile limitare la delega in modo che siano accessibili solo risorse specifiche nel contesto dell'utente.Further, you can restrict delegation so that only specific resources can be accessed in the context of the user. I domini gestiti di Azure AD Domain Services sono diversi dai domini di Active Directory tradizionali perché sono bloccati in modo più sicuro.Azure AD Domain Services managed domains are different from traditional Active Directory domains since they are more securely locked down.

Questo articolo illustra come configurare la delega vincolata Kerberos in un dominio gestito di Azure AD Domain Services.This article shows you how to configure kerberos constrained delegation on an Azure AD Domain Services managed domain.

Delega vincolata Kerberos (KCD)Kerberos constrained delegation (KCD)

La delega Kerberos consente a un account di rappresentare un'altra entità di sicurezza, ad esempio un utente, per accedere alle risorse.Kerberos delegation enables an account to impersonate another security principal (such as a user) to access resources. Si consideri un'applicazione Web che accede a un'API Web back-end nel contesto di un utente.Consider a web application that accesses a back-end web API in the context of a user. In questo esempio l'applicazione Web, in esecuzione nel contesto di un account del servizio o di un account del computer, rappresenta l'utente durante l'accesso alla risorsa, ovvero l'API Web back-end.In this example, the web application (running in the context of a service account or a computer/machine account) impersonates the user when accessing the resource (back-end web API). La delega Kerberos non è sicura perché non limita le risorse a cui può accedere l'account di rappresentazione nel contesto dell'utente.Kerberos delegation is insecure since it does not restrict the resources the impersonating account can access in the context of the user.

La delega vincolata Kerberos consente di limitare le risorse o i servizi in cui il server specificato può agire per conto di un utente.Kerberos constrained delegation (KCD) restricts the services/resources to which the specified server can act on the behalf of a user. La delega vincolata Kerberos tradizionale richiede privilegi di amministratore di dominio per configurare un account di dominio per un servizio e limita l'account a un dominio singolo.Traditional KCD requires domain administrator privileges to configure a domain account for a service and it restricts the account to a single domain.

Alla delega vincolata Kerberos tradizionale sono anche associati alcuni problemi.Traditional KCD also has a few issues associated with it. Nei sistemi operativi precedenti, se l'amministratore di dominio configurava la delega vincolata Kerberos basata sull'account per il servizio, l'amministratore del servizio non aveva modo di sapere quali servizi front-end delegati ai servizi risorsa fossero di sua proprietà.In earlier operating systems, if the domain administrator configured account based KCD for the service, the service administrator had no useful way to know which front-end services delegated to the resource services they owned. Qualsiasi servizio front-end che potesse delegare a un servizio risorsa rappresentava un potenziale punto debole.And any front-end service that could delegate to a resource service represented a potential attack point. Se un server che ospitava un servizio front-end era compromesso ed era configurato per la delega ai servizi risorsa, anche questi ultimi potevano essere compromessi.If a server that hosted a front-end service was compromised, and it was configured to delegate to resource services, the resource services could also be compromised.

Nota

In un dominio gestito di Azure AD Domain Services non si hanno privilegi di amministratore di dominio.On an Azure AD Domain Services managed domain, you do not have domain administrator privileges. Di conseguenza, non è possibile configurare la delega vincolata Kerberos tradizionale in un dominio gestito.Therefore, traditional KCD cannot be configured on a managed domain. Usare la delega vincolata Kerberos basata su risorse, come illustrato in questo articolo.Use resource-based KCD as described in this article. Questo meccanismo è anche più sicuro.This mechanism is also more secure.

Delega vincolata Kerberos basata sulle risorseResource-based kerberos constrained delegation

A partire da Windows Server 2012 gli amministratori dei servizi hanno la possibilità di configurare la delega vincolata per il servizio.From Windows Server 2012 onwards, service administrators gain the ability to configure constrained delegation for their service. In questo modello l'amministratore del servizio back-end può consentire o negare i servizi front-end usando la delega vincolata.In this model, the back-end service administrator can allow or deny specific front-end services from using KCD. Questo modello è noto come delega vincolata Kerberos basata sulle risorse.This model is known as resource-based kerberos constrained delegation.

È possibile configurare la delega vincolata Kerberos basata sulle risorse usando PowerShell.Resource-based KCD is configured using PowerShell. Usare i cmdlet Set-ADComputer o Set-ADUser, a seconda che l'account di rappresentazione sia un account del computer oppure un account utente o un account del servizio.You use the Set-ADComputer or Set-ADUser cmdlets, depending on whether the impersonating account is a computer account or a user account/service account.

Configurare la delega vincolata Kerberos basata sulle risorse per un account del computer in un dominio gestitoConfigure resource-based KCD for a computer account on a managed domain

Si prenda ad esempio un'app Web in esecuzione nel computer "contoso100-webapp.contoso100.com".Assume you have a web app running on the computer 'contoso100-webapp.contoso100.com'. L'app deve accedere alla risorsa, ovvero un'API Web in esecuzione su "contoso100-api.contoso100.com", nel contesto degli utenti del dominio.It needs to access the resource (a web API running on 'contoso100-api.contoso100.com') in the context of domain users. Di seguito viene illustrato come impostare la delega vincolata Kerberos basata su risorse per questo scenario.Here's how you would set up resource-based KCD for this scenario.

$ImpersonatingAccount = Get-ADComputer -Identity contoso100-webapp.contoso100.com
Set-ADComputer contoso100-api.contoso100.com -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount

Configurare la delega vincolata Kerberos basata sulle risorse per un account utente in un dominio gestitoConfigure resource-based KCD for a user account on a managed domain

Si prenda ad esempio un'app Web in esecuzione come account del servizio "appsvc". L'app deve accedere alla risorsa, ovvero un'API Web in esecuzione come account del servizio "backendsvc", nel contesto degli utenti del dominio.Assume you have a web app running as a service account 'appsvc' and it needs to access the resource (a web API running as a service account - 'backendsvc') in the context of domain users. Di seguito viene illustrato come impostare la delega vincolata Kerberos basata su risorse per questo scenario.Here's how you would set up resource-based KCD for this scenario.

$ImpersonatingAccount = Get-ADUser -Identity appsvc
Set-ADUser backendsvc -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount