5.3. 一意の数値属性値の割り当ておよび管理


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

注記

DNA プラグインは 属性の一意性 を保証するわけではありません。プラグインが管理する範囲から値を手動で割り当てた場合、プラグインでその値が一意であるかどうかはチェックされません。

DNA プラグインを使用すると、サプライヤー上の異なるローカル DNA プラグインインスタンスに、別の範囲を設定して、レプリケーションの競合を効果的に回避できます。たとえば、サプライヤー A は 1 から 1000 までの番号を、サプライヤー B は 1001 から 2000 までの番号を割り当て可能です。これにより、各サプライヤーが真に一意の番号セットを使用するようになります。

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

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

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

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

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

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

重要

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

5.3.1.2. dnaMagicRegen を使用して一意の番号を割り当てる

DNA プラグインが管理する属性のテンプレート値としてマジック値 (dnaMagicRegen) を使用します。このマジック値は、サーバー範囲外の数値または単語です。エントリーがマジック値とともに追加され、そのエントリーが DNA プラグインの設定されたスコープとフィルター内にある場合、マジック値によってプラグインが自動的にトリガーされ、新しい一意の値が生成されます。

たとえば、ldapmodify ユーティリティーを使用して、マジック値としてゼロ (0) を追加できます。

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

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
Copy to Clipboard Toggle word wrap

設定された dnaMagicRegen により、DNA プラグインはエントリーが追加されたときに、マジック値と等しい値を持つ属性に対してのみ一意の値を生成します。DNA プラグインにマジック値を設定しない場合、プラグインによって管理対象属性のすべての値が上書きされます。

注記
DNA プラグインが 1 つの属性のみを管理し、追加されたエントリーに管理対象属性が含まれていない場合、追加操作がトリガーとなって DNA プラグインがこの属性を追加し、その一意の値を生成します。

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

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

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

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

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

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

#  ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x

dn: uid=jsmith,ou=people,dc=example,dc=com
changetype: modify
add: uidNumber
uidNumber: 0
-
add:gidNumber
gidNumber: 0
Copy to Clipboard Toggle word wrap

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

DNA プラグインが複数の属性を管理する場合、1 回の変更操作ですべての属性に同じ値が割り当てられます。ただし、エントリーが範囲に対して定義されている各タイプの属性を許可していない場合、またはエントリーが定義されているすべての属性タイプを許可しているが、属性のサブセットのみが一意の値を必要とする場合は、個別の変更操作を実行して、同じ範囲から 異なる 番号を割り当てる必要があります。以下に例を示します。

# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: uid=jsmith,ou=people,dc=example,dc=com
changetype: modify
add: uidNumber
idNumber: 0

^D

# ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
dn: uid=jsmith,ou=people,dc=example,dc=com
changetype: modify
add: employeeId
employeeId: magic
Copy to Clipboard Toggle word wrap

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

銀行の例では、顧客の primaryAccount 属性と customerID 属性に同じ一意の番号を使用します。銀行の例の管理者は、DNA プラグインが同じ範囲から両方の属性に一意の値を割り当てるよう設定していました。

銀行では、顧客 ID とプライマリーの口座番号と同じ範囲のセカンダリー口座に番号を割り当てますが、これらの数字をプライマリーの口座番号と同じにすることはできません。銀行の例の管理者は、DNA プラグインを設定して secondaryAccount 属性も管理するようにしますが、エントリーが作成され、primaryAccount 属性と customerID 属性が割り当てられた後にのみ、エントリーに secondaryAccount 属性を追加します。これにより、primaryAccountcustomerID が同じ一意の番号を共有し、secondaryAccount 番号は完全に一意でありながら同じ番号範囲からのものになります。

5.3.2. DNA プラグインの構文

Distributed Numeric Assignment (DNA) プラグイン自体は、識別名 (DN) cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config が指定されたコンテナーエントリーです。DNA プラグインエントリーの各 DNA エントリーは、DNA プラグインの新しい管理範囲を定義します。したがって、DNA プラグインの新しい管理範囲を設定するには、コンテナーエントリーの下にエントリーを作成します。たとえば、プラグインでエントリー内の uidNumber 属性を管理する場合は、範囲やその他のプラグイン設定を定義する cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config 設定エントリーを作成します。

プラグインの構文は、プラグインを単一のサーバーで使用するように設定するか、レプリケーショントポロジー内の複数のサーバーで使用するように設定するかによって異なります。

単一サーバー用の DNA プラグイン構文

プラグインを単一のサーバーで使用する場合、基本的な DNA 設定エントリーによって次の属性が定義されます。

dnaType
プラグインが管理する値を定義します。
dnaScope
プラグインがエントリーを検索するためのベースとして使用するエントリー (DN) を定義します。
dnaFilter
プラグインが管理するエントリーを識別するために使用する検索フィルターを定義します。
dnaNextValue
エントリーが作成された後、プラグインが次に使用可能な値を割り当てるように定義します。

