Yönetilen bir etki alanında Kerberos kısıtlanmış temsilcisini (KCD) yapılandırmaConfigure Kerberos constrained delegation (KCD) on a managed domain

Birçok uygulamanın, kullanıcı bağlamında kaynaklara erişmesi gerekir.Many applications need to access resources in the context of the user. Active Directory, bu kullanım örneğini sağlayan Kerberos temsili adlı bir mekanizmayı destekler.Active Directory supports a mechanism called Kerberos delegation, which enables this use-case. Ayrıca, kullanıcı bağlamında yalnızca belirli kaynaklara erişilebilmesi için temsilciyi kısıtlayabilirsiniz.Further, you can restrict delegation so that only specific resources can be accessed in the context of the user. Azure AD Domain Services yönetilen etki alanları, daha güvenli bir şekilde kilitlendiğinden geleneksel Active Directory etki alanlarından farklıdır.Azure AD Domain Services managed domains are different from traditional Active Directory domains since they are more securely locked down.

Bu makalede, Azure AD Domain Services yönetilen bir etki alanında Kerberos kısıtlanmış temsilciyi nasıl yapılandıracağınız gösterilir.This article shows you how to configure Kerberos constrained delegation on an Azure AD Domain Services managed domain.

Önemli

Bu makaledeki görevleri tamamlamadan önce Azure AD Domain Services için Parola karması eşitlemesini etkinleştirin.Enable password hash synchronization to Azure AD Domain Services, before you complete the tasks in this article.

Azure AD dizininizde bulunan kullanıcıların türüne bağlı olarak aşağıdaki yönergeleri izleyin.Follow the instructions below, depending on the type of users in your Azure AD directory. Azure AD dizininizde yalnızca bulutta ve eşitlenmiş Kullanıcı hesaplarının bir karışımına sahipseniz her iki yönerge kümesini de doldurun.Complete both sets of instructions if you have a mix of cloud-only and synced user accounts in your Azure AD directory. Bir B2B Konuk hesabı (örneğin, izin verdiğimiz farklı bir kimlik sağlayıcısından Gmail veya MSA) kullanmaya çalışıyorsanız aşağıdaki işlemleri gerçekleştiremeyebilirsiniz, çünkü bu kullanıcılara yönetilen etki alanı ile eşitlenen bu kullanıcılar için parola yok. , dizininde Konuk hesaplardır.You may not be able to carry out the following operations in case you are trying to use a B2B Guest account (example , your gmail or MSA from a different Identity provider which we allow) because we do not have the password for these users synced to managed domain as these are guest accounts in the directory. Bu hesaplarla ilgili olarak, parolaları da dahil olmak üzere tüm bilgiler Azure AD 'nin dışında ve bu bilgiler Azure AD 'de olmadığından, yönetilen etki alanıyla eşitlenmeyebilir.The complete information about these accounts including their passwords would be outside of Azure AD and as this information is not in Azure AD hence it does not even get synced to the managed domain.

Kerberos kısıtlanmış temsili (KCD)Kerberos constrained delegation (KCD)

Kerberos temsili, bir hesabın kaynaklara erişmek için başka bir güvenlik sorumlusunun (Kullanıcı gibi) taklit etmesine olanak sağlar.Kerberos delegation enables an account to impersonate another security principal (such as a user) to access resources. Bir kullanıcı bağlamında arka uç Web API 'sine erişen bir Web uygulaması düşünün.Consider a web application that accesses a back-end web API in the context of a user. Bu örnekte, (bir hizmet hesabı veya bilgisayar/makine hesabı bağlamında çalışan) Web uygulaması, kaynağa erişirken (arka uç Web API 'SI) kullanıcıyı taklit eder.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). Kimliğe bürünme hesabının kullanıcı bağlamında erişebileceği kaynakları kısıtlayamadığından, Kerberos temsili güvenli değildir.Kerberos delegation is insecure since it does not restrict the resources the impersonating account can access in the context of the user.

