方法 : 信頼を使用する

Active Directory ドメイン サービスの信頼では次のクラスと列挙が使用されます。

次のセクションでは、System.DirectoryServices.ActiveDirectory 名前空間を使用して、Active Directory ドメイン サービスの信頼を使用する方法を示しています。

信頼の方向

信頼の方向は、TrustDirection 列挙体のメンバによって表されます。信頼の方向は、常に信頼の一方の側に対する相対的なものになります。たとえば、ドメイン A がドメイン B に対して入力方向の信頼関係を持っている場合、ドメイン B はドメイン A に対して出力方向の信頼関係を持っています。

信頼の作成

信頼の作成は、2 つの手順から構成されるプロセスです。イベントの通常の順序は、まず信頼関係の片側を作成し、次に信頼のもう片側を作成します。信頼の両側を作成すると、信頼が確立されます。信頼関係の各側を作成するときは、両側で同じパスワードが必要です。

ドメインの信頼の場合、CreateTrustRelationship メソッドを使用して、プログラムにより 1 つのメソッド呼び出しで信頼関係の両側を作成します。このメソッドでは、パスワードを作成および使用して、信頼を確立します。CreateTrustRelationship メソッドを使用すると、フォレストの信頼に対して同じアクションが実行されます。

CreateLocalSideOfTrustRelationship メソッドを使用して、ドメインの信頼関係の片側のみを作成します。呼び出し元は、信頼の両側の呼び出しに同じパスワードを提供し、信頼を確立する必要があります。このパスワードは、信頼の作成にのみ使用され、アカウントパスワードには関係ありません。このメソッドが正常に実行されるには、両方の呼び出しで信頼の方向が正しくなければなりません。このメソッドは、信頼の片側がプログラムで作成され、もう片側が手動で作成される場合に便利です。このメソッドは、信頼の 2 つの側を異なる時点においてプログラムで作成する場合にも使用できます。CreateLocalSideOfTrustRelationship メソッドを使用すると、フォレストの信頼に対して同じアクションが実行されます。

信頼に関する情報の取得

ドメインの信頼の場合、GetTrustRelationship メソッドを使用して、2 つのドメイン間の信頼を表す TrustRelationshipInformation オブジェクトを取得します。GetAllTrustRelationships メソッドを使用して、ドメインが確立したすべての信頼を含む TrustRelationshipInformationCollection オブジェクトを取得します。GetTrustRelationship および GetAllTrustRelationships メソッドを使用すると、フォレストの信頼に対して同じアクションが実行されます。

信頼の検証

ドメインの信頼の場合、VerifyTrustRelationship および VerifyOutBoundTrustRelationship メソッドを使用して、2 つのドメイン間の既存の信頼が有効であることを検証します。VerifyOutBoundTrustRelationship メソッドを使用すると出力方向の信頼のみが検証され、VerifyOutBoundTrustRelationship メソッドを使用するとすべての種類の信頼を検証できます。VerifyTrustRelationship および VerifyOutBoundTrustRelationship メソッドを使用すると、フォレストの信頼に対して同じアクションが実行されます。これらのメソッドはすべて、既存の信頼を検証できない場合、ActiveDirectoryObjectNotFoundException 例外をスローします。

次の C# の例は、ドメインの信頼を列挙し、各信頼が完全に確立されていることを検証する方法を示しています。

static void EnumAndVerifyDomainTrusts(
    Domain domain, 
    NetworkCredential targetCredentials)
{
    TrustRelationshipInformationCollection trusts;
    trusts = domain.GetAllTrustRelationships();

    foreach (TrustRelationshipInformation trust in trusts)
    {
        Console.WriteLine(
            String.Format("Trust between {0} and {1}:",
            trust.SourceName,
            trust.TargetName));
        
        Console.WriteLine(
            String.Format("\tTrust type: {0}",
            trust.TrustType.ToString()));
        
        Console.WriteLine(
            String.Format("\tTrust direction: {0}",
            trust.TrustDirection.ToString()));

        // Verify that the trust has been fully established.
        DirectoryContext context = new DirectoryContext(
            DirectoryContextType.Domain,
            trust.TargetName, 
            targetCredentials.UserName,
            targetCredentials.Password);
        Domain targetDomain = Domain.GetDomain(context);
        Console.WriteLine(targetDomain.Name);

        try
        {
            domain.VerifyTrustRelationship(
                targetDomain, 
                trust.TrustDirection);

            Console.WriteLine("Trust verified.");
        }
        catch (ActiveDirectoryObjectNotFoundException)
        {
            // The trust was not verified.
            Console.WriteLine("Trust not verified.");
        }
    }
}

信頼の削除

信頼関係の片側が削除されると、信頼は確立されなくなります。ドメインの信頼の場合、DeleteLocalSideOfTrustRelationship メソッドを使用して、信頼の片側を削除します。DeleteTrustRelationship メソッドを使用して、1 つのメソッド呼び出しで信頼の両側を削除します。DeleteLocalSideOfTrustRelationship および DeleteTrustRelationship メソッドを使用すると、フォレストの信頼に対して同じアクションが実行されます。

認証の選択

入力方向のフォレストの信頼に SetSelectiveAuthenticationStatus を設定する場合は、2 番目のフォレストのユーザーからのアクセスを許可する各ドメインおよびリソースに対して、手動でアクセス許可の割り当てを行う必要があります。このためには、アクセス制御権 [許可] を設定し、2 番目のフォレストの特定のユーザーまたはグループに対してオブジェクトで認証を行うようにします。

GetSelectiveAuthenticationStatus オプションを有効にした場合にユーザーが信頼を通して認証されると、他の組織のセキュリティ ID (SID) がユーザーの承認データに追加されます。この SID の存在によって、ユーザーが特定のサービスに対して認証されるように、リソースドメインでのチェックが要求されます。ユーザーが認証された後、他の組織の SID がなければ、ユーザーが認証されたサーバーによってこの組織の SID が追加されます。認証されたユーザーのコンテキストには、これらの特別な SID は 1 つのみ存在できます。

SID のフィルタ処理

SID のフィルタ処理によって、管理者は、特定のドメインのドメイン コントローラが信頼される側のドメインを "隔離" するように、設定できます。これによって、信頼する側のドメインのドメイン コントローラが、信頼される側のドメインに関連しないすべての SID を、そのドメインから受信する承認データから削除するようになります。隔離は、信頼する側のドメインから実行され、ドメインごとに行われます。

SID のフィルタ処理では、Windows 2000 推移性の信頼をブロックします。隔離される側のドメインが、2 つのドメイン間の信頼パスにある場合、隔離される側のドメインの他方の側のドメインのユーザーは、隔離する側のドメインのリソースにアクセスできません。このため、隔離される側のドメインがリーフ ドメインであること、それらの子ドメインがユーザー アカウントを含まないリソース ドメインのみであること、または隔離される側のドメインが別のフォレストにあることが必要となります。

Windows 2000 管理者は、SID フィルタ処理機能を使用してフォレスト内に "制限付きアクセス" ドメインを作成しないでください。推奨される隔離シナリオは、分離されたフォレストのドメインのみを隔離することです。信頼は、保護されるドメインから隔離されるドメインに確立する必要があり、信頼される側のドメインからの SID をフィルタ処理するように、信頼する側のドメインを構成する必要があります。

Send comments about this topic to Microsoft.

Copyright © 2008 by Microsoft Corporation. All rights reserved.