Oracle Fusion Middleware Oracle Internet Directory管理者ガイド 11g リリース1(11.1.1) B55919-02 |
|
![]() 前 |
![]() 次 |
この章では、Oracle Internet Directoryの集合属性について説明し、それらを管理する方法について説明します。
この章の項目は次のとおりです。
エントリのコレクションで構成されるエントリによって共有される属性は、集合属性と呼ばれます。集合属性の値は表示可能ですが、コレクション内のエントリにアクセスするクライアントによって更新することはできません。管理者は、関連付けられている集合属性サブ・エントリを定義および変更することで、集合属性を管理します。
関連項目: 詳細は、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)」を参照してください。 |
RFC 3671では、集合属性の特定のスキーマについて説明しています。RFCで説明されているのとまったく同じ集合属性スキーマを定義して使用することもできます。ただし、Oracle Internet Directoryでは、より簡単に使用できるように、集合属性の定義を拡張しています。
各集合属性スキーマは、集合サブエントリで使用する前に、RFC 3671に従って定義する必要があります。たとえば、電話番号属性を集合属性として使用する場合は、次のように、ディレクトリでc-telephoneNumber
のスキーマを定義します。
( 2.5.4.20.1 NAME 'c-TelephoneNumber' SUP telephoneNumber COLLECTIVE )
また、集合属性は複数値である必要があります。
サブエントリを定義することで、集合属性を作成します。次の例では、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
どのエントリが集合属性を実際に取得するかを制御できます。これは、subtreeSpecification
属性を集合サブエントリで使用して実行できます。subtreeSpecification
属性が集合サブエントリで指定されていない場合、集合属性は、この集合サブエントリが定義されているすべての子エントリ内に含まれています。
関連項目: subtreeSpecification 属性の詳細は、http://www.ietf.org にあるRFC 3672「Subentries in the Lightweight Directory Access Protocol(LDAP)」を参照してください。 |
次の3つの項では、subtreeSpecification
属性の使用方法の例を示します。
base
キーワードをsubtreeSpecification
で使用して、サブツリーに対する集合属性を制限できます。
たとえば、集合属性をサブツリーcn=users,dc=mycompany,dc=com
のみに制限するには、前に示したdc=mycompany,dc=com
のサブツリーを使用できますが、次のようにbase
値を集合サブエントリのsubtreeSpecification
属性に追加します。
SubtreeSpecification: {base "cn=users"}
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レベルを超えているためです。
specificExclusions
、chopBefore
および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.6
はobjectclass
person
のオブジェクト識別子です。
SpecificationFilterの例
キーワードand
、or
および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} }
一部のエントリに、集合属性値ではなく独自の属性値を指定する場合、その属性をそれらのエントリに特別に追加し、属性collectiveExclusions:
attributeName
をそのエントリに追加します。すべての集合属性を除外する必要がある場合は、属性excludeAllCollectiveAttributes: true
をそれらのエントリに追加します。これにより、集合属性値の値がオーバーライドされます。たとえば、TelephoneNumber
属性およびexcludeAllCollectiveAttributes: true
属性をエントリcn=jane smith, ou=Americas,cn=users,dc=mycompany,dc=com
に追加した場合、このエントリは、集合属性ではなく、独自のTelephoneNumber
値を持つようになります。
他のディレクトリ・エントリと同様、コマンドラインから集合属性サブエントリを管理できます。
集合属性を作成するには、次のように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} }