8.3. Windows 同期の計画

データの整理やレプリケーションの計画のためのサイト調査と同様に、同期を設定する前に、情報の種類、Windows サーバー、およびその他の考慮事項を評価しておくと便利な場合があります。

8.3.1. リソース要件

同期はサーバーリソースを使用します。レプリケーションストラテジーを定義する際に、以下のリソース要件を検討してください。
  • ディスク使用量 - changelog は各更新操作の後に書き込まれます。多数の更新操作を受信するサーバーでは、ディスク使用量が増える可能性があります。さらに、すべてのレプリケーションデータベースと同期データベースに対して単一の changelog が維持されます。サプライヤーに複数の複製および同期されたデータベースが含まれる場合、changelog はより頻繁に使用され、ディスク使用量がさらに高くなります。
  • サーバースレッド - 同期アグリーメントは 1 つのサーバースレッドを使用します。
  • ファイル記述子 - サーバーで利用可能なファイル記述子の数は、変更ログ (1 つのファイル記述子) および各レプリケーションおよび同期アグリーメント (アグリーメントごとに 1 つのファイル記述子) によって削減されます。
  • さまざまな建物やリモートサイトを接続する LAN と WAN の品質、および使用可能な帯域幅の量。
  • ディレクトリーに保存されたエントリーの数およびサイズ。
人事データベースまたは財務情報管理するサイトは、簡単な電話帳の目的でディレクトリーを使用する技術者が含まれるサイトよりも、ディレクトリーの負荷を大きくする可能性があります。

8.3.2. changelog のディスク領域の管理

マルチサプライヤーレプリケーションと同様に、同期には、ディレクトリーの編集を追跡するための changelog、更新エントリーの状態情報のログエントリー、および削除されたエントリーのトゥームストーンエントリーが必要です。この情報は同期に必要です。これらのログファイルは非常に大きくなる可能性があるため、ディスク領域を残すためにこれらのファイルを定期的にクリーンアップする必要があります。
changelog を維持できる属性は 4 つあります。2 つは cn=changelog5 の下にあり、変更ログのトリミングに直接関連します。
  • nsslapd-changelogmaxage changelog のエントリーの最大期間を設定します。エントリーがその制限より古い場合は、削除されます。これにより、変更ログが無期限に大きくなるのを防ぎます。
  • nsslapd-changelogmaxentries changelog で許可されるエントリーの最大数を設定します。nsslapd-changelogmaxage と同様に、changelog もトリミングされますが、設定に注意してください。これは、ディレクトリー情報の完全なセットを許可するのに十分な大きさである必要があります。そうしないと、同期が正しく機能しない可能性があります。
他の 2 つの属性は、cn=sync_agreement,cn=WindowsReplica,cn=suffixDN,cn=mapping tree,cn=config の同期合意エントリーの下にあります。これらの 2 つの属性は、ディレクトリーの編集情報ではなく、changelog に保持されるメンテナンス情報である tombstone および状態情報に関連します。
  • nsDS5ReplicaPurgeDelay tombstone (削除済み)エントリーおよび状態情報が changelog に設定可能な最大期間を設定します。tombstone または状態情報エントリーがその時間よりも古くなると、削除されます。nsslapd-changelogmaxage の値は、tombstone および状態情報エントリーにのみ適用される点で nsDS5ReplicaPurgeDelay 属性とは異なります。nsslapd-changelogmaxage は、ディレクトリーの変更など、変更ログ内のすべてのエントリーに適用されます。
  • nsDS5ReplicaTombstonePurgeInterval サーバーがパージ操作を実行する頻度を設定します。この間隔で、Directory Server は内部操作を実行して、tombstone および状態のエントリーを削除します。最大経過時間が最長のレプリケーション更新スケジュールよりも長いことを確認してください。そうしないと、マルチサプライヤーレプリケーションがレプリカを適切に更新できない場合があります。
レプリケーションおよび変更を管理するパラメーターの説明は、『Configuration, Command, and File Reference』の第 2 章 Core Configuration Attributes にあります。

8.3.3. 接続型の定義

同期は、標準ポートを介した単純な認証、TLS / TLS、または Start TLS (標準ポートを介した安全な接続) を使用して行うことができます。
これは必須ではありませんが、TLS や他のセキュアな接続を同期に使用することが強く推奨されます。パスワードが Windows サーバーから同期される場合は、同期が安全なポートを介して続行されるように、両方のサーバーで TLS を有効にする必要があります。

