第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 属性に保存される値が一意となるように設定するには、以下を実行します。
- たとえば mail Attribute Uniqueness という名前の Attribute Uniqueness プラグインの新たな設定レコードを作成します。詳細は 「Attribute Uniqueness プラグインの新規設定レコードの作成」を参照してください。
- プラグイン設定レコードを有効にし、
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
- 必要に応じて、このプラグイン設定レコードに設定されたすべてのサブツリーで一意性を設定するには、以下を実行します。
# 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
- インスタンスを再起動します。
# systemctl restart dirsrv@instance_name
7.1.2.2. コンソールを使用したサフィックスまたはサブツリーに対する属性一意の設定
たとえば、mail 属性に保存される値が一意となるように設定するには、以下を実行します。
- Attribute Uniqueness プラグインの新しい設定レコードを作成します。「Attribute Uniqueness プラグインの新規設定レコードの作成」 を参照してください。
- プラグイン設定レコードの設定で Property Editor を開きます。詳細は、「コンソールを使用したプラグインの設定」 を参照してください。
- プラグインを有効にするには、以下を設定します。
nsslapd-pluginEnabled: on
- mail 属性を一意である必要があります。
uniqueness-attribute-name: mail
- 属性の値が一意である必要があるサブツリーを設定します。
uniqueness-subtrees: ou=Engineering,dc=example,dc=com uniqueness-subtrees: ou=Sales,dc=example,dc=com
uniqueness-subtrees
属性の値フィールドを選択し、値を追加 2 番目のuniqueness-subtrees
属性を追加します。 - 必要に応じて、このプラグイン設定レコードに設定されたすべてのサブツリーで一意性を設定するには、
uniqueness-across-all-subtrees
属性を追加し、これを以下に設定します。uniqueness-across-all-subtrees: on
- Property Editorを閉じます。をクリックして、
- Directory Server インスタンスを再起動します。「コンソールを使用した Directory Server インスタンスの起動および停止」 を参照してください。
7.1.3. オブジェクトクラスに対する属性の一意性の設定
Attribute Uniqueness プラグインを設定して、特定のオブジェクトクラスが含まれるサブツリーエントリーで属性の値が一意になるようにすることができます。Directory Server は、更新されたオブジェクトの親エントリーでこのオブジェクトクラスを検索します。Directory Server でオブジェクトクラスが見つからなかった場合、検索はディレクトリーツリーのルートまで次の上位レベルのエントリーで続行されます。オブジェクトクラスが見つかった場合、Directory Server は、
uniqueness-attribute-name
に設定された属性の値がこのサブツリー内で一意であることを確認します。
注記
このシナリオは、コマンドラインのみを使用して設定できます。
たとえば、mail 属性に保存されている値が、nsContainer オブジェクトクラスが含まれるエントリーで一意となるように設定するには、以下を実行します。
- たとえば mail Attribute Uniqueness という名前の Attribute Uniqueness プラグインの新たな設定レコードを作成します。詳細は 「Attribute Uniqueness プラグインの新規設定レコードの作成」を参照してください。
- プラグイン設定レコードを有効にし、
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
- 必要に応じて、チェックされるオブジェクトの範囲を制限できます。サーバーが 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
- インスタンスを再起動します。
# 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
パラメーター | 新規または古い構文 | 定義 |
---|---|---|
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 に設定します。
|