Sun Java System Directory Server Enterprise Edition 6.3 インストールガイド

Identity Synchronization for Windows がディレクトリソースでの変更を検出する方法

この節では、ユーザーエントリおよびパスワードの変更が Sun Java System Directory Server (Directory Server)、Windows Active Directory、および Windows NT のコネクタによって検出される方法について説明します。

ここで説明する内容は、次のとおりです。

ディレクトリサーバーコネクタが変更を検出する方法

ディレクトリサーバーコネクタは、Directory Server の旧バージョン形式の更新履歴ログを LDAP を介して検証し、ユーザーエントリおよびパスワードの変更イベントを検出します。ディレクトリサーバープラグインを使用すると、コネクタは次の処理を実行できます。

旧バージョン形式の更新履歴ログの詳細については、『Sun Java System Directory Server Enterprise Edition 6.3 Reference』「Replication and the Retro Change Log Plug-In」を参照してください。

図 3–4 ディレクトリサーバーコネクタが変更を検出する方法

ディレクトリサーバーコネクタが変更を検出する方法を示すブロック図。

Active Directory コネクタが変更を検出する方法

Windows 2000/2003 Server Active Directory コネクタは、Active Directory USNChanged および PwdLastSet 属性値を検証してユーザーエントリおよびパスワードの変更を検出します。

Directory Server の旧バージョン形式の更新履歴ログとは異なり、エントリで属性を変更しても、Active Directory は変更された属性を報告しません。代わりに、Active Directory では USNchanged 属性の増加させることでエントリの変更を識別します。個々の属性に対する変更を検出するために、Active Directory コネクタはオブジェクトキャッシュと呼ばれるインプロセスデータベースを使用します。オブジェクトキャッシュは、各 Active Directory エントリのハッシュされたコピーを格納し、コネクタがエントリで変更された属性を正確に判断できるようにします。

Active Directory コネクタを Windows にインストールする必要はありません。これらのコネクタは、Solaris や Red Hat Linux などほかのオペレーティングシステム上でも実行でき、LDAP を介して遠隔から変更を加えたり検出したりすることができます。

図 3–5 Active Directory コネクタが変更を検出する方法

Active Directory コネクタが変更を検出する方法を示すブロック図。

Windows NT コネクタが変更を検出する方法

Windows NT コネクタは、ユーザーオブジェクトに関する監査イベントのセキュリティーログを検証してユーザーエントリおよびパスワードの変更を検出します。監査は有効にしてください。有効にしない場合、Identity Synchronization for Windows で Windows NT マシンからのログメッセージを読み取れません。監査ログの記録が有効であることを確認するには、「Windows NT マシンでの監査の有効化」を参照してください。

図 3–6 Windows NT コネクタが変更を検出する方法

Windows NT コネクタが変更を検出する方法を示すブロック図。

変更検出機能およびパスワードフィルタ DLL のサブコンポーネントの説明については、「Windows NT コネクタサブコンポーネント」を参照してください。

パスワード更新の伝播

この節では、平文パスワードを取得する 2 つの方法について説明します。平文パスワードは、Windows ソースと Directory Server ソースとの間でパスワードの変更を伝播させるために必要です。

パスワードフィルタ DLL を使用した平文パスワードの取得

Windows NT コネクタは、Sun Java System Directory Server にパスワードの更新を伝播させるために平文パスワードを取得する必要があります。ただし、Windows ディレクトリから平文パスワードを抽出することはできません。パスワードがディレクトリに格納される時点で、すでにパスワードは暗号化されています。

Windows NT では、ディレクトリに永続的に格納される前に平文パスワードをコンポーネントが収集できるようにする パスワードフィルタ DLL インタフェースを提供します。

オンデマンドパスワード同期を使用した平文パスワードの取得

Active Directory では、Windows NT と同じパスワードフィルタをサポートしていますが、Window NT で使用されるプライマリドメインコントローラではなく各ドメインコントローラにパスワードフィルタ DLL をインストールしてください。これは、インストールでの過大な負担となる可能性があるため、Identity Synchronization for Windows ではオンデマンドパスワード同期と呼ばれる別の手法を使用して、パスワードの変更を Active Directory から Directory Server に同期します。

