1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

OpenLDAPのindex設定

Last updated at Posted at 2019-12-28

前提

CentOS7.5の同梱版のOpenLDAPを使用

indexとは

LDAPで検索を行う際に、対象エントリを高速に検索することができます。

<具体的に言うと>
キャッシュを使用してインデックス情報を作成しておくことで、それを用いて対応するエントリを直ちに探すことができます。

indexの種類

indexはslapd.conf内のindexディレクティブで指定します。
対象属性名と種類を指定します。

等価インデックス

属性検索の際に値が完全一致するエントリを検索するのに用いられる。
例えば検索時に「uid=hogehoge」など完全一致する検索を多くするのであればこの指定方法が有効です。

指定方法

index uid eq

存在インデックス

ある属性を持つすべてのエントリを検索するのに用いられます。
例えば検索時に「displayName=*」などの指定方法で検索をかけることが多い場合はこの指定方法が有効です。

指定方法

index displayName pres

部分文字列インデックス

属性の値の一部に、指定した値が含まれるかを検索するのに用いられます。
例えば検索時に「cn=hoge」のような指定方法で検索をかけることが多い場合はこの指定方法が有効です。

指定方法

index cn sub

これらを組み合わせてこのような指定もできます。

index uid eq,pres,sub

どの属性をインデックス指定すればよい?

基本的には以下2パターンで判断します。

logファイルを確認

通常は/var/log/slapd.log などにログを出力するよう指定しているかと思います。
ログファイルの中で以下のような記述がある場合は、対象の属性のインデックスが足りていないと判断できます。

<= bdb_equality_candidates: (uid) not indexed

この場合はuidをインデックス設定すると、検索速度が速くなります。
3日分ほどのログを確認し、同様のログが出ていないか確認します。

よく使うLDAPフィルタ条件

これは運用によりけりなのですが、検索時に多用する属性がある場合その属性もインデックス指定してあげたほうがより速度が向上します。

例えば、以下のようなフィルタで日次処理を行っていたりする場合は
対象の属性はインデックス指定したほうがよいです。

(&(uid=*)(xxxFlag=1))

設定方法

slapd.confの編集

先の例のように、indexディレクティブで追加したい属性と種類を記述します。

slapd.conf
~
index uid eq,pres,sub
index uidNumber pres
~

slapindexコマンドの実施

まずldapのサービスを止めます。

systemctl stop slapd

slapindexコマンドを実行します。

slapindex

すると、以下のようなエラーが出るかと思います。

WARNING!
Runnig as root!
There's a fair chance slapd will fail to start.
Check file permissions!

このコマンドを実行した際に、root権限でインデックスが作られます。
基本的にOpenLDAPで使用するDBの所有権はldapで動かす必要があるので
/var/lib/ldap 配下の所有権をldapに変更する必要があります。

chown -R ldap. /var/lib/ldap/*

サービスを起動します。

systemctl start slapd

念のため、数日間ログをチェックしてインデックスエラーが出ていないかチェックしておくと尚いいです。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?