Azure Active Directory Domain Services で Kerberos の制約付き委任 (KCD) を構成する

アプリケーションの実行時に、他のユーザーのコンテキストでリソースにアクセスするために、これらのアプリケーションが必要になる場合があります。 Active Directory Domain Services (AD DS) では、このユース ケースを可能にする、"Kerberos の委任" というメカニズムをサポートしています。 Kerberos の "制約付き" 委任 (KCD) は、このメカニズムに基づいて構築され、ユーザーのコンテキストでアクセスできる特定のリソースを定義します。

Azure Active Directory Domain Services (Azure AD DS) のマネージド ドメインは、従来のオンプレミス AD DS 環境よりも安全にロックダウンされているため、より安全な "リソースベース" の KCD を使用してください。

この記事では、Azure AD DS のマネージド ドメインでリソースベースの Kerberos の制約付き委任を構成する方法について説明します。

前提条件

この記事を完了するには、以下のリソースが必要です。

Kerberos の制約付き委任の概要

Kerberos の委任を使用すると、あるアカウントが別のアカウントを偽装してリソースにアクセスできるようになります。 たとえば、バックエンド Web コンポーネントにアクセスする Web アプリケーションは、バックエンド接続を行うときに、別のユーザー アカウントとして偽装できます。 Kerberos の委任は、偽装する側のアカウントがどのリソースにアクセスできるかの制限がないため、安全ではありません。

Kerberos の "制約付き" 委任 (KCD) では、指定されたサーバーまたはアプリケーションが別の ID を偽装している場合に、接続できるサービスまたはリソースを制限します。 従来の KCD では、サービスのドメイン アカウントを構成するのにドメイン管理者の特権が必要です。また、そのアカウントは 1 つのドメイン上での実行だけに制限されます。

従来の KCD にも、いくつかの問題があります。 たとえば、以前のオペレーティング システムでは、サービス管理者には、所有しているリソース サービスにどのフロントエンド サービスが委任されるかを把握する便利な方法はありませんでした。 リソース サービスに委任されるフロントエンド サービスは、攻撃ポイントになる可能性がありました。 リソース サービスに委任されるように構成されているフロントエンド サービスをホストするサーバーが侵害された場合は、リソース サービスも侵害される可能性がありました。

マネージド ドメインでは、ドメイン管理者特権がありません。 そのため、マネージド ドメインでは、従来のアカウントベースの KCD は構成できません。 代わりに、リソースベースの KCD を使用できます。これも、より安全な方法です。

リソースベースの KCD

Windows Server 2012 以降では、サービス管理者はサービスに制約付き委任を構成できるようになりました。 このモデルは、リソースベースの KCD と呼ばれます。 この方法では、バックエンド サービス管理者は特定のフロントエンド サービスによる KCD の使用を許可または拒否できます。

リソースベースの KCD は PowerShell を使用して構成します。 偽装する側のアカウントがコンピューター アカウントであるか、ユーザー アカウントまたはサービス アカウントであるかに応じて、Set-ADComputer コマンドレットまたは Set-ADUser コマンドレットを使用します。

コンピューター アカウントにリソースベースの KCD を構成する

このシナリオでは、contoso-webapp.aaddscontoso.com というコンピューター上で実行されている Web アプリがあるとします。

この Web アプリは、contoso-api.aaddscontoso.com という名前のコンピューター上でドメイン ユーザーのコンテキストで実行されている Web API にアクセスする必要があります。

このシナリオを構成するには、以下の手順を実行します。

  1. カスタム OU を作成します。 このカスタム OU を管理する権限を、マネージド ドメイン内のユーザーに委任できます。

  2. 仮想マシンをドメイン参加させます。Web アプリを実行しているものと Web API を実行しているものの両方を、マネージド ドメインに参加させます。 前の手順のカスタム OU 内に、これらのコンピューター アカウントを作成します。

    注意

    Web アプリと Web API のコンピューター アカウントは、リソースベースの KCD を構成するアクセス許可を持つカスタム OU 内にある必要があります。 組み込みの AAD DC Computers コンテナー内にあるコンピューター アカウントに対して、リソースベースの KCD を構成することはできません。

  3. 最後に、Set-ADComputer PowerShell コマンドレットを使用して、リソースベースの KCD を構成します。

    ドメインに参加している管理 VM で、"Azure AD DC 管理者" グループのメンバーであるユーザー アカウントとしてログインし、次のコマンドレットを実行します。 必要に応じて、独自のコンピューター名を指定します。

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

ユーザー アカウントにリソースベースの KCD を構成する

このシナリオでは、appsvc という名前のサービス アカウントとして実行される Web アプリがあるとします。 この Web アプリは、ドメイン ユーザーのコンテキストで backendsvc という名前のサービス アカウントとして実行されている Web API にアクセスする必要があります。 このシナリオを構成するには、以下の手順を実行します。

  1. カスタム OU を作成します。 このカスタム OU を管理する権限を、マネージド ドメイン内のユーザーに委任できます。

  2. マネージド ドメインに、バックエンド Web API およびリソースを実行している仮想マシンをドメイン参加させます。 カスタム OU 内にそのコンピューター アカウントを作成します。

  3. カスタム OU 内で Web アプリを実行するために使用するサービス アカウント (appsvc など) を作成します。

    注意

    ここでも、Web API VM のコンピューター アカウントと、Web アプリのサービス アカウントは、リソースベースの KCD を構成するアクセス権を持つカスタム OU 内にある必要があります。 組み込みの AAD DC Computers または AAD DC Users コンテナー内にあるアカウントに対して、リソースベースの KCD を構成することはできません。 このことは、Azure AD から同期されたユーザー アカウントを、リソースベースの KCD を設定するためには使用できないことも意味しています。 Azure AD DS で特別に作成されるサービス アカウントを作成して使用する必要があります。

  4. 最後に、Set-ADUser PowerShell コマンドレットを使用して、リソースベースの KCD を構成します。

    ドメインに参加している管理 VM で、"Azure AD DC 管理者" グループのメンバーであるユーザー アカウントとしてログインし、次のコマンドレットを実行します。 必要に応じて、独自のサービス名を指定します。

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

次のステップ

Active Directory Domain Services で委任がどのように機能するかの詳細については、「Kerberos の制約付き委任の概要」を参照してください。