8.3.4. データサプライヤーの検討

データサプライヤー は、データのサプライヤーソースであるサーバーです。これは、データのプライマリーソースまたは権威ソースです。
Windows および Directory Server サービスは、同期アグリーメントにより継続的に同期されるため、2 つのサービス間で競合の可能性が最小限に抑えられます。ただし、Directory Server がレプリケーションデプロイメントの一部である場合は、レプリケーションスケジュールによっては、Directory Server レプリケーションシナリオ内と Windows ドメインの間で行われた変更で競合が発生する可能性があります。
データが 2 つの異なるディレクトリーサービスに存在する場合、どのサーバーがデータサプライヤーになるかを検討し、その情報を共有するかを決定します。最適なのは、データを管理する 1 つのディレクトリーサービスを選択し、同期プロセスで他のサービスのエントリーを追加、更新、または削除できるようにすることです。
データの管理には、1 つの領域 (Windows ドメインまたは Directory Server) を選択します。または、データサプライヤーとして Directory Server を 1 つ選択し、各 Windows ドメインと同期します。Directory Server がレプリケーションに関与する場合は、競合、データの損失、またはデータの上書きを回避するようにレプリケーション構造を設計します。
データのメインコピーの維持方法は、特定のデプロイメントのニーズによって異なります。データサプライヤーがどのように維持されているかに関係なく、単純性と一貫性を維持します。たとえば、複数のサイトでデータの管理を試みないでください。その場合、競合するアプリケーション間でデータを自動的に交換します。これを行うと、last change wins のシナリオが発生し、管理のオーバーヘッドが増加します。

8.3.5. 同期するサブツリーの決定

単一の Directory Server サブツリーのみを単一の Windows サブツリーと同期できます。また、ディレクトリーサービス間で同期アグリーメントを 1 つのみ使用することが推奨されます。同期するディレクトリーツリーの一部を選択または設計します。同期されたエントリー専用の接尾辞を設計することを検討してください。
サブツリー計画では、Active Directory ディレクトリーと Directory Server ディレクトリーの間で対応する可能性があり、同期されたサブツリーの範囲外のエントリーも考慮する必要があります。同期プロセスは実際にルート DN で開始し、同期のエントリーの評価を開始します。エントリーは、Active Directory の samAccount と Directory Server の uid 属性に基づいて相関します。Synchronization プラグインは、( samAccount/uid 関係に基づいて)エントリーが削除または移動されたために同期されたサブツリーから削除された場合、その旨を通知します。これは、そのエントリーがもう同期されないことを同期プラグインに示すためのものです。この問題は、同期プロセスで、移動したエントリーの処理方法を決定するための設定が必要となることです。同期アグリーメントでは、3 つのオプションを設定できます (適切な Directory Server エントリーの削除、変更の無視 (デフォルト)、またはエントリーを同期せずに現状を維持)。

8.3.6. 複製された環境との連携

同期は、Directory Server の接尾辞とサブツリー(例: ou=People,dc=example,dc=com)を対応する Windows ドメインとサブツリー(cn=Users,dc=test,dc=com)にリンクします。各サブツリーは、命名の競合や変更の競合を回避するために、他の 1 つのサブツリーにのみ同期させることができます。
Windows Sync を利用するには、Windows ドメインのメンバーに同期したマルチサプライヤーレプリケーションで Directory Server サプライヤーと共に使用します。これにより、情報が一元化され、維持が簡単になり、両方のディレクトリーシステムより変更が伝播されます。また、データの管理も容易になります。

図8.2 マルチサプライヤーディレクトリーサーバー - Windows ドメインの同期

マルチサプライヤーディレクトリーサーバー - Windows ドメインの同期
指定の Windows ドメインに対する同期アグリーメントを 1 つだけ作成します。Windows サーバーから同期された変更と情報を Directory Server 全体に伝搬するには、マルチサプライヤーサプライヤー (できればレプリケーションデプロイメントのデータサプライヤー) との同期アグリーメントを作成します。

8.3.7. 同期方向の制御

