SLAPD.CONF

Section: File Formats (5)
Updated: 2004-01-22
Index
 

名前

slapd.conf - スタンドアローン LDAP デーモン slapd の設定ファイル  

所在

/usr/local/etc/openldap/slapd.conf  

説明

ファイル /usr/local/etc/openldap/slapd.confslapd(8) デーモンのための設定情報を持ちます。この設定ファイルは、 複製デーモン slurpd(8) と SLAPD ツール slapadd(8), slapcat(8), slapindex(8) でも利用されます。

この slapd.conf ファイルは、(すべてのバックエンドを含む) slapd 全般に適用する一連のグローバル設定オプションと、バックエンドの実体に 固有の情報を持つデータベースバックエンド定義が0個以上続いたものから成ります。

slapd.conf の一般的なフォーマットは次とおりです。

    # comment - these options apply to every database
    <global configuration options>
    # first database definition & configuration options
    database    <backend 1 type>
    <configuration options specific to backend 1>
    # subsequent database definitions & configuration options
    ...

バックエンド固有のセクションは必要なだけ置けます。 グローバルオプションはバックエンドのセクションで上書きできます (同じオプションが2度以上現れる場合には、ファイル slapd.conf で最後にあるものが使われます)。 空行と文字 `#' で始まるコメント行は無視されます。行が空白で始まる場合、 直前の行から継続しているとみなされます。

設定行での引数は空白で区切ります。引数に空白を含めるには、その引数を 二重引用符で囲みます。引数に二重引用符(`"')あるいは バックスラッシュ文字(`\')を含めるには、その文字の前に バックスラッシュを付けます。

指定可能な個々の設定オプションは、以降の節の 「グローバル設定オプション」、「一般バックエンドオプション」、 「一般データベースオプション」でで説明します。 バックエンド固有のオプションは slapd-<backend>(5) マニュアルページで説明します。 slapd の設定ファイルについてより詳しくは "OpenLDAP 管理者ガイド" を参照してください。  

グローバル設定オプション

この節で説明するオプションは、バックエンド定義で特に上書きしない限り すべてのバックエンドに適用します。 実際のテキストで置き換える引数はブラケット <> で示します。
access to <what> [ by <who> <access> <control> ]+
エントリや属性の1セット(<what> に指定)に対するアクセス権(<access> に指定)を1人以上の要求者(<who> に指定)に与えます。 詳しくは slapd.access(5) を参照してください。
allow <features>
許可する機能を(空白文字で区切って)指定します(デフォルトは none)。 bind_v2 は LDAPv2 バインド要求の受付を許します。 slapd(8) は、今では歴史上のもの(RFC 3494)となった LDAPv2 (RFC 1777)を忠実に実装 しているわけではないことに注意してください。 bind_anon_cred は認証情報が空でない匿名バインド(DN が空のときなど)を許します。 bind_anon_dn は DN が空でないときの匿名バインドを許します。 update_anon は認証されていない(匿名の)ユーザによる更新操作の処理を許します (アクセス制御などの設定管理による制限を受けます)。
slapd サーバをデバッグコマンドラインオプション無しで始動した場合に、 slapd サーバのコマンドラインオプションを保持するファイルの 絶対パス名を指定します。
attributeoptions [option-name]...
属性タグオプションまたはタグ/地域の接頭辞を定義します。 オプションの終端には `-' があってはならず、接頭辞の終端は `-' でなければなりません。 予め定義されている接頭辞に `lang-' がありますが、 attributeoptions ディレクティブを利用すると `lang-' の定義は無効になるので、 使いたいのであれば明示的に指定しなければなりません。

タグオプションの付いた属性記述子は、オプション無しの属性記述子の サブタイプです。 この点を除いて、attributeoptions ディレクティブで定義された オプションは特別な意味を持ちません。 ディレクティブ attributeoptions で定義された接頭辞は `lang-' の付いたオプションと同様に機能します。 これはタグオプションのための接頭辞を定義していて、 この接尾辞で始まるオプションを利用可能とします。 すなわち接頭辞 `x-foo-' を定義すると、オプション `x-foo-bar' が 使えるようになるわけです。 さらに検索や比較において、 接頭辞や地域名(末尾に `-' の付くもの)は、その名前で始まるすべてのオプショ ンに一致し、末尾に `-' の無いレンジ名のオプションにも一致します。 すなわち `x-foo-bar-' は `x-foo-bar' にも `x-foo-bar-baz' にも一致します。

