Configurare la delega vincolata Kerberos 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.

Importante

Abilitare la sincronizzazione dell'hash password ad Azure Active Directory Domain Services, prima di aver completato le attività in questo articolo.Enable password hash synchronization to Azure AD Domain Services, before you complete the tasks in this article.

Seguire le istruzioni seguenti, a seconda del tipo di utenti in Azure Active Directory.Follow the instructions below, depending on the type of users in your Azure AD directory. Se in Azure Active Directory è presente una combinazione di account utente solo cloud e sincronizzati, completare entrambi i set di istruzioni.Complete both sets of instructions if you have a mix of cloud-only and synced user accounts in your Azure AD directory.

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 basata su account in un dominio gestito.Therefore, traditional account-based 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 su risorseResource-based KCD

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 su risorse.This model is known as resource-based KCD.

È possibile configurare la delega vincolata Kerberos basata sulle risorse usando PowerShell.Resource-based KCD is configured using PowerShell. Usare il 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 configurare la delega vincolata Kerberos basata su risorse per questo scenario:Here's how you would set up resource-based KCD for this scenario:

  1. Creare un'unità organizzativa personalizzata.Create a custom OU. È possibile delegare le autorizzazioni per gestire questa unità organizzativa agli utenti appartenenti al dominio gestito.You can delegate permissions to manage this custom OU to users within the managed domain.
  2. Aggiungere le due macchine virtuali, quella che esegue l'app Web e quella che esegue l'API Web, al dominio gestito.Join both virtual machines (the one running the web app and the one running the web API) to the managed domain. Creare gli account del computer all'interno dell'unità organizzativa personalizzata.Create these computer accounts within the custom OU.
  3. Configurare ora la delega vincolata Kerberos basata su risorse usando il comando PowerShell seguente:Now, configure resource-based KCD using the following PowerShell command:
$ImpersonatingAccount = Get-ADComputer -Identity contoso100-webapp.contoso100.com
Set-ADComputer contoso100-api.contoso100.com -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount

Nota

Gli account del computer per l'app Web e l'API Web devono essere creati in un'unità organizzativa in cui si hanno le autorizzazioni necessarie per configurare la delega vincolata Kerberos basata su risorse.The computer accounts for the web app and the web API need to be in a custom OU where you have permissions to configure resource-based KCD. Non è possibile configurare la delega vincolata Kerberos basata su risorse per un account del computer nel contenitore AAD DC Computers predefinito.You cannot configure resource-based KCD for a computer account in the built-in 'AAD DC Computers' container.

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.

  1. Creare un'unità organizzativa personalizzata.Create a custom OU. È possibile delegare le autorizzazioni per gestire questa unità organizzativa agli utenti appartenenti al dominio gestito.You can delegate permissions to manage this custom OU to users within the managed domain.
  2. Aggiungere la macchina virtuale che esegue l'API Web back-end/la risorsa al dominio gestito.Join the virtual machine running the backend web API/resource to the managed domain. Creare l'account del computer all'interno dell'unità organizzativa personalizzata.Create its computer account within the custom OU.
  3. Creare l'account del servizio, ad esempio appsvc, usato per eseguire l'app Web all'interno dell'unità organizzativa personalizzata.Create the service account (for example, 'appsvc') used to run the web app within the custom OU.
  4. Configurare ora la delega vincolata Kerberos basata su risorse usando il comando PowerShell seguente:Now, configure resource-based KCD using the following PowerShell command:
$ImpersonatingAccount = Get-ADUser -Identity appsvc
Set-ADUser backendsvc -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount

Nota

L'account del computer per l'API Web back-end e l'account del servizio devono essere entrambi creati in un'unità organizzativa in cui si hanno le autorizzazioni necessarie per configurare la delega vincolata Kerberos basata su risorse.Both the computer account for the backend web API and the service account need to be in a custom OU where you have permissions to configure resource-based KCD. Non è possibile configurare la delega vincolata Kerberos basata su risorse per un account del computer nel contenitore AAD DC Computers predefinito o per gli account utente nel contenitore AAD DC Users predefinito.You cannot configure resource-based KCD for a computer account in the built-in 'AAD DC Computers' container or for user accounts in the built-in 'AAD DC Users' container. Di conseguenza, non è possibile usare account utente sincronizzati da Azure AD per configurare la delega vincolata Kerberos basata su risorse.Thus, you cannot use user accounts synchronized from Azure AD to set up resource-based KCD.