OpenLDAPの設計:OpenLDAPで始めるディレクトリサーバ構築(1)(2/3 ページ)
ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。この連載ではオープンソースの「OpenLDAP」を用いて、ディレクトリサーバの構築・活用方法を解説します。(編集部)
「継承」の概念
このほか、オブジェクトクラスには継承という概念があります。構造型のオブジェクトクラスとして「account」オブジェクトクラスではなく、例えばinetorgperson.schemaファイルに用意された「inetOrgPerson」オブジェクトクラスを追加することを選択した場合、ユーザーエントリには、「account」オブジェクトクラスを選択した場合のエントリと比較し、「sn」属性が追加で必要になります。
次のLDIFファイルは、inetOrgPersonオブジェクトクラスを利用する場合に必要となる定義を行った例です。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
これは、「inetOrgPerson」オブジェクトクラスが「organizationalPerson」オブジェクトクラスを継承し、さらにその「organizationalPerson」オブジェクトクラスが継承する「person」オブジェクトクラスにおいて、「sn」を必須の属性として定義しているためです。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このように、スキーマを設計する作業においては、LDAPクライアントが必要とする情報を、ディレクトリサーバが扱うデータ型へと落としていくことになりますが、その過程ではオブジェクトクラスの持つ制約にも注意しながら作業を進める必要があります。
属性設計
オブジェクトクラスに任意属性、必須属性として定義された各属性もそれぞれがオブジェクトIDを持ち、属性値を比較するルール、属性値が取り得る構文(いわゆる型)などが定められています。
例えば、posixAccountオブジェクトクラスに必須属性として定義されたuidNumber属性は、
- オブジェクトIDは、"1.3.6.1.1.1.1.0"
- 等価比較する場合のルール(EQUALITY)は、数値の一致
- 属性値は、数値型(Integer)で構成される(SYNTAX)
- 複数の値は取らない(SINGLE-VALUE)
と定義されています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
また、同じくposixAccountオブジェクトクラスに必須属性として定義されたhomeDirectory属性は、
- オブジェクトIDは、"1.3.6.1.1.1.1.3"
- 等価比較する場合のルール(EQUALITY)は、大文字/小文字を区別する
- 属性値は、International Alphabet 5(ASCII文字列)で構成される(SYNTAX)
- 複数の値は取らない(SINGLE-VALUE)
と定義されています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このような属性の定義を把握することで、対象となる属性にはどのような値の設定が可能か、検索時にはどのような比較が行われ、どのようなタイプのIndexを作成するべきかの判断が容易になります。
このほか、属性もオブジェクトクラスと同様に、上位の属性の持つ性質を継承することができます。例えば、core.schemaファイルで定義される属性cn、snは、属性nameの持つ、
- 等価比較する場合のルール(EQUALITY)は、大文字/小文字を無視する
- 部分文字列を比較する場合のルール(SUBSTR)は、大文字/小文字を無視する
- 属性値は、Directory String(UTF8文字列)で構成され(SYNTAX)32768文字まで
という定義を継承しています。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このように、各属性の持つ定義に加え、継承という概念を理解することで、属性の拡張が必要となった場合の作業を容易に進めることができるようになります。
Copyright © ITmedia, Inc. All Rights Reserved.