図8.1「同期プロセス」に示すように、同期はデフォルトで 双方向 となります。つまり、Active Directory の変更が Directory Server に送信され、Directory Server の変更が Active Directory に送信されることを意味します。
oneWaySync パラメーターを同期合意に追加することで、一方向 同期 を作成できます。この属性は、変更を送信する方向を定義します。
Active Directory サーバー から Directory Server に変更を送信する場合、値は fromWindows になります。この場合、定期的な同期の更新間隔で、Directory Server が Active Directory Server に接続し、DirSync コントロールを送信して更新を要求します。ただし、Directory Server は、その側から変更やエントリーは送信されません。つまり、同期更新は、Active Directory の変更内容が Directory Server のエントリーに送信され、更新されることで設定されています。
Directory Server から Active Directory サーバーに変更を同期するには、値は toWindows になります。Directory Server は通常の更新で Active Directory サーバーにエントリー変更を送信しますが、Active Directory 側から更新を要求しないように DirSync 制御は含まれません。
一方向同期を有効にすると、同期されていないサーバーで自動的に変更ができなくなる わけではないため、同期更新間の同期ピア間で不整合が生じる可能性があります。たとえば、一方向性同期は、Active Directory から Directory Server に行くように設定されているため、Active Directory が (実質的に) データサプライヤーとなります。Directory Server でエントリーを変更または削除すると、Directory Server 情報はその情報とは異なるため、これらの変更は Active Directory に引き継がれません。次の同期更新時に、編集内容は Directory Server で上書きされ、削除済みのエントリーが再追加されます。
データの不整合が発生するのを防ぐには、アクセス制御ルールを使用して、同期 されていない サーバーの同期サブツリー内のエントリーを編集または削除しないようにします。Directory Server のアクセス制御については、「アクセス制御の設計」で説明しています。Active Directory の場合は、適切な Windows ドキュメントを参照してください。

8.3.8. 同期されるエントリーの制御

Windows Sync は、さまざまなデプロイメントシナリオをサポートするのに十分な柔軟性を提供するために、同期されるエントリーをある程度制御します。このコントロールは、Directory Server に設定された異なる設定属性を使用して設定されます。
  • Windows サブツリー内では、ユーザーおよびグループのエントリーのみを Directory Server に同期できます。同期アグリーメントを作成するとき、新しい Windows ユーザーおよびグループエントリーを作成時に同期するオプションがあります。これらの属性が on に設定されている場合は、既存の Windows エントリーが Directory Server に同期され、Windows サーバーで作成されるエントリーが Directory Server と同期されます。
  • Active Directory エントリーと同様に、Directory Server のユーザーおよびグループエントリーのみを同期できます。同期されるエントリーには、ntUser または ntGroup オブジェクトクラスと必須の属性が必要で、その他のエントリーはすべて無視されます。
Directory Server の changelog で平文のパスワードが保持されるため、Directory Server のパスワードは他のエントリー属性と同期されます。Windows サーバー上で加えられた変更を取得するには、Password Sync Service が必要です。Password Sync Service がないと、パスワードは Windows サーバーでハッシュ化され、Windows ハッシュ関数は Directory Server で使用されているものと互換性がないため、Windows パスワードを同期できません。

8.3.9. 同期するディレクトリーデータの特定

Windows Sync は、ディレクトリーサービス間でユーザーおよびグループエントリーを同期します。同期するサブツリーを決定したら、以下のようにそれらのサブツリーに保存する情報を計画します。
  • 電話番号、自宅住所、会社の住所、電子メールアドレスなどのディレクトリーユーザーおよび従業員の連絡先情報。
  • 取引先、取引先、および顧客の連絡先情報。
  • ユーザーのソフトウェア設定またはソフトウェア設定情報。
  • グループ情報とグループメンバーシップ。
    グループメンバーは、同期済みの接尾辞内である場合のみ同期されます。アグリーメントの範囲外のグループメンバーは、両側で変更されません。つまり、それらは適切なディレクトリーサービスのグループのメンバーとして一覧表示されますが、グループエントリーの member 属性は同期ピアと同期されません。
同期されるエントリーは、同期アグリーメントで設定されます。ユーザーエントリーは、グループエントリーとは別に同期されます。さらに、エントリーの削除は個別に設定されます。削除は明確に同期する必要があります。
Directory Server では、ntGroup または ntUser オブジェクトクラスと必須の属性が含まれるエントリーのみが同期されます。Windows サーバーと同期する既存および将来のエントリーを決定します。
ディレクトリーに存在する必要があるエントリーを決定した後、これらのオブジェクトのどの属性をディレクトリーに保持する必要があるかを決定します。Directory Server または Active Directory の可能な属性のサブセットのみが同期されます。さらに、この属性のサブセットは、同期アグリーメント (部分同期) で特定の属性を除外することにより、さらに制限できます。
利用可能な同期属性に応じて、エントリーとこれらのエントリーに含まれるデータの両方を計画します。同期された属性と、Directory Server と Active Directory スキーマの相違点は、「Active Directory と Directory Server 間で同期されるスキーマ要素」 で説明します。

