ヘッダーをスキップ
Oracle® Fusion Middleware Oracle Internet Directory管理者ガイド
11g リリース1(11.1.1)
B55919-05
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

16 集合属性の管理

この章では、Oracle Internet Directoryの集合属性について説明し、それらを管理する方法について説明します。

この章の項目は次のとおりです。

16.1 集合属性の概要

エントリのコレクションで構成されるエントリによって共有される属性は、集合属性と呼ばれます。集合属性の値は表示可能ですが、コレクション内のエントリにアクセスするクライアントによって更新することはできません。管理者は、関連付けられている集合属性サブ・エントリを定義および変更することで、集合属性を管理します。


関連項目:

詳細は、http://www.ietf.orgにあるRFC 3671「Collective Attributes in the Lightweight Directory Access Protocol (LDAP)」およびRFC 3672「Subentries in the Lightweight Directory Access Protocol (LDAP)」を参照してください。


16.1.1 RFCでの定義およびOracleによる拡張

RFC 3671では、集合属性の特定のスキーマについて説明しています。RFCで説明されているのとまったく同じ集合属性スキーマを定義して使用することもできます。ただし、Oracle Internet Directoryでは、より簡単に使用できるように、集合属性の定義を拡張しています。

16.1.1.1 RFC 3671

各集合属性スキーマは、集合サブエントリで使用する前に、RFC 3671に従って定義する必要があります。たとえば、電話番号属性を集合属性として使用する場合は、次のように、ディレクトリでc-telephoneNumberのスキーマを定義します。

( 2.5.4.20.1 NAME 'c-TelephoneNumber' SUP telephoneNumber COLLECTIVE )

また、集合属性は複数値である必要があります。

16.1.1.2 Oracleの拡張機能

使用方法は次のように拡張されています。

  • 集合属性用のスキーマ定義は必要ありません。任意の属性を集合属性として使用できます。

  • 属性を集合属性にするには、サブタイプcollectiveを使用して集合サブエントリに属性を作成します。

  • 集合属性は、複数値または単一値のどちらにすることもできます。

この章のこれ以降の部分では、Oracle Internet Directoryでの使用方法について説明します。

16.1.2 集合属性サブエントリの定義

サブエントリを定義することで、集合属性を作成します。次の例では、dc=mycompany,dc=comの下のエントリに集合サブエントリを定義します。このサブエントリによって、TelephoneNumberおよびpostalCodeが、dc=mycompany,dc=comの下のすべてのエントリに集合属性として含まれるようになります。

Dn: cn=collective attributes, dc=mycompany,dc=com
Cn: collective attributes
Objectclass: subentry
Objectclass: collectiveAttributeSubentry
Objectclass: top
Objectclass: extensibleobject
TelephoneNumber;collective: 1234560000
PostalCode;collective: 98765

16.1.3 subtreeSpecificationの使用

どのエントリが集合属性を実際に取得するかを制御できます。これは、subtreeSpecification属性を集合サブエントリで使用して実行できます。subtreeSpecification属性が集合サブエントリで指定されていない場合、集合属性は、この集合サブエントリが定義されているすべての子エントリ内に含まれています。


関連項目:

subtreeSpecification属性の詳細は、http://www.ietf.orgにあるRFC 3672「Subentries in the Lightweight Directory Access Protocol(LDAP)」を参照してください。


次の3つの項では、subtreeSpecification属性の使用方法の例を示します。

16.1.3.1 ベース

baseキーワードをsubtreeSpecificationで使用して、サブツリーに対する集合属性を制限できます。

たとえば、集合属性をサブツリーcn=users,dc=mycompany,dc=comのみに制限するには、前に示したdc=mycompany,dc=comのサブツリーを使用できますが、次のようにbase値を集合サブエントリのsubtreeSpecification属性に追加します。

SubtreeSpecification: {base "cn=users"}

16.1.3.2 最小および最大

minimumキーワードとmaximumキーワードをsubtreeSpecification属性で使用して、集合属性が適用される、baseのRDN数を制御します。

たとえば、集合属性をou=Americas,cn=users,dc=mycompany,dc=comの下のエントリに追加するが、cn=users,dc=mycompany,dc=comの1レベル下の子エントリ、またはcn=users, dc=mycompany,dc=comから2レベル下の子エントリには追加しない場合は、subtreeSpecificationを次のように定義します。