以下は、単一の属性タイプに対する単一のサーバー上の DNA 設定エントリーの例です。

dn: cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
objectClass: top
objectClass: dnaPluginConfig
cn: Account UIDs
dnatype: uidNumber
dnafilter: (objectclass=posixAccount)
dnascope: ou=people,dc=example,dc=com
dnaNextValue: 1
Copy to Clipboard Toggle word wrap

レプリケーショントポロジーのサーバーの DNA プラグイン構文

複数のサプライヤーに分散された数値割り当てを設定するには、範囲を共有および転送するための次の情報も設定エントリーに含める必要があります。

dnaMaxValue: 1000
サーバーが割り当てることができる最大数を定義します。
dnaThreshold
範囲転送ができる程度に範囲が狭いしきい値を定義します。dnaThreshold が設定されていない場合、デフォルト値は 1 です。
dnaRangeRequestTimeout
範囲転送を要求するときに、サーバーが別のサーバーからの応答を待機するタイムアウトの期間を定義します。サーバーがこの期間内に範囲を受信しない場合、範囲転送要求は別のサーバーに送信されます。デフォルトでは、値は 10 秒に設定されています。
dnaSharedCfgDN
すべてのサプライヤーサーバー間で共有され、各サプライヤーの範囲情報を格納する設定エントリー DN を定義します。
dnaNextRange
サーバーが manages 属性に割り当てる特定の数値範囲を定義します。dnaNextRange 値は、転送に使用可能な次の範囲を示し、範囲がサーバーによって割り当てられるか使用されると、プラグインにより自動的に管理されます。この範囲はまだ別のサーバーに割り当てられておらず、ローカル Directory Server で引き続き使用できます。

以下は、レプリケーショントポロジーのサプライヤー上の DNA 設定エントリーの例です。

dn: cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
objectClass: top
objectClass: dnaPluginConfig
cn: Account UIDs
dnatype: uidNumber
dnafilter: (objectclass=posixAccount)
dnascope: ou=people,dc=example,dc=com
dnanextvalue: 1
dnaMaxValue: 1300
dnasharedcfgdn: cn=Account UIDs,ou=ranges,dc=example,dc=com
dnathreshold: 100
dnaRangeRequestTimeout: 60
dnaNextRange: 1301-2301
Copy to Clipboard Toggle word wrap

DNA 設定エントリーで使用できる属性の完全なリストは、Distributed Numeric Assignment プラグイン属性 を参照してください。

dnaNextRange 属性値が設定されていない場合、Directory Server は dnaMaxValue 値を次の範囲の上限として使用し、範囲を自動的に割り当てます。Directory Server が他のサーバーに個別の特定の範囲を割り当てるようにする場合は、dnaNextRange 属性を明示的に設定する必要があります。

各サプライヤーは、範囲と接続設定に関する情報を含む個別の設定エントリーで現在の範囲を追跡します。このエントリーは、dnaSharedCfgDN 内の場所の子です。Directory Server は設定エントリーを他のすべてのサプライヤーに複製するため、各サプライヤーはその設定をチェックして、新しい範囲に接続するサーバーを見つけることができます。以下に例を示します。

dn: dnaHostname=ldap1.example.com+dnaPortNum=389,cn=Account UIDs,ou=Ranges,dc=example,dc=com
objectClass: dnaSharedConfig
objectClass: top
dnahostname: ldap1.example.com
dnaPortNum: 389
dnaSecurePortNum: 636
dnaRemainingValues: 1000
Copy to Clipboard Toggle word wrap

5.3.3. コマンドラインを使用したサプライヤーに DNA プラグイン設定エントリーの作成

サプライヤーが管理対象属性に一意の番号を割り当てるようにする場合は、適用する設定ごとに DNA プラグイン設定エントリーを作成します。DNA プラグイン設定エントリーは、cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config プラグインコンテナーエントリーの配下にあるサブエントリーです。

複数のサプライヤーが存在する環境では、各サプライヤーが独自の値の範囲を管理します。範囲はサプライヤー間で複製され、各サプライヤーはどのサプライヤーがどの範囲を管理しているかを認識しています。その後、サプライヤーは、最初のサプライヤーの範囲値が不足している場合に、この情報を使用して別のサプライヤーに範囲転送を要求します。

次の例では、dsconf ユーティリティーを使用して、サプライヤーに新しい DNA プラグイン設定エントリーを作成します。

前提条件

  • root 権限がある。