8.3.10. ユーザーとグループの POSIX 属性の同期

すべての可能なユーザーと属性のサブセットが、Active Directory と Red Hat Directory Server の間で同期されます。一部の属性はマッピングされ、Active Directory と Directory Server スキーマには違いがあり、一部の属性が直接照合されます。デフォルトでは、これらの属性のみが同期されます。
その同期リストにない属性のタイプの 1 つは、POSIX 関連の属性です。Linux システムでは、システムユーザーおよびグループは POSIX エントリーとして識別され、LDAP POSIX 属性に必要な情報が含まれています。ただし、Windows ユーザーが同期すると、Windows アカウントであることを示す ntUser 属性および ntGroup 属性が自動的に追加されますが、POSIX 属性は同期されず(Active Directory エントリーに存在していても)、Directory Server 側では POSIX 属性は追加されません。
POSIX Winsync API プラグインは、Active Directory エントリーと Directory Server エントリーとの間で POSIX 属性を同期します。このプラグインはデフォルトで無効になっていますが、有効にすると、データサプライヤーで POSIX 属性の識別を設定でき、ピアサーバー側で同期できます。POSIX 属性を Active Directory エントリーに直接設定し、Directory Server ディレクトリーで同期および保存できるため、Active Directory がユーザーアカウントストアとして使用される場合に役立ちます。
注記
プラグインが有効な場合は、すべての POSIX 属性( uidNumbergidNumber、および homeDirectory)は、Active Directory エントリーと Directory Server エントリー間で同期されます。ただし、新しい POSIX エントリーまたは POSIX 属性が Directory Server の既存のエントリーに追加されると、POSIX 属性のみが Active Directory に対応するエントリーと同期します。POSIX オブジェクトクラス (ユーザーの場合は posixAccount、グループの場合は posixGroup) は Active Directory エントリーに追加されません。

8.3.11. パスワードの同期およびパスワードサービスのインストール

DirSync プラグインは Directory Server と共にインストールされ、デフォルトで有効になりますが、パスワードを同期するには、Windows マシンに追加の Windows サービスである Password Sync をインストールする必要があります。このサービスは、Windows サーバーで行われたパスワードの変更を Directory Server に転送するために必要です。
Password Sync サービスがインストールされていないと、パスワードの同期( userPassword 属性の同期)は有効になりません。つまり、Directory Server ユーザーエントリーが Windows サーバーに同期されていても、ユーザーエントリーは Windows ドメインでアクティブではありません (つまり、同期されたユーザーはパスワードがないため、ドメインにログインできません)。
注記
ユーザーパスワードの最終更新に別のタイムスタンプを記録する passwordTrackUpdateTime というパスワードポリシー属性があります。これにより、Active Directory と Directory Server 間または他のクライアントとのパスワード変更を同期することが簡単になります。

8.3.12. 更新ストラテジーの定義

必要な同期属性が含まれるように変更された既存の Directory Server エントリーは、次の更新まで同期されません。すでに同期されている Windows エントリーおよび Directory Server エントリーへの変更は、次の増分更新で実行されます。このストラテジーの一部として、データを一元管理し、データの変更が可能なアプリケーションを制限し、必要な更新をスケジュールするようにしてください。更新は既存情報を上書きまたは削除せず、新しいエントリーを追加して変更を送信します。
デフォルトでは、Windows および Directory Server インスタンスは継続的に同期され、変更が 5 分ごとに公開されています。このスケジュールを変更するには、同期アグリーメント属性を手動で設定して更新間隔(winSyncInterval)を変更するか、別の更新スケジュール(nsDS5ReplicaUpdateSchedule)を設定して変更できます。

8.3.13. 同期アグリーメントの編集

Web コンソールで設定された基本的な同期アグリーメントは、ホストおよびポート情報、同期済みのサブツリー、接続タイプなどの同期に関する非常に簡単な情報を設定します。
ただし、一部レプリケーションや同期スケジュールなどのマルチサプライヤーレプリケーションで利用できる多くの設定は、Windows-Directory Server の同期で利用できます。これらの設定は、同期アグリーメントに手動で追加する必要があります。
デフォルトの同期アグリーメントの変更は、『Administration Guide』で説明しています。利用可能な同期アグリーメント属性は、『Configuration, Command, and File Reference』に記載されています。