SubtreeSpecification: {base "cn=users", minimum 2, maximum 4}

この構成では、cn=john doe, ou=Americas,cn=users,dc=mycompany,dc=comは集合属性を取得しますが、cn=inbox,cn=2009,cn=emailFolder,cn=john doe, ou=Americas,cn=users,dc=mycompany,dc=comは集合属性を取得しません。これは、base cn=usersからの距離が4レベルを超えているためです。

16.1.3.3 特定の除外

specificExclusionschopBeforeおよびchopAfterキーワードを使用して、特定のエントリからさらに集合属性を除外できます。たとえば、集合属性をou=Europeには追加しない場合は、次のようにsubtreeSpecificationを定義します。

SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe"} }

集合属性を親の識別名に含めるが、その子エントリには含めない場合、次のような仕様フィルタを定義します。

SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=Global User" } }

この例では、エントリcn=Global User,ou=all region,cn=users,dc=mycompany,dc=comは集合属性を取得しますが、エントリcn=emailFolder, cn=GlobalUser,ou=all region,cn=users,dc=mycompany,dc=comは集合属性を取得しません。

集合属性を特定のオブジェクト・クラスのみに含める場合は、そのオブジェクト・クラスのオブジェクト識別子または名前をsubtreeSpecicfication属性のspecificationFilterに指定します。たとえば、集合属性をobjectclass personのみに含める場合は、次のように仕様フィルタを定義します。

SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=GlobalUser"},  specificationFilter item:person }

または、次のように使用することもできます。

SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=GlobalUser"},  specificationFilter item:2.5.6.6 }

ここで、2.5.6.6objectclass personのオブジェクト識別子です。

SpecificationFilterの例

キーワードandorおよびnotを使用して、次のようにsubtreeSpecicficationをさらに詳細に指定できます。

SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=GlobalUser"},  specificationFilter and:{ item:2.5.6.6, item:2.5.6.7} }
SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=GlobalUser"},  specificationFilter or:{ item:2.5.6.6, item:2.5.6.7} }
SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=GlobalUser"},  specificationFilter not:{ item:2.5.6.7} }

16.1.4 集合属性のオーバーライド

一部のエントリに、集合属性値ではなく独自の属性値を指定する場合、その属性をそれらのエントリに特別に追加し、属性collectiveExclusions:attributeNameをそのエントリに追加します。すべての集合属性を除外する必要がある場合は、属性excludeAllCollectiveAttributes: trueをそれらのエントリに追加します。これにより、集合属性値の値がオーバーライドされます。たとえば、TelephoneNumber属性およびexcludeAllCollectiveAttributes: true属性をエントリcn=jane smith, ou=Americas,cn=users,dc=mycompany,dc=comに追加した場合、このエントリは、集合属性ではなく、独自のTelephoneNumber値を持つようになります。

16.2 コマンドラインを使用した集合属性の管理

他のディレクトリ・エントリと同様、コマンドラインから集合属性サブエントリを管理できます。

16.2.1 ldapaddを使用したサブエントリの追加

集合属性を作成するには、次のようにldapaddを使用してLDIFファイルに集合サブエントリを定義します。

ldapadd -p port_number -h host -D cn=orcladmin -q -f subentry.ldif

ここで、subentry.ldifの内容は、次のようになります。

Dn: cn=collective attributes, dc=mycompany,dc=com
Cn: collective attributes
Objectclass: subentry
Objectclass: collectiveAttributeSubentry
Objectclass: top
Objectclass: extensibleobject
TelephoneNumber;collective: 1234560000
PostalCode;collective: 98765
SubtreeSpecification: {base "cn=users", minimum 2, maximum 4, specificExclusions { chopBefore: "ou=Europe", chopAfter: "cn=GlobalUser"},  specificationFilter not:{ item:2.5.6.7} }

16.2.2 ldapmodifyを使用したサブエントリの変更

ファイルを変更するには、次のコマンドを発行します。

ldapmodify -p 3060 -D "cn=orcladmin" -q -f mod_subentry.ldif

ここで、mod_subentry.ldifは次のようになります。

dn: cn=collective attributes, dc=mycompany,dc=com
changetype: modify
replace: PostalCode;collective
PostalCode;collective: 98768