第3章 一意の数値属性値の割り当ておよび管理
一部のエントリー属性値には、uidNumber
や gidNumber
などの一意の番号が必要です。Distributed Numeric Assignment (DNA) プラグインを使用すると、設定された番号の範囲から一意の番号を自動的に生成し、指定した属性に割り当てるように Directory Server を設定できます。
DNA プラグインは 属性の一意性 を保証するわけではありません。プラグインが管理する範囲から値を手動で割り当てた場合、プラグインでその値が一意であるかどうかはチェックされません。
DNA プラグインを使用すると、サプライヤー上の異なるローカル DNA プラグインインスタンスに、別の範囲を設定して、レプリケーションの競合を効果的に回避できます。たとえば、サプライヤー A は 1 から 1000 までの番号を、サプライヤー B は 1001 から 2000 までの番号を割り当て可能です。これにより、各サプライヤーが真に一意の番号セットを使用するようになります。
3.1. 動的番号の割り当ての概要 リンクのコピーリンクがクリップボードにコピーされました!
DNA プラグインは、インスタンスが発行できる使用可能な番号の範囲を割り当てます。範囲の定義は 2 つの属性で定義されます。サーバーで次に使用可能な番号 (範囲の下限値) と最大値 (範囲の上限値) です。プラグインを設定するときに、初期の下限値を設定します。追って、プラグインはこの下限値を更新します。
利用可能な数を各レプリカの複数の範囲に分割することで、サーバーは互いに重複することなく、継続的に番号を割り当てることができます。
3.1.1. フィルター、検索、およびターゲットエントリー リンクのコピーリンクがクリップボードにコピーされました!
サーバーは、内部的にソートされた検索を実行し、次に指定された範囲がすでに別のサーバーによって取得されているかどうかを確認します。管理属性には、適切な順序のマッチングルールで等価インデックスを割り当てる必要があります。
DNA プラグインは、常にディレクトリーツリーの特定領域 (スコープ) と、そのサブツリー内の特定のエントリータイプ (フィルター) に適用されます。
DNA プラグインは 単一 のデータベースでのみ動作し、複数のデータベースの番号割り当てを管理することはできません。DNA プラグインはソートコントロールを使用して、DNA プラグイン以外で手動で値が割り当てられているかどうかを確認します。ただし、ソートコントロールを使用したこの検証は、単一のデータベースでのみ機能します。
3.1.2. dnaMagicRegen を使用して一意の番号を割り当てる リンクのコピーリンクがクリップボードにコピーされました!
DNA プラグインが管理する属性のテンプレート値としてマジック値 (dnaMagicRegen
) を使用します。このマジック値は、サーバー範囲外の数値または単語です。エントリーがマジック値とともに追加され、そのエントリーが DNA プラグインの設定されたスコープとフィルター内にある場合、マジック値によってプラグインが自動的にトリガーされ、新しい一意の値が生成されます。
たとえば、ldapmodify
ユーティリティーを使用して、マジック値としてゼロ (0
) を追加できます。
設定された dnaMagicRegen
により、DNA プラグインはエントリーが追加されたときに、マジック値と等しい値を持つ属性に対してのみ一意の値を生成します。DNA プラグインにマジック値を設定しない場合、プラグインによって管理対象属性のすべての値が上書きされます。
- 注記
- DNA プラグインが 1 つの属性のみを管理し、追加されたエントリーに管理対象属性が含まれていない場合、追加操作がトリガーとなって DNA プラグインがこの属性を追加し、その一意の値を生成します。
3.1.3. 同じ範囲の複数の属性 リンクのコピーリンクがクリップボードにコピーされました!
DNA プラグインは、一意の番号の単一範囲から、1 つまたは複数の属性タイプに一意の番号を割り当てることができます。
これにより、属性に一意の番号を割り当てる方法が複数提供されます。
- 単一の属性タイプに、一意の範囲から単一の番号を割り当てる。
- 1 つのエントリー内の 2 つの属性に、同じ一意の番号を割り当てる。
- 2 つの異なる属性は、同じ範囲の一意の数字から 2 つの異なる数字を割り当てていました。
多くの場合は、属性タイプごとに一意の番号を割り当てるだけで十分です。たとえば、新しい従業員エントリーに employeeID
を割り当てる場合、各従業員エントリーが一意の employeeID
を確実に割り当てるようにすることが重要です。
ただし、同じ範囲の番号から一意の番号を複数の属性に割り当てることができます。たとえば、uidNumber
と gidNumber
を posixAccount
エントリーに割り当てる場合、DNA プラグインは両方の属性に同じ番号を割り当てることができます。これを行うには、両方の管理属性を変更操作に渡し、ldapmodify
ユーティリティーを使用してマジック値 (0
) を指定します。
オブジェクトクラスで 1 つの属性しか許可されない場合、DNA プラグインは、複数の属性を処理する際に、一意の値を 1 つの属性にのみ割り当てることができます。たとえば、posixGroup
オブジェクトクラスでは gidNumber
は許可されますが、uidNumber
は許可されません。DNA プラグインが uidNumber
と gidNumber
の両方を管理する場合、posixGroup
エントリーを作成するときに、uidNumber
と gidNumber
の属性範囲から gidNumber
に一意の番号を割り当てます。すべての管理属性のプールを共有すると、一意の番号の一貫した割り当てが確保され、異なるエントリーの uidNumber
と gidNumber
が別々の範囲の同じ番号になるという競合を防止します。
DNA プラグインが複数の属性を管理する場合、1 回の変更操作ですべての属性に同じ値が割り当てられます。ただし、エントリーが範囲に対して定義されている各タイプの属性を許可していない場合、またはエントリーが定義されているすべての属性タイプを許可しているが、属性のサブセットのみが一意の値を必要とする場合は、個別の変更操作を実行して、同じ範囲から 異なる 番号を割り当てる必要があります。以下に例を示します。
例3.1 例: DNA および一意の銀行口座番号
銀行の例では、顧客の primaryAccount
属性と customerID
属性に同じ一意の番号を使用します。銀行の例の管理者は、DNA プラグインが同じ範囲から両方の属性に一意の値を割り当てるよう設定していました。
銀行では、顧客 ID とプライマリーの口座番号と同じ範囲のセカンダリー口座に番号を割り当てますが、これらの数字をプライマリーの口座番号と同じにすることはできません。銀行の例の管理者は、DNA プラグインを設定して secondaryAccount
属性も管理するようにしますが、エントリーが作成され、primaryAccount
属性と customerID
属性が割り当てられた後にのみ、エントリーに secondaryAccount
属性を追加します。これにより、primaryAccount
と customerID
が同じ一意の番号を共有し、secondaryAccount
番号は完全に一意でありながら同じ番号範囲からのものになります。