検索

第3章 一意の数値属性値の割り当ておよび管理

download PDF

一部のエントリー属性には、uidNumbergidNumber などの一意の数値識別子が必要です。Directory Server は、Distributed Numeric Assignment (DNA) プラグインを使用して、指定した属性に対してこれらの一意の番号を自動的に生成し、割り当てることができます。

注記

DNA プラグインは 属性の一意性 を保証するわけではありません。プラグインは重複しない範囲を割り当てます。これにより、一意性を強制したり検証したりすることなく、管理属性に手動で数値を割り当てることができます。

DNA プラグインを使用すると、レプリケーションの競合を事実上回避できます。DNA プラグインは、単一 のバックエンド全体に一意の番号を割り当てます。マルチサプライヤーのレプリケーションでは、各サプライヤーがローカル DNA プラグインインスタンスを実行している場合、各サーバーに異なる範囲の番号を割り当てる必要があります。これにより、各インスタンスが真に一意の番号セットを使用するようになります。

3.1. 動的番号の割り当ての概要

DNA プラグインは、インスタンスが発行できる使用可能な番号の範囲を割り当てます。範囲の定義は 2 つの属性で定義されます。サーバーで次に使用可能な番号 (範囲の下限値) と最大値 (範囲の上限値) です。プラグインを設定するときに、初期の下限値を設定します。追って、プラグインはこの下限値を更新します。

利用可能な数を各レプリカの複数の範囲に分割することで、サーバーは互いに重複することなく、継続的に番号を割り当てることができます。

3.1.1. フィルター、検索、およびターゲットエントリー

サーバーは、内部的にソートされた検索を実行し、次に指定された範囲がすでに別のサーバーによって取得されているかどうかを確認します。管理属性には、適切な順序のマッチングルールで等価インデックスを割り当てる必要があります。

DNA プラグインは、常にディレクトリーツリーの特定領域 (スコープ) と、そのサブツリー内の特定のエントリータイプ (フィルター) に適用されます。

重要

DNA プラグインは 単一 のバックエンドでのみ機能します。複数のデータベースの番号割り当ては管理できません。DNA プラグインはソートコントロールを使用して、DNA プラグイン以外で手動で値が割り当てられているかどうかを確認します。ただし、ソートコントロールを使用したこの検証は、単一 のバックエンドでのみ機能します。

3.1.2. 範囲および割り当て番号

Directory Server は、いくつかの異なる方法を使用して属性値を生成できます。

  • 基本的なシナリオでは、一意の番号属性を必要とするも属性値がないオブジェクトクラスを持つユーザーエントリーをディレクトリーに追加すると、DNA プラグインがアクティブになり、値を割り当てます。この割り当ては、DNA プラグインが単一の属性に一意の値を割り当てるように設定されている場合に行われます。
  • より単純な方法では、管理属性のテンプレート値として マジック番号 を使用します。このマジック番号は数値または単語で、サーバーの範囲に含まれません。プラグインはこれを信号として認識し、新しく割り当てられた値に置き換えます。マジック値を使用してエントリーが追加され、設定した DNA プラグインのスコープとフィルターに当該エントリーが当てはまる場合、プラグインは新しい値を生成するよう要求されます。たとえば、ldapmodify を使用すると、マジック番号として 0 を追加できます。
dn: uid=jsmith,ou=people,dc=example,dc=com
 changetype: add
 objectClass: top
 objectClass: person
 objectClass: posixAccount
 uid: jsmith
 cn: John Smith
 uidNumber: 0
 gidNumber: 0

DNA プラグインは、新規の一意の値のみを生成します。DNA プラグインが制御する属性に特定の値を使用するようにエントリーを追加または変更した場合、プラグインはその値を上書きしません。

3.1.3. 同じ範囲の複数の属性

DNA プラグインは、一意の番号の単一範囲から、1 つまたは複数の属性タイプに一意の番号を割り当てることができます。

これにより、属性に一意の番号を割り当てる方法が複数提供されます。

  • 単一の属性タイプに、一意の範囲から単一の番号を割り当てる。
  • 1 つのエントリー内の 2 つの属性に、同じ一意の番号を割り当てる。
  • 2 つの異なる属性に、同じ一意の範囲から異なる番号を割り当てる。

多くの場合、属性タイプごとに一意の番号を割り当てるだけで十分です。たとえば、新しい従業員エントリーに employeeID を割り当てる場合、各従業員エントリーに一意の employeeID を確実に割り当てることが重要です。

ただし、同じ範囲の番号から一意の番号を複数の属性に割り当てることが役に立つ場合もあります。たとえば、uidNumbergidNumberposixAccount エントリーに割り当てる場合、DNA プラグインは両方の属性に同じ番号を割り当てます。これを行うには、マジック値を指定して、両方の管理属性を変更操作に渡します。ldapmodify の使用:

#  ldapmodify -D "cn=Directory Manager" -W -x

dn: uid=jsmith,ou=people,dc=example,dc=com
changetype: modify
add: uidNumber
uidNumber: 0
-
add:gidNumber
gidNumber: 0

オブジェクトクラスで 1 つの属性しか許可されない場合、DNA プラグインは、複数の属性を処理する際に、一意の値を 1 つの属性にのみ割り当てることができます。たとえば、posixGroup オブジェクトクラスでは gidNumber は許可されますが、uidNumber は許可されません。DNA プラグインが uidNumbergidNumber の両方を管理する場合、posixGroup エントリーの作成時に uidNumbergidNumber の属性範囲から gidNumber に一意の番号を割り当てます。すべての管理属性のプールを共有すると、一意の番号の一貫した割り当てが確保され、異なるエントリーの uidNumbergidNumber が別々の範囲の同じ番号になるという競合を防止します。

DNA プラグインが複数の属性を管理する場合、1 回の変更操作ですべての属性に同じ値が割り当てられます。同じ範囲から 異なる 番号を割り当てるには、個別の変更操作を実行する必要があります。たとえば、ldapmodify を使用できます。

# ldapmodify -D "cn=Directory Manager" -W -x
dn: uid=jsmith,ou=people,dc=example,dc=com
changetype: modify
add: uidNumber
uidNumber: 0
^D

# ldapmodify -D "cn=Directory Manager" -W -x
dn: uid=jsmith,ou=people,dc=example,dc=com
changetype: modify
add: employeeId
employeeId: magic
重要

DNA プラグインを使用して複数の属性に一意の番号を割り当てるには、一意の値を必要とする各属性に、一意の値を指定します。このような指定を必要としない単一の属性の場合とは異なり、複数の属性では一意の値を指定する必要があります。場合によっては、エントリーが範囲内のすべての属性を許可しないことや、すべてのタイプを許可するものの、一意の値を必要とするのは一部のみであることもあります。

例3.1 例: DNA および一意の銀行口座番号

一例における銀行管理者は、顧客の primaryAccount 属性と customerID 属性に共通の一意の番号を割り当てるように、DNA プラグインを設定します。

また、銀行は、セカンダリー口座に対して、customer ID および primary account と同じ番号範囲から、プライマリー口座とは異なる一意の番号を割り当てたいと考えています。一例における銀行管理者は、primaryAccountcustomerID に一意の番号を割り当てた後、エントリー作成後に追加した secondaryAccount 属性を管理するように DNA プラグインを設定します。これによって確実に、primaryAccountcustomerID に共通の一意の番号が割り当てられ、異なる一意の secondaryAccount 番号が同じ範囲から割り当てられます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.