手順

  1. サプライヤーに DNA 設定エントリーを作成します。

    #  dsconf <instance_name> plugin dna config "Account UIDs" add --type uidNumber --filter "(objectclass=posixAccount)" --scope ou=People,dc=example,dc=com --next-value 1 --max-value 1300 --shared-config-entry "cn=Account UIDs,ou=Ranges,dc=example,dc=com" --threshold 100 --range-request-timeout 60 --magic-regen 99999
    
    Successfully created the cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
    Copy to Clipboard Toggle word wrap

    このコマンドは、ou=People,dc=example,dc=com 下の新しく作成されたすべての posixAccount エントリーで、99999 のマジック値ではなく、uidNumber 属性に一意の値を設定する DNA プラグイン設定を作成します。サプライヤーは 1300 までの値を設定し、値が 1200 に達すると 2 番目のサプライヤーに範囲転送を要求します。2 番目のサプライヤーが 60 秒間応答しない場合、最初のサプライヤーは 3 番目のサプライヤーに範囲転送を要求します。

    注記

    レプリケーションのないサーバーまたは 1 つのサプライヤー環境のサプライヤーに対して設定エントリーを作成する場合は、--type--filter--scope--next-value オプションのみを設定します。

    DNA プラグインの設定属性の詳細は、Distributed Numeric Assignment プラグインの属性 および DNA プラグインの構文 を参照してください。

  2. オプション: すべてのサプライヤーサーバー間で共有される設定エントリーを作成します。

    # ldapmodify -D "cn=Directory Manager" -W -H ldap://server.example.com -x
    dn: ou=Ranges,dc=example,dc=com
    changetype: add
    objectclass: top
    objectclass: extensibleObject
    objectclass: organizationalUnit
    ou: Ranges
    -
    dn: cn=Account UIDs,ou=Ranges,dc=example,dc=com
    changetype: add
    objectclass: top
    objectclass: extensibleObject
    cn: Account UIDs
    Copy to Clipboard Toggle word wrap
  3. DNA プラグインを有効にします。

    #  dsconf <instance_name> plugin dna enable
    
    Enabled plugin 'Distributed Numeric Assignment Plugin'
    Copy to Clipboard Toggle word wrap

検証

  • 設定エントリーの詳細を表示します。

    # dsconf <instance_name> plugin dna config "Account UIDs" show
    
    dn: cn=Account UIDs,cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config
    cn: Account UIDs
    dnaFilter: "(objectclass=posixAccount)"
    dnaInterval: 1
    dnaMagicRegen: 99999
    dnaMaxValue: 1300
    dnaNextValue: 1
    dnaRangeRequestTimeout: 60
    dnaScope: ou=People,dc=example,dc=com
    dnaSharedCfgDN: cn=Account UIDs,ou=Ranges,dc=example,dc=com
    dnaThreshold: 100
    dnaType: uidNumber
    objectClass: top
    objectClass: dnaPluginConfig
    Copy to Clipboard Toggle word wrap

5.3.4. Web コンソールを使用したサプライヤーでの DNA プラグイン設定エントリーの作成

Directory Server が管理対象属性に一意の番号を割り当てるようにする場合は、適用する設定ごとに DNA プラグイン設定エントリーを作成します。Directory Server は、このようなプラグイン設定エントリーを cn=Distributed Numeric Assignment Plugin,cn=plugins,cn=config プラグインコンテナーエントリーに保存します。

複数のサプライヤーが存在する環境では、各サプライヤーが独自の値の範囲を管理します。範囲はサプライヤー間で複製され、各サプライヤーはどのサプライヤーがどの範囲を管理しているかを認識しています。その後、サプライヤーは、最初のサプライヤーの範囲値が不足している場合に、この情報を使用して別のサプライヤーに範囲転送を要求します。

前提条件

手順

  1. Directory Server インスタンスを選択します。
  2. Plugins メニューを開き、リストから DNA プラグインを選択します。
  3. 新しいプラグイン設定エントリーの設定を開始するには、Add Config ボタンをクリックします。
  4. DNA Configuration タブでフィールドを設定します。

    たとえば、プラグインによって、ou=People,dc=example,dc=com の下に新しく作成されたすべての posixAccount エントリーの uidNumber 属性に、マジック値 99999 ではなく一意の値を設定するとします。さらに、サプライヤーに 1300 までの値を設定させ、一意の値が 1200 に達したときに 2 番目のサプライヤーに範囲転送を要求するようにします。この場合、次のフィールドを設定します。

    • Config NameAccount UIDs
    • DNA Managed AttributesuidNumber
    • Filter"(objectclass=posixAccount)"
    • Subtree Scopeou=People,dc=example,dc=com
    • Next Value1
    • Max Value1300
    • Magic Regeneration Value99999
    • Threshold100
    • Range Request Timeout60

      注記
      レプリケーションのないサーバーまたは単一サプライヤー環境のサプライヤーに対して設定エントリーを作成する場合は、DNA Managed AttributesFilterSubtree Scope および Next Value フィールドのみを設定します。
  5. Shared Config Settings タブに移動し、Shared Config Entry DN フィールドを cn=Account UIDs,ou=Ranges,dc=example,dc=com に設定します。この共有設定エントリーには、現在のサーバーに一意の値がない場合に範囲転送のために接続するサーバーに関する情報が含まれています。
  6. Save Config ボタンをクリックしてプラグイン設定を保存します。
  7. プラグインを有効にするには、スイッチを Plugin is enabled の位置に切り替えます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat