Red Hat Training

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

第7章 属性および値の管理

Red Hat Directory Server は、ディレクトリーエントリーで一部の属性タイプを動的かつ自動的に維持するためのさまざまなメカニズムいくつか提供します。これらのプラグインおよび設定オプションを使用すると、ディレクトリーデータの管理やエントリー間の関係の表現が容易になります。
エントリーの特徴の一部は、相互 関係 です。とうぜん。マネージャーには従業員がいるため、この 2 つのエントリーには関連性があります。グループはメンバーに関連付けられます。共通の物理的な場所を共有するエントリー間のように、あまり明白でない関係もあります。
Red Hat Directory Server は、このようなエントリー間の関係をスムーズにかつ一貫して維持する方法を複数提供します。複数のプラグインは、ディレクトリー内のデータの一部として属性を自動的に適用または生成できます。これには、サービスのクラス、属性のリンク、一意の数値属性値の生成が含まれます。

7.1. 属性の一意性の有効化

ディレクトリーまたはサブツリー全体で属性の値が一意になるように、Attribute Uniqueness プラグインを使用します。
複数の属性を一意にしたい場合や、異なる条件を使用する場合は、プラグインに複数の設定レコードを作成します。

7.1.1. Attribute Uniqueness プラグインの新規設定レコードの作成

値が一意である必要がある属性ごとに、Attribute Uniqueness プラグインの新しい設定レコードを作成します。
注記
コマンドラインからプラグインの新しい設定レコードのみを作成できます。
Example Attribute Uniqueness という名前のプラグインの設定解除および無効にした新しい設定レコードを作成するには、以下を実行します。
# ldapadd -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
dn: cn=Example Attribute Uniqueness,cn=plugins,cn=config
objectClass: top
objectClass: nsSlapdPlugin
objectClass: extensibleObject
cn: Example Attribute Uniqueness
nsslapd-pluginPath: libattr-unique-plugin
nsslapd-pluginInitfunc: NSUniqueAttr_Init
nsslapd-pluginType: betxnpreoperation
nsslapd-pluginEnabled: off
nsslapd-plugin-depends-on-type: database
nsslapd-pluginId: NSUniqueAttr
nsslapd-pluginVersion: none
nsslapd-pluginVendor: 389 Project
nsslapd-pluginDescription: Enforce unique attribute values
uniqueness-attribute-name: uid

7.1.2. サフィックスまたはサブツリーにおける属性一意の設定

Attribute Uniqueness プラグインを設定して、特定のサフィックス、サブツリー、またはサフィックスおよびサブツリーで属性の値が一意になるようにすることができます。

7.1.2.1. コマンドラインでサフィックスまたはサブツリーに対する属性一意の設定

たとえば、mail 属性に保存される値が一意となるように設定するには、以下を実行します。
  1. たとえば mail Attribute Uniqueness という名前の Attribute Uniqueness プラグインの新たな設定レコードを作成します。詳細は Attribute Uniqueness プラグインの新規設定レコードの作成」を参照してください。
  2. プラグイン設定レコードを有効にし、mail 属性に保存される値が内部で一意である必要があります。たとえば、ou=Engineering,dc=example,dc=com および ou=Sales, dc=example,dc=com サブツリーなどです。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=mail Attribute Uniqueness,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: on
    -
    add: uniqueness-attribute-name
    uniqueness-attribute-name: mail
    -
    add: uniqueness-subtrees
    uniqueness-subtrees: ou=Engineering,dc=example,dc=com
    uniqueness-subtrees: ou=Sales,dc=example,dc=com
  3. 必要に応じて、このプラグイン設定レコードに設定されたすべてのサブツリーで一意性を設定するには、以下を実行します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=mail Attribute Uniqueness,cn=plugins,cn=config
    changetype: modify
    add: uniqueness-across-all-subtrees
    uniqueness-across-all-subtrees: on
  4. インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name

7.1.2.2. コンソールを使用したサフィックスまたはサブツリーに対する属性一意の設定

たとえば、mail 属性に保存される値が一意となるように設定するには、以下を実行します。
  1. Attribute Uniqueness プラグインの新しい設定レコードを作成します。Attribute Uniqueness プラグインの新規設定レコードの作成」 を参照してください。
  2. プラグイン設定レコードの設定で Property Editor を開きます。詳細は、「コンソールを使用したプラグインの設定」 を参照してください。
  3. プラグインを有効にするには、以下を設定します。
    nsslapd-pluginEnabled: on
  4. mail 属性を一意である必要があります。
    uniqueness-attribute-name: mail
  5. 属性の値が一意である必要があるサブツリーを設定します。
    uniqueness-subtrees: ou=Engineering,dc=example,dc=com
    uniqueness-subtrees: ou=Sales,dc=example,dc=com
    uniqueness-subtrees 属性の値フィールドを選択し、値を追加 ボタンをクリックして 2 番目の uniqueness-subtrees 属性を追加します。
  6. 必要に応じて、このプラグイン設定レコードに設定されたすべてのサブツリーで一意性を設定するには、uniqueness-across-all-subtrees 属性を追加し、これを以下に設定します。
    uniqueness-across-all-subtrees: on
  7. OK をクリックして、Property Editorを閉じます。
  8. Directory Server インスタンスを再起動します。「コンソールを使用した Directory Server インスタンスの起動および停止」 を参照してください。

7.1.3. オブジェクトクラスに対する属性の一意性の設定

Attribute Uniqueness プラグインを設定して、特定のオブジェクトクラスが含まれるサブツリーエントリーで属性の値が一意になるようにすることができます。Directory Server は、更新されたオブジェクトの親エントリーでこのオブジェクトクラスを検索します。Directory Server でオブジェクトクラスが見つからなかった場合、検索はディレクトリーツリーのルートまで次の上位レベルのエントリーで続行されます。オブジェクトクラスが見つかった場合、Directory Server は、uniqueness-attribute-name に設定された属性の値がこのサブツリー内で一意であることを確認します。
注記
このシナリオは、コマンドラインのみを使用して設定できます。
たとえば、mail 属性に保存されている値が、nsContainer オブジェクトクラスが含まれるエントリーで一意となるように設定するには、以下を実行します。
  1. たとえば mail Attribute Uniqueness という名前の Attribute Uniqueness プラグインの新たな設定レコードを作成します。詳細は Attribute Uniqueness プラグインの新規設定レコードの作成」を参照してください。
  2. プラグイン設定レコードを有効にし、mail 属性に保存される値は、nsContainer オブジェクトクラスが含まれるエントリーで一意である必要があります。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=mail Attribute Uniqueness,cn=plugins,cn=config
    changetype: modify
    replace: nsslapd-pluginEnabled
    nsslapd-pluginEnabled: on
    -
    add: uniqueness-top-entry-oc
    uniqueness-top-entry-oc: nsContainer
  3. 必要に応じて、チェックされるオブジェクトの範囲を制限できます。サーバーが nsContainer オブジェクトクラスを含むエントリーの下にあるエントリーのサブセットのみをチェックするようにするには、uniqueness-subtree-entries-oc パラメーターに追加のオブジェクトクラスを設定します。この追加クラスも存在している必要があります。
    たとえば、nsContainer オブジェクトクラスセットが含まれるエントリーにあるすべてのエントリーで mail 属性を一意にする必要があります。ただし、プラグインは、inetOrgPerson など、この属性を提供するオブジェクトクラスが含まれるエントリーで mail のみを検索します。この場合は、以下を入力します。
    # ldapmodify -D "cn=Directory Manager" -W -p 389 -h server.example.com -x
    
    dn: cn=mail Attribute Uniqueness,cn=plugins,cn=config
    add: uniqueness-subtree-entries-oc
    uniqueness-subtree-entries-oc: inetOrgPerson
  4. インスタンスを再起動します。
    # systemctl restart dirsrv@instance_name

7.1.4. 属性の一意性プラグイン設定パラメーター

Attribute Uniqueness プラグインの設定レコードを設定するには、cn=attribute_uniqueness_configuration_record_name,cn=plugins,cn=config エントリーでプラグインの設定属性を設定します。
新しいプラグイン固有の属性名(例7.1「プラグイン固有の属性を使用した属性の一意性プラグイン設定」)を使用するか、非推奨の nsslapd-plugarg* 属性(例7.2「nsslapd-pluginarg* 属性を使用した属性の一意性プラグイン設定」)を使用して、このプラグインを設定できます。
重要
Red Hat では、プラグイン固有の属性名のみを使用して Attribute Uniqueness プラグインを設定 することを推奨します。

例7.1 プラグイン固有の属性を使用した属性の一意性プラグイン設定

dn: cn=Example Attribute Uniqueness,cn=plugins,cn=config
nsslapd-pluginEnabled: on
uniqueness-attribute-name: attribute_name
uniqueness-top-entry-oc: objectclass1 
uniqueness-subtree-entries-oc: objectclass2

例7.2 nsslapd-pluginarg* 属性を使用した属性の一意性プラグイン設定

dn: cn=Example Attribute Uniqueness,cn=plugins,cn=config
nsslapd-pluginEnabled: on
nsslapd-pluginarg0: attribute=mail
nsslapd-pluginarg1: markerObjectClass=objectclass1 
nsslapd-pluginarg2: requiredObjectClass=objectclass2

表7.1 属性の一意性プラグイン設定パラメーター

パラメーター 新規または古い構文 定義
cn both Attribute Uniqueness プラグインの設定レコードの名前を設定します。どの文字列も使用できますが、Red Hat では設定レコードの attribute_name Attribute Uniqueness という名前を付けることを推奨します
nsslapd-pluginEnabled both プラグイン設定レコードを有効(オンまたは無効(無効)します。
uniqueness-attribute-name 新規 値が一意である必要がある属性の名前を設定します。この属性は多値です。
uniqueness-subtrees 新規 プラグインが属性の値の一意性をチェックする DN を設定します。この属性は多値です。
uniqueness-across-all-subtrees 新規 有効な場合は(on)、プラグインは属性セット全体で属性が一意であることを確認します。属性を off に設定すると、一意性は更新されたエントリーのサブツリー内でのみ適用されます。
uniqueness-top-entry-oc 新規 Directory Server は、更新されたオブジェクトの親エントリーでこのオブジェクトクラスを検索します。これが見つからない場合、検索はディレクトリーツリーのルートまでの次のレベルエントリーで続行されます。オブジェクトクラスが見つかった場合、Directory Server は、uniqueness-attribute-name に設定された属性の値がこのサブツリー内で一意であることを確認します。
uniqueness-subtree-entries-oc 新規 任意で、uniqueness-top-entry-oc パラメーターを使用する場合は、エントリーにこのパラメーターに設定されたオブジェクトクラスが含まれる場合に限り、Attribute Uniqueness プラグインが属性が一意であるかどうかを確認することができます。詳細は、「オブジェクトクラスに対する属性の一意性の設定」 を参照してください。
nsslapd-pluginarg0 old
この nsslapd-pluginarg* パラメーターと同等のプラグイン固有の属性は uniqueness-attribute-name です。説明については、このパラメーターを参照してください。
属性を attribute =attribute_name に設定します。
nsslapd-pluginarg[1-9] old
この nsslapd-pluginarg* パラメーターと同等のプラグイン固有の属性は uniqueness-top-entry-oc です。説明については、このパラメーターを参照してください。
属性を markerObjectClass=object_class に設定します。
nsslapd-pluginarg[1-9] old
同等のプラグイン固有の属性は uniqueness-subtree-entries-oc です。説明については、このパラメーターを参照してください。
属性を requiredObjectClass=object_class に設定します。