Kerberos kısıtlanmış temsili (KCD), belirtilen sunucunun bir kullanıcı adına davranabileceği Hizmetleri/kaynakları kısıtlar.Kerberos constrained delegation (KCD) restricts the services/resources to which the specified server can act on the behalf of a user. Geleneksel KCD, bir hizmet için etki alanı hesabı yapılandırmak için etki alanı yöneticisi ayrıcalıkları gerektirir ve hesabı tek bir etki alanına kısıtlar.Traditional KCD requires domain administrator privileges to configure a domain account for a service and it restricts the account to a single domain.

Geleneksel KCD ile ilişkili bazı sorunlar da vardır.Traditional KCD also has a few issues associated with it. Önceki işletim sistemlerinde, etki alanı Yöneticisi hizmet için hesap tabanlı KCD 'yi yapılandırdıysa, hizmet yöneticisi, sahip oldukları kaynak hizmetleri için hangi ön uç hizmetlerin temsilci olarak olduğunu bilmemiz için kullanışlı bir yönteme sahip değildir.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. Ve bir kaynak hizmetine temsilci olabilecek bir ön uç hizmeti olası bir saldırı noktasını temsil eder.And any front-end service that could delegate to a resource service represented a potential attack point. Ön uç hizmeti barındırılan bir sunucunun güvenliği tehlikeye girerse ve kaynak hizmetleri 'ne temsilci olarak yapılandırıldıysa, kaynak hizmetleri de tehlikeye girebilir.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.

Not

Azure AD Domain Services yönetilen bir etki alanında etki alanı yöneticisi ayrıcalıklarına sahip değilsiniz.On an Azure AD Domain Services managed domain, you do not have domain administrator privileges. Bu nedenle, yönetilen bir etki alanında geleneksel hesap tabanlı KCD yapılandırılamaz.Therefore, traditional account-based KCD cannot be configured on a managed domain. Bu makalede açıklandığı gibi kaynak tabanlı KCD 'YI kullanın.Use resource-based KCD as described in this article. Bu mekanizma da daha güvenlidir.This mechanism is also more secure.

Kaynak tabanlı KCDResource-based KCD

Windows Server 2012 ve sonraki sürümlerde, hizmet yöneticileri, Hizmetleri için kısıtlanmış temsilciyi yapılandırma olanağı elde edebilir.From Windows Server 2012 onwards, service administrators gain the ability to configure constrained delegation for their service. Bu modelde, arka uç hizmet yöneticisi, belirli ön uç hizmetlerinin KCD kullanmasını sağlayabilir veya reddedebilir.In this model, the back-end service administrator can allow or deny specific front-end services from using KCD. Bu model kaynak tabanlı KCDolarak bilinir.This model is known as resource-based KCD.

Kaynak tabanlı KCD, PowerShell kullanılarak yapılandırılır.Resource-based KCD is configured using PowerShell. Kimliğe bürünme hesabının Set-ADComputer bir Set-ADUser bilgisayar hesabı mı yoksa bir kullanıcı hesabı/hizmet hesabı mı olduğuna bağlı olarak, veya cmdlet 'lerini kullanabilirsiniz.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.

Yönetilen bir etki alanındaki bilgisayar hesabı için kaynak tabanlı KCD 'yi yapılandırmaConfigure resource-based KCD for a computer account on a managed domain

