マネージド ドメインで 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.

重要

この記事のタスクを完了する前に、Azure AD Domain Services に対するパスワード ハッシュ同期を有効にしてください。Enable password hash synchronization to Azure AD Domain Services, before you complete the tasks in this article.

Azure AD ディレクトリにおけるユーザーの種類に応じて、以下の手順に従います。Follow the instructions below, depending on the type of users in your Azure AD directory. ご利用の Azure AD ディレクトリに、クラウド専用ユーザー アカウントと同期済みユーザー アカウントが混在している場合は、両方の手順を実行してください。Complete both sets of instructions if you have a mix of cloud-only and synced user accounts in your Azure AD directory.

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 account-based KCD cannot be configured on a managed domain. この記事で説明されているように、リソースベースの KCD を使用してください。Use resource-based KCD as described in this article. このメカニズムの方が安全性も高くなります。This mechanism is also more secure.

リソースベースの KCDResource-based KCD

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. このモデルは、リソースベースの KCDと呼ばれます。This model is known as resource-based KCD.

リソースベースの 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:

  1. カスタム OU を作成しますCreate a custom OU. このカスタム OU を管理する権限を、マネージド ドメイン内のユーザーに委任できます。You can delegate permissions to manage this custom OU to users within the managed domain.
  2. 両方の仮想マシン (Web アプリを実行しているものと、Web API を実行しているもの) をマネージド ドメインに参加させます。Join both virtual machines (the one running the web app and the one running the web API) to the managed domain. カスタム OU 内にこれらのコンピューター アカウントを作成します。Create these computer accounts within the custom OU.
  3. ここで、次の PowerShell コマンドを使用して、リソースベースの KCD を構成します。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

注意

Web アプリと Web API のコンピューター アカウントは、ユーザーがリソースベースの KCD を構成する権限を持つカスタム OU 内にある必要があります。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. 組み込みの "AAD DC Computers" コンテナー内にあるコンピューター アカウントに対して、リソースベースの KCD を構成することはできません。You cannot configure resource-based KCD for a computer account in the built-in 'AAD DC Computers' container.

マネージド ドメインでユーザー アカウントにリソースベースの 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.

  1. カスタム OU を作成しますCreate a custom OU. このカスタム OU を管理する権限を、マネージド ドメイン内のユーザーに委任できます。You can delegate permissions to manage this custom OU to users within the managed domain.
  2. バックエンド Web API/リソースを実行している仮想マシンをマネージド ドメインに参加させます。Join the virtual machine running the backend web API/resource to the managed domain. カスタム OU 内にそのコンピューター アカウントを作成します。Create its computer account within the custom OU.
  3. カスタム OU 内で Web アプリを実行するために使用するサービス アカウント ("appsvc" など) を作成します。Create the service account (for example, 'appsvc') used to run the web app within the custom OU.
  4. ここで、次の PowerShell コマンドを使用して、リソースベースの KCD を構成します。Now, configure resource-based KCD using the following PowerShell command:
$ImpersonatingAccount = Get-ADUser -Identity appsvc
Set-ADUser backendsvc -PrincipalsAllowedToDelegateToAccount $ImpersonatingAccount

注意

バックエンド Web API のコンピューター アカウントとサービス アカウントはいずれも、ユーザーがリソースベースの KCD を構成する権限を持つカスタム OU 内にある必要があります。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. 組み込みの "AAD DC Computers" コンテナーのコンピューター アカウントまたは組み込みの 'AAD DC Users' コンテナーのユーザー アカウントに対して、リソースベースの KCD を構成することはできません。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. したがって、リソースベースの KCD を設定するために Azure AD から同期されているユーザー アカウントを使用することはできません。Thus, you cannot use user accounts synchronized from Azure AD to set up resource-based KCD.