RFC 2251 は、私的な実験のために 'x-' が先についたオプションを予約しています。 その他のオプションは IANA に登録するべきです。 オプションの登録方法は RFC 3383 の 3.4 節を参照してください。 OpenLDAP は組込みで `binary' オプションも持っていますが、 これは転送オプションであって、タグオプションではありません。

attributetype ( <oid> [NAME <name>] [OBSOLETE]
 [DESC <description>] [SUP <oid>] [EQUALITY <oid>] [ORDERING <oid>] [SUBSTR <oid>] [SYNTAX <oidlen>] [SINGLE-VALUE] [COLLECTIVE] [NO-USER-MODIFICATION] [USAGE <attributeUsage>] )
RFC 2252 に定義されている LDAPv3 シンタックスを用いて属性型を指定します。 slapd のパーサは RFC 2252 の定義を拡張していて、 属性の OID と属性シンタックスの OID に使う数値形式の OID の他に 文字列形式の OID も許しています( objectidentifier の説明を参照)。
concurrency <integer>
並行処理の要求レベルを指定します。 これは基盤のスレッドシステムにヒントとして渡します。 デフォルトでは基盤のスレッドシステムに何もヒントを渡しません。
conn_max_pending <integer>
匿名セッションのための未解決要求の最大数を指定します。 サーバの能力を超える要求が送られた場合、そのような要求は このディレクティブに指定した数まではキューに入れられます。 指定した数を超えた場合にはセッションを閉じます。 デフォルトは 100 です。
conn_max_pending_auth <integer>
認証されたセッションのための未解決要求の最大数を指定します。 デフォルトは 100 です。
defaultsearchbase <dn>
クライアントが空のベース DN でベース検索でない検索要求を送ってくる 場合に使うデフォルトの検索ベースを指定します。
disallow <features>
禁止する機能を(空白文字で区切って)指定します(デフォルトは none)。 bind_anon は匿名バインド要求の受付を禁止します。 bind_simple は簡易(バインド)認証を禁止します。 bind_krbv4 は Kerberos V4 (バインド)認証を禁止します。 tls_2_anon は Start TLS がセッションを匿名状態を強制することを禁止します tls_authc も参照)。 tls_authc は認証後の StartTLS を禁止します( tls_2_anon も参照)。
gentlehup { on | off }
SIGHUP シグナルが「寛大な」シャットダウン実行を行うかを指定します。 slapd は新しい接続をできなくしますが、接続中のクライアントの切断はしません。 しかし以後の書込み操作は unwilling-to-perform を返します。 すべてのクライアントか接続を閉じるか、その前に SIGTERM シグナル を受けると slapd は終了します。 これは、現在アクティブなクライアントを切断することなくサーバを終了し、 別のデータベースで slapd サーバを始動したい場合に有用です。 デフォルトは off です。 このオプションと idletimeout を組み合わせて使うとよいかもしれません。
idletimeout <integer>
アイドル状態のクライアント接続を強制的に切断するまでの秒数を指定します。 idletimeout の値が 0 であるとこの機能は無効になります。 デフォルトは 0 です。
include <filename>
現在のファイルの次の行に進む前に、与えたファイルから追加の設定情報を 読み込みます。
limits <who> <limit> [<limit> [...]]
オペレーションを開始したユーザを対象にした時間やサイズの制限を指定します。 引数 who には次のいずれかを指定できます。
anonymous | users | [dn[.<style>]=]<pattern>

ここで <style> は次の構文で記述します。
<style> ::= exact | base | one | subtree | children | regex | anonymous

anonymous は、検索が事前のバインドなしに行われたときに該当します。 users は、検索がバインドの成功したユーザによって行われたときに該当します。 さもなければ、正規表現 regex による dn パターンであるとみなされます。ただし、(オプションの)キーワード dn に exactbase (同義語)の修飾がある場合には DN の厳密一致を要求し、 one で修飾した場合には直に1レベルの深さの一致を要求し、 subtree で修飾した場合には厳密一致を含む任意レベルの深さの一致を許し、 children で修飾した場合には厳密一致を含まない任意レベルの深さの一致を許します。 regex で修飾した場合は、 regex(7) に詳説されている正規表現パターンを基にした一致を要求します(修飾しない 場合と同じ)。 anonymous で修飾した場合は、バインドなし操作に一致し、 pattern の指定は無視されます。これと同じ振舞は who 節に anonymous を指定しても得られます。

現状で制限できるのは sizetime です。

時間制限の構文は次のようになっています。

    time[.{soft|hard}]=<integer>

ここで <integer> は slapd が検索要求に応答するのに利用できる秒数を表します。 クライアントが時間制限を指定してこなければ soft 制限を適用します。時間制限の要求が hard 制限を超えていると "Administrative limit exceeded" エラーが戻されます。 hard 制限を 0 またはキーワード "soft" に設定すると soft 制限を適用します。 hard 制限を -1 またはキーワード "none" に設定すると hard 制限を強制しません。 クライアントからの時間制限の指定が hard 制限以下であればクライアントの指定を優先します。 softhard であるかの指定が無い場合には元々の仕様と同じになるように、 値は soft 制限に適用され、 hard 制限は 0 に設定されます。

サイズ制限の構文は次のようになっています。

    size[.{soft|hard|unchecked}]=<integer>

ここで <integer> は slapd が検索要求に応答で返すことのできる最大エントリ数を表します。 クライアントがサイズ制限を指定してこなければ soft 制限を適用します。サイズ制限の要求が hard 制限を超えていると "Administrative limit exceeded" エラーが戻されます。 hard 制限を 0 またはキーワード "soft" に設定すると soft 制限を適用します。 hard 制限を -1 またはキーワード "none" に設定すると hard 制限を強制しません。 クライアントからのサイズ制限の指定が hard 制限以下であればクライアントの指定を優先します。 unchecked が指定されていれば、検索要求が選択できるエントリ数の制限を設定します。 選択されたエントリの数が unchecked 制限を超えた場合、 検索は "Unwilling to perform" エラーで中断します。 unchecked 制限を -1 またはキーワード "none" に設定した場合、 選択エントリ数を制限しません(デフォルト)。 softhard であるかの指定が無い場合には元々の仕様と同じになるように、 値は soft 制限に適用され、 hard 制限は 0 に設定されます。

どの制限の指定も無い場合、グローバル制限が適用されます。 デフォルト値は sizelimittimelimit と同じです。 unchecked 制限は設定されません。

loglevel <integer>
デバッグ情報と操作の統計値を syslog に出力するかを示すレベルを指定します (現在のところ、 syslogd(8) の LOG_LOCAL4 に記録されます)。各種のログレベルを加算して指定できます。 利用できるレベルは次のとおりです。
1
関数呼出しのトレース
2
パケット処理のデバッグ
4
詳細なデバッグトレース
8
接続管理
16
パケット送受信の印字
32
検索フィルタの処理
64
設定ファイルの処理
128
アクセス制御リストの処理
256
接続/操作/結果の統計ログ
512
エントリ送信の統計ログ
1024
shell バックエンドとの通信の印字
2048
エントリの解析
moduleload <filename>
ロードする動的ロード可能モジュールの名前を指定します。 引数の <filename> には絶対パス名か単純なファイルを指定できます。 絶対パス名で指定しない場合には modulepath オプションに指定したディレクトリからモジュールを探します。 このオプションと modulepath オプションは slapd のコンパイルで --enable-modules を指定した場合にだけ利用できます。
modulepath <pathspec>
動的ロード可能モジュールを検索するディレクトリのリストを指定します。 典型的にパスはコロンで区切りますが、何で区切るかは OS に依存します。
objectclass ( <oid> [NAME <name>] [DESC <description] [OBSOLETE]
 [SUP <oids>] [{ ABSTRACT | STRUCTURAL | AUXILIARY }] [MUST <oids>] [MAY <oids>] )
RFC 2252 に定義されている LDAPv3 シンタックスを用いてオブジェクトクラス を指定します。slapd のパーサは RFC 2252 の定義を拡張していて、 オブジェクトクラスの OID に使う数値形式の OID の他に 文字列形式の OID も許しています( objectidentifier の説明を参照)。オブジェクトクラスはデフォルトで "STRUCTURAL" です。
objectidentifier <name> { <oid> | <name>[:<suffix>] }
指定する OID と同等に扱う文字列形式の名前を定義します。 この文字列は、オブジェクトクラスと属性の定義において数値形式の OID を指定する所に使えます。この名前には ":xx" 形式の接尾辞をつけて 使うこともできます。たとえば "oid.xx" といった値が使えます。
password-hash <hash>
このオプションは、LDAP Password Modify Extended Operations (RFC 3052) の処理をとおして userPassword に格納するユーザパスワードの生成に使う ハッシュ方式を設定します。引数 <hash> は {SSHA}, {SHA}, {SMD5}, {MD5}, {CRYPT}, {CLEARTEXT} のいずれかでなければなりません。デフォルトは {SSHA} です。

{SHA}{SSHA} は SHA-1 アルゴリズム(FIPS 160-1)を使います。後者には seed (乱数の発生系列を変える種)が付いています。

{MD5}{SMD5} は MD5 アルゴリズム(RFC 1321)を使います。後者には seed (乱数の発生系列を変える種)が付いています。

{CRYPT}crypt(3) を使います。

{CLEARTEXT} は新しいパスワードが平文で userPassword に付け加えられることを示します。

このオプションは LDAP の追加/更新などの操作で userPassword を処理する 通常のユーザアプリケーションの動きを変えないことに注意してください。

password-crypt-salt-format <format>
LDAP Password Modify Extended Operations (RFC 3052) の処理をとおして {CRYPT} パスワード( password-hash を参照)を生成するときに crypt(3) に渡す salt の形式を指定します。

この文字列は sprintf(3) 形式で指定する必要があり、その中に1個(1個だけ)の %s 置換を含められます。 この変換は [A-Za-z0-9./] の文字から構成されたランダムな文字列で 置き換えられます。たとえば "%.2s" は2文字の salt を提供し、"$1$%.8s" は crypt(3) のいくつかのバージョンにMD5 アルゴリズムを使うことを知らせ、 ランダムな8文字の salt を提供します。 デフォルトは "%s" で、31 文字の salt を提供します。

pidfile <filename>
slapd サーバをデバッグコマンドラインオプション無しで始動した場合に、 slapd サーバのプロセス ID ( getpid(2) を参照)を保持するファイルの絶対パス名を指定します。
referral <url>
slapd(8) が要求を処理するためのローカルデータベースを見つけられなかった場合に、 クライアントに戻す紹介先(referral)を指定します。
replica-argsfile
slurpd サーバをデバッグコマンドラインオプション無しで始動した場合に、 slurpd サーバのコマンドラインオプションを保持するファイルの 絶対パス名を指定します。
replica-pidfile
slurpd サーバをデバッグコマンドラインオプション無しで始動した場合に、 slurpd サーバのプロセス ID ( getpid(2) を参照)を保持するファイルの絶対パス名を指定します。
require <conditions>
必要となる条件を指定します(デフォルトは none)。 複数の条件がある場合には空白文字で区切って指定します。 このディレクティブはグローバルにもデータベースごとにも 指定できます。 bind はディレクトリ操作の前に bind 操作を必要とします。 LDAPv3 はセッションが LDAP バージョン3を使うことを必要とします。 authc はディレクトリ操作の前に認証を必要とします。 SASL はディレクトリ操作の前に SASL 認証を必要とします。 strong はディレクトリ操作の前に強固な認証を必要とします。 キーワード strong は SASL 認証と同様に保護された「簡易」認証を許可します。 none は条件を何も必要としない場合に使います(グローバルに設定された条件を 特定のデータベースで無効にするのに使えます)。
reverse-lookup on | off
クライアント名の逆引きを有効/無効にします(configure スクリプトに --enable-rlookups を指定してコンパイルした場合に利用できます。デフォルトは off)。
rootDSE <file>
root DSE 用のユーザ定義属性を持った LDIF(5) ファイルの名前を指定します。 これらの属性は通常 slapd が作り出す属性と一緒に返されます。
sasl-authz-policy <policy>
SASL 代理認可で使う規則を指定します。 代理認可はクライアントのサーバへの認証において、 あるユーザの認証情報を使いますが、 認可とアクセス制御の目的のために使うアイデンティティには違うものを指定します。 原則的にユーザ A はユーザ A のパスワードを用いてユーザ B としてログインできます。 フラグ none は代理認可を無効にします。これはデフォルトの設定です。 フラグ from は認証 DN の saslAuthzFrom 属性に設定されている規則を使います。 フラグ to は認証 DN の saslAuthzTo 属性に設定されている規則を使います。 フラグ bothsaslAuthzFrom saslAuthzTo 属性の両方に設定されている規則を使います。 規則の指定は、代理認可を行える DN を指定する単純な正規表現です。 エントリ中の saslAuthzFrom 属性は、他のユーザにこのエントリへの代理認可を許すことを指定します。 エントリ中の saslAuthzTo 属性は、このユーザが代理認可できる他のユーザを指定します。 saslAuthzTo 規則の利用する場合、 この属性への任意の更新をユーザに認めてしまうと簡単に不正な利用ができてしまう ので注意してください。 一般に saslAuthzTo 属性は特権ユーザだけが更新できるように ACL で保護しなければなりません。
sasl-host <fqdn>
SASL 処理に利用する完全に修飾されたドメイン名を指定します。
sasl-realm <realm>
SASL レルムを指定します。デフォルトは空です。
sasl-regexp <match> <replace>
SASL 認証ユーザ名を LDAP DN に変換するために SASL 認可機構によって利用されます。認可要求が受け取られると SASL の ユーザ名(USERNAME)、レルム(REALM)、認証機構(MECHANISM) を使って、次の形式の SASL 名を作り出します。

uid=<username>[,cn=<realm>],cn=<mechanism>,cn=auth

この SASL 名を match 正規表現と比較し、一致したならば SASL 名は replace 文字列になります。 次の例のように match の中に括弧で囲まれた正規表現文字列があれば、 その括弧内の正規表現に一致する SASL 名の一部分が $1 などの 数字のついたプレースホルダ変数に格納されます。
uid=(.*),cn=.*

括弧で囲まれた正規表現が複数ある場合には、左から順番に $1, $2, $3 と格納されていきます。このプレースホルダ変数は次のように replace 文字列で使えます。
cn=$1,ou=Accounts,dc=$2,dc=$4.

SASL 名は DN あるいは LDAP URI のどちらかに置換できます。 後者の場合 slapd サーバは、それ自体のデータベースの検索に URI を使い、 検索結果が1エントリだけであれば、そのエントリの DN で SASL 名を置換します。 設定ファイルには複数の sasl-regexp ディレクティブを与えることができ、 複数のマッチングと置換パターンを指定できます。 マッチングパターンは設定ファイル内の出現順に処理され、 最初に一致したところで処理を終えます。

sasl-secprops <properties>
Cyrus SASL のセキュリティプロパティを指定します。 フラグ none は(他のプロパティ指定がなければ)、 このフラグのプロパティをデフォルト("noanonymous,noplain")にクリアします。フラグ noplain は、単純な passive attack に弱い機構を無効にします。フラグ noactive は、active attack に弱い機構を無効にします。フラグ nodict は、passive dictionary attack に弱い機構を無効にします。フラグ noanonyous は、匿名ログインをサポートする機構を無効にします。フラグ forwardsec は、セッション間の forward secrecy を要求します。フラグ passcred は、クライアントの身元証明を渡す機構を要求します (そして身元証明を渡せる機構がそうすることを可能にします)。プロパティ minssf=<factor> は、最小の受け入れ可能な security strength factor を暗号のための有効キー長に近い整数値で指定します。 0 (ゼロ)は暗に保護無しを意味します。1 は暗に整合性の保護だけを意味します。 56 は DES あるいは他の弱い暗号化方式を有効にします。 112 は triple DES あるいは他の強い暗号化方式を有効にします。 128 は RC4, Blowfish, 他の現代的な強い暗号化方式を有効にします。 デフォルトは 0 です。プロパティ maxssf=<factor> は、最大の受け入れ可能な security strength factor を整数値で指定します(minssf の説明を参照)。 デフォルトは INT_MAX です。プロパティ maxbufsize=<factor> は、セキュリティ層の受信バッファの最大サイズを指定します。 これが 0 ならばセキュリティ層は無効になります。 デフォルトは 65536 です。
schemadn <dn>
このサーバのエントリを制御する subschema subentry の識別名を指定します。 デフォルトは "cn=Subschema" です。
security <factors>
要求されるセキュリティ強度係数を(空白文字で区切って)指定します。 個々の係数には整数値を指定しますが、およそ要求する暗号キー長に 等しいものです。たとえば、値 112 は 3DES と等しく、128 は Blowfish と等しいです。 このディレクティブはグローバルにも設定できますし、 データベースごとにも設定できます。 ssf=<n> は全体的なセキュリティ強度係数を指定します。 transport=<n> はトランスポートのセキュリティ強度係数を指定します。 tls=<n> は TLS セキュリティ強度係数を指定します。 sasl=<n> は SASL セキュリティ強度係数を指定します。 update_ssf=<n> はディレクトリ更新のための全体的なセキュリティ強度係数を指定します。 update_transport=<n> はディレクトリ更新のためのトランスポートのセキュリティ強度係数を指定します。 update_tls=<n> はディレクトリ更新のための TLS セキュリティ強度係数を指定します。 update_sasl=<n> はディレクトリ更新のための SASL セキュリティ強度係数を指定します。 transport 係数とは、たとえば ldapi:// (つまり IPSEC)などの基盤のトランスポート によって提供されるセキュリティの程度のことです。 これは普通は使われません。
sizelimit {<integer>|unlimited}
sizelimit size[.{soft|hard|unchecked}]=<integer> [...]
検索操作から返すエントリの最大数を指定します。デフォルトのサイズ制限は 500 です。 値として -1 unlimited を指定すると無制限になります。2番目の形式ではサイズ制限を細かく設定できます。 同じ行に特別の引数を追加できます。個々のフラグの説明は limits を参照してください。
sockbuf_max_incoming <integer>
匿名セッションのための LDAP PDU サイズの最大値を指定します。 デフォルトは 262143 です。
sockbuf_max_incoming_auth <integer>
認証セッションのための LDAP PDU サイズの最大値を指定します。 デフォルトは 4194303 です。
srvtab <filename>
Kerberos 認証を利用するクライアントのために必要となる kerberos キーが 存在する srvtab ファイルを指定します。このオプションは、Kerberos 認証を 利用する場合にのみ意味があります。
threads <integer>
主スレッドプールの最大サイスを指定します。 デフォルトは 32 です。
timelimit {<integer>|unlimited}
timelimit time[.{soft|hard}]=<integer> [...]
slapd が検索要求の応答に使う最大秒数(実時間)を指定します。 デフォルトの時間制限は 3600 です。 値として -1 unlimited を指定すると無制限になります。2番目の形式では時間制限を細かく設定できます。 同じ行に特別の引数を追加できます。個々のフラグの説明は limits を参照してください。
ucdata-path <path>
Unicode 文字デーブルのあるディレクトリのパスを指定します。 デフォルトは /usr/local/var/ucdata です。
 

TLS オプション

slapd が TLS (Transport Layer Security)をサポートするように構築されていれば、 さらに次にあげるオプションを指定できます。
TLSCipherSuite <cipher-suite-spec>
どの暗号化方式をどのような優先順位で受け付けるかを設定します。 <cipher-suite-spec> は OpenSSL の暗号化方式の指定方法に基づきます。 たとえば次のように指定します。

TLSCipherSuite HIGH:MEDIUM:+SSLv2

指定することのできる暗号化方式を調べるには次のコマンドを使います。

openssl ciphers -v <cipher-suite-spec>

TLSCACertificateFile <filename>
slapd が認めるすべての認証局の証明書を含んだファイルを指定します。
TLSCACertificatePath <path>
認証局の証明書が個々のファイルに分けて置かれているディレクトリのパスを 指定します。普通はこれか TLSCACertificateFile のどちらか1つだけを使います。
TLSCertificateFile <filename>
slapd サーバの証明書のファイルを指定します。
TLSCertificateKeyFile <filename>
TLSCertificateFile で指定したファイルに格納されている証明書に対応する slapd サーバの私有鍵のファイルを指定します。 現在のところ私有鍵はパスワードで保護してはならないので、 このファイルを注意深く保護することが極めて重要です。
TLSRandFile <filename>
/dev/[u]random が利用できないときに乱数を取得するファイルを指定します。 一般には EGD/PRNGD ソケットの名前を設定します。 このファイル名を設定するのには環境変数 RANDFILE も使えます。
TLSVerifyClient <level>
TLS セッション開設時にクライアント証明書をどうするかを指定します。 引数の <level> には次のキーワードのいずれかを指定できます。
never
これはデフォルトです。 slapd はクライアント証明書を求めません。
allow
クライアント証明書が要求されます。 証明書が与えらていない場合でもセッションは普通に継続します。 不適当な証明書が与えられた場合でもセッションは普通に継続します。
try
クライアント証明書が要求されます。 証明書が与えらていない場合でもセッションは普通に継続します。 不適当な証明書が与えられた場合はセッションをすぐに切断します。
demand | hard | true
これらのキーワードは互換性の都合によりどれも同じ意味を持ちます。 クライアント証明書が要求されます。 証明書が与えらていない場合、 あるいは不適当な証明書が与えられた場合はセッションをすぐに切断します。

適正なクライアント証明書は TLS セッションでの SASL EXTERNAL を利用するために必要となります。 したがってデフォルトではない TLSVerifyClient の設定が SASL EXTERNAL 認証においては必須となります。

 

一般バックエンドオプション

この節のオプションは、そのオプションを指定するバックエンドにのみ適用されます。 これらのオプションはあらゆる種別のバックエンドでサポートされます。
backend <databasetype>
bdb, dnssrv, ldap, ldbm, meta, monitor, null, passwd, perl, shell, sql, or tcl, バックエンド定義の始まりを示します。 引数 <databasetype> には、バックエンドが提供するデータベースにより bdb, dnssrv, ldap, ldbm, meta, monitor, null, passwd, perl, shell, sql, tcl のいずれかを指定できます。

 

一般データベースオプション

この節のオプションは、そのオプションが定義されているデータベースに のみ適用されます。これらのオプションはあらゆる種別のバックエンドで サポートされます。各データベースについて少なくとも databasesuffix オプションは指定しなければなりません。
database <databasetype>
新しいデータベース実体定義の始まりを示します。 引数 <databasetype> にはバックエンドが提供するデータベースにより bdb, dnssrv, ldap, ldbm, meta, monitor, null, passwd, perl, shell, sql, tcl のいずれかを指定できます。
lastmod on | off
slapd がエントリの運用属性 modifiersName, modifyTimestamp, creatorsName, createTimestamp を自動的に管理するかを指定します。 デフォルトで lastmod は on になっています。
maxderefdepth <depth>
実名参照するエイリアスの最大数を指定します。 エイリアスの無限ループを回避するために利用します。 デフォルトは 1 です。
readonly on | off
このオプションはデータベースを「読取り専用」モードにします。 このモードでデータベースを更新しようとすると "unwilling to perform" エラーが返ります。デフォルトで reeadonly は off になっています。
replica uri=ldap[s]://<hostname>[:port]|host=<hostname>[:port] [tls=yes|critical] [suffix=<suffix> [...]] bindmethod=simple|sasl [binddn=<simple DN>] [credentials=<simple password>] [saslmech=<SASL mech>] [secprops=<properties>] [realm=<realm>] [authcId=<authentication ID>] [authzId=<authorization ID>] [attr[!]=<attr list>]
このデータベースの複製サイトを指定します。 複製される slapd ディレクトリサービスの設定について詳しくは "OpenLDAP 管理者ガイド" を参照してください。引数 suffix の指定が1個でもあれば、その指定したサブツリーを複製します(デフォルトでは データベース全体を複製します)。引数 uri のサポートによりレプリカ LDAP サーバを LDAP URI で指定できるようになったので、引数 host による指定は推奨しません。 引数 bindmethodsimple の場合はオプション binddn credentials を必要とします。これは(TLS や IPSEC などの)十分な セキュリティサービスがある場合にのみ使うようにすべきです。 bindmethod sasl の場合はオプション saslmech を必要とします。

SASL バインドのセキュリティプロパティを (先述のキーワード sasl-secprops のように)設定するには secprops オプションを指定してください。 デフォルトでない SASL レルムを設定するには realm オプションを使います。 引数 mechanism に Kerberos を使う場合、kerberos の実体を authcId に与えるべきです。 引数 attr <attr list> に属性のリストを指定すると、その指定した属性だけを複製するようになります。 さらにオプションの ! マークを付けると、指定した属性だけを複製しなくなります。 属性のリストに objectClass があると、 それに関連するすべての属性が対象となります。
replogfile <filename>
変更を記録する複製ログファイルの名前を指定します。 複製ログは通常 slapd(8) が書き出し、 slurpd(8) が読み取ります。より詳しくは slapd.replog(5) を参照してください。 複製ログファイルは機密情報を含むかもしれないので、 このオプションで指定するファイルは read/write/execute アクセス権を制限したディレクトリにあるようにすべきです。
rootdn <dn>
このデータベースに対するアクセス権制御あるいは管理限度の制限に 従わないエントリの DN を指定します。 この DN はディレクトリ中のエントリのものでもよいですし、 そうでなくてもかまいません。root DN が無い場合(デフォルト)、 root のアクセス権限は与えられません。 rootdn は(最初にデータベースを作成するときなど)必要なときにだけ 指定することを勧めます。rootdn がデータベースの namingContext (接尾辞)に属する場合には、簡易バインドのパスワードを rootpw ディレクティブで指定することもできます。
rootpw <password>
rootdn オプションで与えた DN のためのパスワード (あるいはパスワードをハッシュしたもの)を指定します。 rootdn がデータベースの namingContext に属するものでなければ、 このオプションで与えたパスワードは無視されます。 このオプションには、クリアテキストの他にも サーバがサポートしている RFC 2307 userPassword formats をすべて指定できます( password-hash の説明を参照)。 パスワードのハッシュを生成するには slappasswd(8) を利用できます。クリアテキストと {CRYPT} の利用は勧められません。 rootpw が空の場合(デフォルト)、root DN の認証は(SASL などの)他の手段で 行われます。SASL の利用を推奨します。
suffix <dn suffix>
このバックエンドデータベースに渡す問合せの DN 接尾辞を指定します。 複数の suffix 行を与えてもよいですが、 各データベース定義に少なくとも1つは必要です。 あるデータベースの接尾辞が別のデータベースの接尾辞の「中」にある場合、 その中の接尾辞を持つデータベースは、設定ファイル中でより前になければ なりません。
subordinate
このバックエンドデータベースが別のバックエンドデータベースの下位に あることを指定します。下位データベースは接尾辞を1つだけ持てます。 このオプションにより、複数のデータベースから成る単一の namingContext を 作成できます。このデータベースの接尾辞が上位データベースの namingContext 内にある場合、上位データベースに対する検索は下位データベースにも伝播します。 単一の namingContext と関連づけられたデータベースのすべては、同一の rootdn を持つべきです。 この設定により LDAP 操作の振舞が影響を受けることはありません。 特に namingContext 内で、ある下位データベースから別のデータベースに 移動する moddn を行うことはできません。
updatedn <dn>
このオプションは、スレーブの slapd にのみ適用できます。これは、複製の変更を許す DN を指定します(通常これは 複製の変更をするときに slurpd(8) がバインドする DN です)。
updateref <url>
slapd(8) が複製されたローカルデータベースの更新を要求されたときに クライアントに戻す紹介先(referral)を指定します。 このディレクティブはいくつも指定でき、各 url が戻されます。
 

データベース固有のオプション

各データベースには固有の設定オプションがあります。 そのようなオプションの説明は slapd-<backend>(5) マニュアルページに分けて載せています。  

設定例

次に設定ファイルの簡単な例を示します。

include   /usr/local/etc/openldap/schema/core.schema
pidfile   /usr/local/var/slapd.pid

# Subtypes of "name" (e.g. "cn" and "ou") with the
# option ";x-hidden" can be searched for/compared,
# but are not shown.  See slapd.access(5).
attributeoptions x-hidden lang-
access to attr=name;x-hidden by * =cs

database  bdb
suffix    "dc=our-domain,dc=com"
# The database directory MUST exist prior to
# running slapd AND should only be accessible
# by the slapd/tools. Mode 700 recommended.
directory /usr/local/var/openldap-data
# Indices to maintain
index     objectClass  eq
index     cn,sn,mail   pres,eq,approx,sub

# We serve small clients that do not handle referrals,
# so handle remote lookups on their behalf.
database  ldap
suffix    ""
uri       ldap://ldap.some-server.com/
lastmod   off

"OpenLDAP 管理者ガイド" にはより長い設定ファイルの例が 注解つきで載っています。 別の例としてはオリジナルの /usr/local/etc/openldap/slapd.conf があります。  

関連ファイル

/usr/local/etc/openldap/slapd.conf
デフォルトの slapd 設定ファイル
 

関連項目

ldap(3), slapd-bdb(5), slapd-dnssrv(5), slapd-ldap(5), slapd-ldbm(5), slapd-meta(5), slapd-null(5), slapd-passwd(5), slapd-perl(5), slapd-shell(5), slapd-sql(5), slapd-tcl(5), slapd.replog(5), slapd.access(5), locale(5), slapd(8), slapadd(8), slapcat(8), slapindex(8), slappassword(8), slurpd(8),

OpenLDAP 管理者ガイド (http://www.OpenLDAP.org/doc/admin/)  

謝辞

OpenLDAP は OpenLDAP プロジェクト (http://www.openldap.org/ )が開発/管理しています。 OpenLDAP はミシガン大学の LDAP 3.3 リリースより派生しました。  

和訳

稲地 稔 <inachi@kkd.biglobe.ne.jp>


 

Index

名前
所在
説明
グローバル設定オプション
TLS オプション
一般バックエンドオプション
一般データベースオプション
データベース固有のオプション
設定例
関連ファイル
関連項目
謝辞
和訳