オンデマンドパスワード同期では、ユーザーが Windows 2000/2003 でパスワードを変更したあとでログインを試みたときに Directory Server 上で新しいパスワードの値を取得するための方法が提供されます。

また、パスワードフィルタ DLL を使用せずに Active Directory 上でパスワードを同期することもできます。

    オンデマンドパスワード同期のプロセスは次のとおりです。

  1. ユーザーは、Windows を実行しているマシンで Ctrl-Alt-Del を押し、自分のパスワードを変更します。新しいパスワードが Active Directory に格納されます。

  2. Active Directory コネクタは、スケジュールされた間隔でシステムをポーリングします。

    コネクタは、USNchanged (Update Sequence Number) および PwdLastSet 属性に対する変更に基づいてパスワードの変更を検出すると、パスワードの変更に関するメッセージを Message Queue に発行します。メッセージは、SSL 暗号化チャネル上を転送されます。

    オンデマンドパスワード同期の動作方法を示すブロック図。
  3. ディレクトリサーバーコネクタは、SSL を介して Message Queue からパスワードの変更メッセージを受信します。

  4. ディレクトリサーバーコネクタは、ユーザーエントリの dspswvalidate 属性を true に設定します。これにより、古いパスワードは無効になり、パスワードの変更がディレクトリサーバープラグインに通知されます。

  5. ユーザーがログインを試みると、Sun Java System ディレクトリサーバープラグインは、Directory Server に対して認証を求める LDAP アプリケーション (Portal Server など) を使用して、Directory Server エントリのパスワードの値が無効であることを検出します。

  6. ディレクトリサーバープラグインは、Active Directory で対応するユーザーを検索します。プラグインは、ユーザーが見つかると、ユーザーが Directory Server へのログインを試みたときに入力されたパスワードを使って、Active Directory へのバインドを試みます。


    注 –

    オンデマンドパスワード同期では、Directory Server に対してアプリケーションで SASL Digest-MD5 などのより複雑な認証メカニズムを使用する代わりに、単純認証を使用する必要があります。


  7. Active Directory に対するバインドに成功すると、ディレクトリサーバープラグインは、パスワードを設定し、Directory Server 上のユーザーエントリから無効なパスワードフラグを取り除いて、ユーザーがログインできるようにします。

    ユーザーエントリおよびパスワードの変更が Active Directory および Directory Server で更新される方法を示す図。
    注 –

    ユーザー認証に失敗すると、ユーザーエントリのパスワードは Directory Server に残り、Directory Server および Active Directory 上のパスワードは、ユーザーが有効なパスワードでログインするまで一致しません。有効なパスワードは、Active Directory に対して認証されたパスワードです。


信頼できる同期

Identity Synchronization for Windows では、コンポーネントが一時的に利用不可になった場合にもユーザーの変更イベントを確実に逃さないように多くの予防策をとっています。Identity Synchronization for Windows の信頼性は、TCP ネットワークプロトコルに似ています。TCP は、緩く断続的に接続されたネットワークであっても、最終的にすべてのデータが正常に配信されることを保証しています。一時的なネットワーク停止中に送信されたデータは、ネットワークがダウンしている間はキューに入れられ、接続が復元してから再配信されます。Identity Synchronization for Windows は、次のいずれかのコンポーネントが一時的に利用不可になっても、ユーザーの変更イベントを最終的に検出して適用します。

これらのコンポーネントのいずれかが利用できなくなると、Identity Synchronization for Windows では、影響を受けるコンポーネントが利用できるようになってパスワードを始めとするすべての変更を含むようになるまで同期を遅らせます。このバージョンの Identity Synchronization for Windows では、SunTM Cluster ソフトウェアやその他の真の高可用性ソリューションをサポートしません。ユーザーは Identity Synchronization for Windows と直接対話しないため、高可用性は通常必要ありません。壊滅的な失敗が発生した場合は、Identity Synchronization for Windows コンポーネントを再インストールし、idsync resync コマンドを使用してすべてのディレクトリソースを再同期できます。

ほとんどの状況では、コンポーネントが利用できなくなると、同期イベントがキューに入れられ、コンポーネントが利用可能になったときだけ同期イベントが適用されます。このプロセスには、2 つの例外があります。