連載
» 2008年10月28日 00時00分 公開

OpenLDAPで始めるディレクトリサーバ構築(3):OpenLDAPサーバを利用したユーザー認証 (1/3)

ユーザー情報や組織情報などを一元的に管理するディレクトリサーバは、企業システムの中で重要な役割を果たしています。この連載ではオープンソースの「OpenLDAP」を用いて、ディレクトリサーバの構築・活用方法を解説します。(編集部)

[菊池研自,伊藤忠テクノソリューションズ株式会社]

 前回「OpenLDAPのインストールと動作確認」では、OpenLDAPサーバのインストール方法を説明しました。今回は、OpenLDAPサーバの設定ファイル「slapd.conf」を編集し、OpenLDAPサーバへエントリ登録を行った後、LDAPクライアントでのユーザー認証設定を行うまでを説明します。

 なお今回は、CentOS 5.2に付属するopenldap-serversパッケージ(OpenLDAP 2.3)を用い、バックエンドデータベースにはそのopenldap-serversパッケージに含まれるBerkeley DBを利用した構成を前提に説明していきます。前回説明したソースコードからインストールしたOpenLDAPサーバなどを利用している場合は、必要に応じてインストールパスなどを読み替えてください。

slapd.confの概要

 slapd.confファイルは、OpenLDAPサーバの設定ファイルです。OpenLDAPサーバの実行プログラムであるslapdの起動時に解析されるファイルであり、このファイルに記述された設定は、slapdのみでなく、slapadd、slapcat、slapindex……といった各SLAPDツールコマンドの実行時にも参照されています。

 slapd.confファイルは、前半のOpenLDAPサーバ全体に適用される設定を記述する「グローバルセクション」と、それに続く後半のバックエンドデータベースに適用される「データベースセクション」より構成されています(図1)。後半のデータベースセクションは、「suffix」オプションを変えることで複数記述できるようになっています。

図1 slapd.confの構成 図1 slapd.confの構成

ユーザー認証のためのslapd.confの設定

 それでは早速、今回の目的であるユーザー認証に必要となるオプションを確認していきましょう(注1)。ここでは、openldap-serversパッケージに付属する「slapd.conf」ファイルの主なオプションを確認していきます。

# vi /etc/openldap/slapd.conf
……[略]……
include      /etc/openldap/schema/core.schema
include      /etc/openldap/schema/cosine.schema
include      /etc/openldap/schema/inetorgperson.schema
include      /etc/openldap/schema/nis.schema

 前半のグローバルセクションにある「include」オプションには、core.schemaに加え、cosine.schemanis.schemaが含まれている必要があります。これは、今回のユーザー認証に必要な「accountオブジェクトクラス」「posixAccountオブジェクトクラス」などを追加するために必要なスキーマが定義されているためです。

……[続き]……
database      bdb
suffix        "dc=my-domain,dc=com"
rootdn        "cn=Manager,dc=my-domain,dc=com"
rootpw        secret
directory       /var/lib/ldap

 また、後半のデータベースセクションには、「database」オプションとして最も実績のあるバックエンドデータベースであるBerkeley DBを示す「bdb」が指定され、また「suffix」オプションには、今回作成するDIT(Directory Information Tree)のトップとなる「dc=my-domain,dc=com」が指定されていることを確認します(注2)。

 さらに、後のエントリ登録時の認証に必要となる「rootdn」および「rootpw」オプションには、管理者用dnとして「cn=Manager,dc=my-domain,dc=com」および適切なパスワード(今回は、平文で「secret」)を指定します。「directory」は、今回利用するBerkeley DB関連のファイルを作成するディレクトリを指定するオプションです。

……[続き]……
index objectClass eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

 引き続きデータベースセクションでは、ユーザー認証の検索処理時に利用されるインデックスが指定されていることを確認します。

 今回対象とするユーザー認証処理では、デフォルトでは「ObjectClass」「uid」「memberUid」「uniqueMember」「uidNumber」に対して値が一致するかの検索(eq: equalityタイプのインデックスを利用した検索)が行われます。

 デフォルト状態のインデックス設定では、OpenLDAPの管理者ガイド(注3)に示される、次のエラーログ「<= bdb_equality_candidates: (foo) index_param failed (18)」が、「uniqueMember」属性に対し出力されてしまいます。今回はユーザー認証時に利用しない「uniqueMember」が一致検索の対象とならないようにするため、/etc/ldap.confに、以下の1行を追加します。

# vi /etc/ldap.conf
……[略]……
nss_initgroups backlink

注1:slapd.confのグローバルセクションに設定可能な各オプションは、「man slapd.conf」のように、オンラインマニュアルで確認できます。また、データベースセクションに設定可能な各オプションは、slapd-[backend]という形式で用意された、バックエンドデータベースごとのオンラインマニュアルで確認することができます。例えばバックエンドデータベースにBerkeley DBを利用している場合は、man slapd-bdbのようにしてマニュアルを参照できます。

注2:今回は、「suffix」オプションに指定する値はデフォルト値のまま説明を続けていますが、必要に応じて値を変更してください。例えば、ドメイン名「example.com」を利用している場合は、「dc=example,dc=com」などへ変更してください。

注3:http://www.openldap.org/doc/admin24/tuning.html#What%20to%20watch%20out%20for


slapd.conf設定内容の確認

 パラメータを変更した後は、slaptestコマンドを用いて、slapd.confの設定内容を確認しておきましょう。slaptestコマンドでは、「-d 64」という具合に設定ファイルに関するデバック出力を指定することで、設定ファイルの行番号と、そこから読み取った内容を表示させることができます。

# slaptest -u -d 64 -f /etc/openldap/slapd.conf
reading config file /etc/openldap/slapd.conf
line 5 (include      /etc/openldap/schema/core.schema)
reading config file /etc/openldap/schema/core.schema
……[略]……
config file testing succeeded

 slapd.confファイルに問題がある場合は、上記の例のように「config file testing succeeded」と表示されて終了するのではなく、問題の行まで解析が行われたところで、問題がある旨を示すメッセージが表示されます。slapd.confファイルに問題がある場合は、このメッセージを参考に問題点を修正することができます。

 slapd.confファイルへの設定内容が正しいことが確認できた後は、設定ファイルの内容を反映させるため、OpenLDAPサーバを再起動します。

# service ldap restart
slapd を停止中:                                          [ OK ]
slapd の設定ファイルをチェック中: config file testing succeeded
                                                        [ OK ]
slapd を起動中:                                          [ OK ]

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。