' Contoso-webapp.contoso.com ' bilgisayarında çalışan bir Web uygulamanız olduğunu varsayalım.Assume you have a web app running on the computer 'contoso-webapp.contoso.com'. Etki alanı kullanıcıları bağlamında kaynağa (' contoso-api.contoso.com ' üzerinde çalışan bir Web API 'SI) erişmesi gerekir.It needs to access the resource (a web API running on 'contoso-api.contoso.com') in the context of domain users. Bu senaryo için kaynak tabanlı KCD 'YI nasıl ayarlayabileceğinizi aşağıda bulabilirsiniz:Here's how you would set up resource-based KCD for this scenario:

  1. Özel BIR OU oluşturun.Create a custom OU. Bu özel OU 'yu yönetilen etki alanındaki kullanıcılara yönetmek için izinler atayabilirsiniz.You can delegate permissions to manage this custom OU to users within the managed domain.
  2. Hem sanal makineleri (Web uygulamasını çalıştıran bir Web uygulamasını ve Web API 'sini çalıştıran) yönetilen etki alanına ekleyin.Join both virtual machines (the one running the web app and the one running the web API) to the managed domain. Bu bilgisayar hesaplarını özel OU içinde oluşturun.Create these computer accounts within the custom OU.
  3. Şimdi, aşağıdaki PowerShell komutunu kullanarak kaynak tabanlı KCD 'yi yapılandırın:Now, configure resource-based KCD using the following PowerShell command:
$ImpersonatingAccount = Get-ADComputer -Identity contoso-webapp.contoso.com
Set-ADComputer contoso-api.contoso.com -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount

Not

Web uygulaması ve Web API 'sinin bilgisayar hesaplarının kaynak tabanlı KCD 'yi yapılandırma izninizin olduğu özel bir OU 'da olması gerekir.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. Yerleşik ' AAD DC Computers ' kapsayıcısında bir bilgisayar hesabı için kaynak tabanlı KCD 'yi yapılandıramazsınız.You cannot configure resource-based KCD for a computer account in the built-in 'AAD DC Computers' container.

Yönetilen bir etki alanında bir kullanıcı hesabı için kaynak tabanlı KCD 'yi yapılandırmaConfigure resource-based KCD for a user account on a managed domain

' Appsvc ' hizmet hesabı olarak çalışan bir Web uygulamanız olduğunu ve etki alanı kullanıcıları bağlamında kaynağa (hizmet hesabı olarak çalışan bir Web API 'SI ' backendsvc ') erişmesi gerektiğini varsayın.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. Bu senaryo için kaynak tabanlı KCD 'yi nasıl ayarlayabileceğinizi aşağıda bulabilirsiniz.Here's how you would set up resource-based KCD for this scenario.

  1. Özel BIR OU oluşturun.Create a custom OU. Bu özel OU 'yu yönetilen etki alanındaki kullanıcılara yönetmek için izinler atayabilirsiniz.You can delegate permissions to manage this custom OU to users within the managed domain.
  2. Arka uç Web API 'SI/kaynağını çalıştıran sanal makineyi yönetilen etki alanına ekleyin.Join the virtual machine running the backend web API/resource to the managed domain. Kendi bilgisayar hesabını özel OU içinde oluşturun.Create its computer account within the custom OU.
  3. Web uygulamasını özel OU içinde çalıştırmak için kullanılan hizmet hesabını (örneğin, ' appsvc ') oluşturun.Create the service account (for example, 'appsvc') used to run the web app within the custom OU.
  4. Şimdi, aşağıdaki PowerShell komutunu kullanarak kaynak tabanlı KCD 'yi yapılandırın:Now, configure resource-based KCD using the following PowerShell command:
$ImpersonatingAccount = Get-ADUser -Identity appsvc
Set-ADUser backendsvc -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount

Not

Arka uç Web API 'SI ve hizmet hesabının bilgisayar hesabının her ikisi de kaynak tabanlı KCD 'yi yapılandırma izninizin olduğu özel bir OU 'da olmalıdır.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. Yerleşik ' AAD DC Computers ' kapsayıcısında veya yerleşik ' AAD DC kullanıcıları ' kapsayıcısındaki kullanıcı hesaplarında, bir bilgisayar hesabı için kaynak tabanlı KCD 'yi yapılandıramazsınız.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. Bu nedenle, kaynak tabanlı KCD 'yi ayarlamak için Azure AD 'den eşitlenen Kullanıcı hesaplarını kullanamazsınız.Thus, you cannot use user accounts synchronized from Azure AD to set up resource-based KCD.