LDAPの検索操作

LDAPの操作モデル

LDAPクライアントがLDAPサーバに対して要求できる操作を以下の表にまとめます。

検索操作

検索操作はLDAPの操作の中でも複雑な部類に入ります。
検索の際には、「検索ベース」、「スコープ」、「検索フィルタ」というパラメータを意識する必要があります。

検索ベース
検索ベース(search base)は、DITの中で検索の起点となるエントリを言います。

スコープ
スコープ(scope)は、検索ベースからの検索範囲を指定するためのものです。

例えば、次のようなツリーがあるとします。

検索ベースを(dc=exmaple,dc=valinux,dc=jp)とすると、検索範囲は次のように表すことができます。なお、○が検索範囲、×が検索範囲外です。

検索フィルタ
検索フィルタ(search filter)は、検索するエントリの属性の条件を指定します。
検索フィルタの文字列表現の書式は、RFC4515 (Lightweight Directory Access Protocol (LDAP): String Representation of Search Filters)に定義されています。

  • 同値(=)
    リスト: 検索フィルタ(同値)
mail=user001@example.valinux.jp

属性mailが、user001@example.valinux.jpであるエントリのみが検索されます。

  • 近値(~=)
    リスト: 検索フィルタ(近値)
cn~=test

指定値にほぼ等しい値を持つエントリが検索されます。

  • 以上(>=)
    リスト: 検索フィルタ(以上)
gidNumber>=600

gidNumberが600以上のエントリが検索されます。

  • 以下(<=)
    リスト: 検索フィルタ(以下)
gidNumber<=600

gidNumberが600以下のエントリが検索されます。

  • 存在(=*)
    リスト: 検索フィルタ(存在)
cn=*

cnを含む全てのエントリが検索されます。

  • 部分文字列( 属性=[ <先頭> ] any [ <末尾> ] )
    リスト: 検索フィルタ(先頭一致)
uid=user*

uidが「user」から始まるエントリが検索されます。

  • リスト: 検索フィルタ(含む場合)
mail=*dev*

mailに「dev」を含むエントリが検索されます。

  • 論理積(&)
    リスト: 検索フィルタ(論理積)
(&(cn=taro)(sn=yamada))

cnが「taro」で、かつsnが「yamada」であるエントリを検索します。

  • 論理和(|)
    リスト: 検索フィルタ(論理和)
(|(cn=taro)(cn=ichiro))

cnが「taro」または「ichiro」であるエントリを検索します。

  • 否定(!)
    リスト: 検索フィルタ(否定)
(!(cn=taro))

cnが「taro」でないエントリを検索します。