管理対象ドメインで Kerberos の制約付き委任 (KCD) を構成するConfigure kerberos constrained delegation (KCD) on a managed domain

多くのアプリケーションは、ユーザーのコンテキストでリソースにアクセスする必要があります。Many applications need to access resources in the context of the user. Active Directory では、このユース ケースを可能にする、Kerberos の委任というメカニズムをサポートしています。Active Directory supports a mechanism called Kerberos delegation, which enables this use-case. さらに、特定のリソースのみにユーザーのコンテキストでアクセスできるように、委任を制限できます。Further, you can restrict delegation so that only specific resources can be accessed in the context of the user. Azure AD Domain Services の管理対象ドメインは、従来の Active Directory ドメインとは異なっており、より安全にロックダウンされています。Azure AD Domain Services managed domains are different from traditional Active Directory domains since they are more securely locked down.

この記事では、Azure AD Domain Services の管理対象ドメインで Kerberos の制約付き委任を構成する方法について説明します。This article shows you how to configure kerberos constrained delegation on an Azure AD Domain Services managed domain.

Kerberos の制約付き委任 (KCD)Kerberos constrained delegation (KCD)

Kerberos の委任は、あるアカウントが別のセキュリティ プリンシパル (ユーザーなど) に偽装してリソースにアクセスできるようにします。Kerberos delegation enables an account to impersonate another security principal (such as a user) to access resources. たとえば、ユーザーのコンテキストでバックエンド Web API にアクセスする Web アプリケーションがあるとします。Consider a web application that accesses a back-end web API in the context of a user. この例では、この Web アプリケーション (サービス アカウントまたはコンピューター/マシン アカウントのコンテキストで実行中) がリソース (バックエンド Web API) にアクセスする際に、ユーザーに偽装します。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). Kerberos の委任は、偽装する側のアカウントがユーザーのコンテキストでアクセスできるリソースを制限しないため、安全ではありません。Kerberos delegation is insecure since it does not restrict the resources the impersonating account can access in the context of the user.

Kerberos の制約付き委任 (KCD) は、指定したサーバーがユーザーの代理で操作できるサービス/リソースを制限します。Kerberos constrained delegation (KCD) restricts the services/resources to which the specified server can act on the behalf of a user. 従来の KCD では、サービスのドメイン アカウントを構成するのにドメイン管理者の特権が必要です。また、そのアカウントは 1 つのドメインに対して制限されます。Traditional KCD requires domain administrator privileges to configure a domain account for a service and it restricts the account to a single domain.

従来の KCD に関しては、問題もいくつかあります。Traditional KCD also has a few issues associated with it. 以前のオペレーティング システムでは、ドメイン管理者がサービスにアカウント ベースの KCD を構成した場合、サービス管理者には、所有しているリソース サービスに委任されるフロントエンド サービスを把握する便利な方法はありませんでした。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. また、リソース サービスに委任されるフロントエンド サービスは攻撃ポイントになる可能性がありました。And any front-end service that could delegate to a resource service represented a potential attack point. フロントエンド サービスをホストするサーバーが侵害され、そのフロントエンド サービスがリソース サービスに委任されるように構成されている場合、リソース サービスも侵害される可能性がありました。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.

注意

Azure AD Domain Services の管理対象ドメインでは、ドメイン管理者特権がありません。On an Azure AD Domain Services managed domain, you do not have domain administrator privileges. したがって、管理対象ドメインで従来の KCD を構成することはできませんTherefore, traditional KCD cannot be configured on a managed domain. この記事で説明されているように、リソースベースの KCD を使用してください。Use resource-based KCD as described in this article. このメカニズムの方が安全性も高くなります。This mechanism is also more secure.

リソースベースの Kerberos の制約付き委任Resource-based kerberos constrained delegation

Windows Server 2012 以降では、サービス管理者はサービスに制約付き委任を構成できるようになりました。From Windows Server 2012 onwards, service administrators gain the ability to configure constrained delegation for their service. このモデルでは、バックエンド サービス管理者は特定のフロントエンド サービスによる KCD の使用を許可または拒否できます。In this model, the back-end service administrator can allow or deny specific front-end services from using KCD. このモデルは、リソースベースの Kerberos の制約付き委任と呼ばれます。This model is known as resource-based kerberos constrained delegation.

リソースベースの KCD は PowerShell を使用して構成します。Resource-based KCD is configured using PowerShell. 偽装する側のアカウントがコンピューター アカウントであるか、ユーザー アカウント/サービス アカウントであるかによって、Set-ADComputer コマンドレットまたは Set-ADUser コマンドレットを使用します。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.

管理対象ドメインでコンピューター アカウントにリソースベースの KCD を構成するConfigure resource-based KCD for a computer account on a managed domain

コンピューター "contoso100-webapp.contoso100.com" で実行されている Web アプリがあるとします。Assume you have a web app running on the computer 'contoso100-webapp.contoso100.com'. この Web アプリは、ドメイン ユーザーのコンテキストでリソース ("contoso100-api.contoso100.com" で実行されている Web API) にアクセスする必要があります。It needs to access the resource (a web API running on 'contoso100-api.contoso100.com') in the context of domain users. このシナリオでリソースベースの KCD を設定する方法を次に示します。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

管理対象ドメインでユーザー アカウントにリソースベースの KCD を構成するConfigure resource-based KCD for a user account on a managed domain

サービス アカウント "appsvc" として実行されている Web アプリがあり、この Web アプリがドメイン ユーザーのコンテキストでリソース (サービス アカウント "backendsvc" として実行されている Web API) にアクセスする必要があるとします。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. このシナリオでリソースベースの KCD を設定する方法を次に示します。Here's how you would set up resource-based KCD for this scenario.

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