Sun Directory Services 3.1 管理ガイド

ディレクトリ情報

ディレクトリの情報は、基本的な情報となるエントリと別名エントリ、およびこの基本的な情報の構造を決めるインフラ情報からなります。

ディレクトリエントリ

「ディレクトリエントリ」は、一連の「属性」とその「値」からなります。各エントリは「オブジェクトクラス」という属性を持ち、これがそのエントリに記述されているオブジェクトの種類を指定し、そこに含まれる属性のセットを定義します。オブジェクトクラスの属性には、必須のものと任意のものがあります。たとえば、オブジェクトクラス country は、必須属性 countryName と任意属性 description および searchGuide で記述します。

スキーマは、オブジェクトクラスエントリの必須属性と任意属性を定義します。スキーマは継承階層も定義します。すべてのオブジェクトクラスは、自分より上のオブジェクトクラスの特性を継承します。たとえば、オブジェクトクラス organizationalPerson はオブジェクトクラス Person のサブクラスなので、必須属性と任意属性をオブジェクトクラス Person から継承します。

すべてのオブジェクトクラスは、オブジェクトクラス top から属性を継承します。オブジェクトクラス top には必須属性 objectClass があるため、すべてのエントリには少なくとも 1 つのオブジェクトクラス属性があります。

オブジェクトクラスの種類として「構造」と「補助」があります。構造オブジェクトクラスは、エントリの種類を定義します。1 つのエントリには、1 つの構造オブジェクトクラスしか指定できません。補助オブジェクトクラスは、それだけではエントリの種類を定義できませんが、構造オブジェクトクラスを指定すれば定義できます。たとえば、補助オブジェクトクラス uidObject を使えば、ディレクトリの任意のエントリに uid を割り当てることができます。

識別名と相対識別名

ディレクトリ情報は、エントリがツリー構造に編成された階層になっています。各エントリには必ず親エントリがあり、子エントリがある場合とない場合があります。階層の一番上は「ルートエントリ」といいます。

エントリは、その「識別名」(DN) で識別されます。識別名は一連の属性と値からなります。最初の属性とその値がエントリの「相対識別名」(RDN) で、残りの部分が親エントリの識別名です。識別名は、ディレクトリサービス全体で固有の値です。

図 1-1 に、ディレクトリ情報の構造例を示します。黒く塗ったエントリの識別名と相対識別名を示します。

図 1-1 ディレクトリ情報の構造

Graphic

識別名の一部となることができる属性を「名前付き属性」と呼びます。Sun Directory Services で提供するデフォルトのスキーマでは、名前付き属性は次のようになります。

別名

別名リストを定義できます。別名リストのエントリは識別名 (DN) で識別され、エントリが表すディレクトリエントリ名 (別名のオブジェクト名) を持っています。別名リストとそのエントリは、同じルートエントリの下になければなりません。別名オブジェクトクラスの定義については、「オブジェクトクラスのリファレンス」を参照してください。

バインドと検索の操作では、ディレクトリが別名識別名を実際のエントリの識別名に変換するように指定できます。これを別名の「参照」と呼びます。これ以外の操作では、別名エントリを通常のエントリとして扱う必要があります。たとえば、別名のオブジェクトではなく、別名エントリそのものの相対識別名を変更する場合には、別名の参照は行いません。

別名エントリと検索

別名エントリを伴う検索や読み取り操作の結果は、別名の参照を行うかどうかによって異なります。別名の参照は LDAP クライアントが指定します。別名の参照フラグには、次の 4 つの設定が可能です。

たとえば、ディレクトリに次の対のエントリがあるとします。

cn=Stan Smith, role=Personnel Administrator, ou=Personnel, o=XYZ, c=US 

次の属性を持つ 

objectclass=orgPerson 

 

cn=Stan Smith 

 

telephoneNumber=123 456 7890 

 

mail=dtmail 

cn=personnel, o=XYZ, c=US 

次の属性を持つ 

objectclass=alias 

objectclass=aliasObject 

 

cn=personnel 

aliasedObjectName="cn=Stan Smith, role=Personnel Administrator, ou=Personnel, o=XYZ, c=US" 

検索時に別名の参照を行う場合、サブツリー o=XYZ、c=US で cn=personnel の電話番号を検索すると、Stan Smith の電話番号が得られます。別名の参照を行わない場合、電話番号は得られません。

役割に対し別名を定義すると、役割の担当者がしばしば変わるような場合 (たとえば、時間外に呼び出される当直のネットワークマネージャのような場合)、特に便利です。ユーザーはいつも同じ名前で照会できるからです。aliasedObjectName の値はスクリプトで変更できます。このスクリプトは、スケジュールに従って実行され、ldapmodify を呼び出して変更を行います。

ldapsearch で別名の参照の使い方を指定する方法については、ldapsearch(1) のマニュアルぺージを参照してください。

別名エントリと認証

ディレクトリに対してある種の操作を行うには、ユーザーの認証が必要です。たとえば、ディレクトリ内容の変更やエントリの userPassword 属性の読み取りが行われるようなときです。許されるアクセスレベルは、バインドプロセスで確立されます。詳細は、「ディレクトリとのバインド」を参照してください。

バインド要求に指定された識別名が別名エントリの識別名であることがあります。別名の参照を使用する場合には、別名エントリの ailiasedObjectName に指定されている識別名とユーザーはバインドされ、その識別名を持つエントリに定義されているアクセス権が与えられます。

バインド操作での別名の参照は、LDAP サーバーに対して行う必要がある構成選択の 1 つです。別名の参照を使用せずに別名エントリの識別名でバインドすると、パスワード属性がないため、アクセスは拒否されます。これは、別名の参照を許可すると、ユーザーはパスワードなしにバインドできることを意味します。

Sun Directory Services に対し別名の参照を指定する方法については、「LDAP パラメータの構成」を参照してください。