Red Hat Training

A Red Hat training course is available for Red Hat Directory Server

5.6. 一意の数値を動的に割り当てる方法について

エントリー属性によっては、uidNumbergidNumber などの一意の番号が必要です。Directory Server は、DNA (Distributed Numeric Assignment) プラグインを使用して、指定された属性に一意の番号を自動的に生成して提供できます。
多くの状況では、UID/GID 番号や PIN 番号などの一意の数値の属性が必要になります。このサーバーは DNA プラグインインスタンスを使用して、数字を生成する属性を指定します。これにより、その属性がエントリーに追加されるたびに、一意の値を割り当てることができます。
注記
属性の一意性 は、DNA プラグインで維持されるとは限りません。プラグインは、重複しない範囲のみを割り当てますが、管理属性に手動で数字を割り当てることができ、手動で割り当てられた番号が一意であることを検証したり要求したりすることはありません。

5.6.1. Directory Server の一意の番号の管理方法

一意の番号を割り当てる際に問題となるのは、番号を生成することではなく、エントリーが複製されたときに他の割り当てられた番号と競合しないように、また、すべてのサーバーが割り当てにおいて十分な範囲の番号を持つように、番号を効果的に管理することです。
サーバーの DNA プラグインは、インスタンスが発行することのできる利用可能な番号の範囲を割り当てます。範囲の定義は非常にシンプルで、サーバーの次に利用可能な番号 (範囲の下限) と最大値 (範囲の最後) の 2 つの属性で設定されます。初期の下限範囲は、プラグインインスタンスを設定する際に設定されます。その後、下部の値はプラグインによって更新されます。利用可能な番号を範囲に分割すると、サーバーはすべて、互いに重複せずに、継続的に番号を割り当てることができます。
サーバーは、内部的にソートされた検索を実行し、次に指定された範囲がすでに取得されているかどうかを確認し、管理属性に適切な順序のマッチングルールと同じインデックスを割り当てる必要があります。
マルチマスターのレプリケーションでは、各サプライヤーにしきい値を設定できるため、その範囲内の数字を使い果たしたら、他のサプライヤーから追加の範囲を要求できます。各サプライヤーは、別の設定エントリーで現在の範囲を追跡します。設定エントリーは他のすべてのサプライヤーに複製されるため、各サプライヤーが設定を確認して、新しい範囲で問い合わせるサーバーを見つけることができます。
個々のサーバーに設定した範囲と範囲設定エントリーは、Directory Server がエントリーに対して効率的に番号を 分散 する方法になります。
DNA プラグインは、1 つの属性タイプに、または一意の番号の 1 つの範囲から複数の属性タイプにまたがって、一意の番号を割り当てることができます。
これにより、属性に一意の数字を割り当てるためのオプションが複数提供されます。
  • 一意の番号の 1 つの範囲から、1 つの属性タイプに割り当てられた 1 つの番号。
  • 1 つのエントリーの 2 つの属性に割り当てられた同じ一意の番号。
  • 2 つの異なる属性は、同じ範囲の一意の数字から 2 つの異なる数字を割り当てていました。
多くの場合は、属性タイプごとに一意の番号を割り当てるだけで十分です。新しい従業員エントリーに employeeID を割り当てる際には、各従業員エントリーに一意の employeeID が割り当てられます。
ただし、同じ範囲の数字から複数の属性に一意の番号を割り当てることが役に立つ場合もあります。たとえば、uidNumbergidNumberposixAccount エントリーに割り当てる場合、両方の属性に同じ数を割り当てるように DNA プラグインを設定できます。
DNA プラグインは、常にディレクトリーツリーの特定領域 (スコープ) と、そのサブツリー内の特定のエントリータイプ (フィルター) に適用されます。
よくあるのは、まったく別のユーザーがディレクトリーツリーの異なるブランチに保存されていることです。たとえば、あるホスティングサービスでは、あるクライアントのユーザーが ou=Example Corp. ブランチにいて、別のクライアントのユーザーが ou=Acme Company ブランチにいる場合があります。この場合、割り当てられた番号は サブツリー内 で一意である必要がありますが、ディレクトリー全体で一意である必要はありません。この場合、ou=Example Corp. ブランチの Barbara Jensen が自分のエントリーに uidNumber:5 を持つこと、そして ou=Acme Company ブランチの John Smith が自分のエントリーにuidNumber:5 を持つことは、それぞれ別の組織なので問題ありません。特定のサブツリーに範囲を適用するには、dnaScope: ou=people,dc=example,dc=com のように、DNA スコープで設定します。
一意の番号は、接頭辞を使用して異なる種類のユーザーエントリーを特定することで、範囲間で区別することもできます。たとえば、DNA 接頭辞を acme に設定すると、Acme Company ブランチの一意の番号には、uid: acme5 のように番号の前 acme があります。