SLAPD.CONF

Section: File Formats (5)
Updated: 2005/01/24
Index Return to Main Contents
 

名前

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>] [DESC <description>] [OBSOLETE] [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 も参照)。
ditcontentrule ( <oid>
 [NAME <name>] [DESC <description>] [OBSOLETE] [AUX <oids>] [MUST <oids>] [MAY <oids>] [NOT <oids>] )
RFC 2252 に定義されている LDAPv3 シンタックスを用いて DIT Content Rule を指定します。 slapd のパーサは RFC 2252 の定義を拡張していて、 属性の OID と属性シンタックスの OID に使う数値形式の OID の他に 文字列形式の OID も許しています( objectidentifier の説明を参照)。
gentlehup { on | off }
SIGHUP シグナルが「寛大な」シャットダウン実行を行うかを指定します。 slapd は新しい接続をできなくしますが、接続中のクライアントの切断はしません。 しかし以後の書込み操作は unwilling-to-perform を返します。 すべてのクライアントか接続を閉じるか、その前に SIGTERM シグナル を受けると slapd は終了します。 これは、現在アクティブなクライアントを切断することなくサーバを終了し、 別のデータベースで slapd サーバを始動したい場合に有用です。 デフォルトは off です。 このオプションと idletimeout を組み合わせて使うとよいかもしれません。
idletimeout <integer>
アイドル状態のクライアント接続を強制的に切断するまでの秒数を指定します。 idletimeout の値が 0 であるとこの機能は無効になります。 デフォルトは 0 です。
include <filename>
現在のファイルの次の行に進む前に、与えたファイルから追加の設定情報を 読み込みます。
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> [<hash>...]
このオプションは、LDAP Password Modify Extended Operations (RFC 3062) の処理をとおして userPassword に格納するユーザパスワードの生成に使う 1つ以上のハッシュ方式を設定します。引数 <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 3062) の処理をとおして {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) を参照)を保持するファイルの絶対パス名を指定します。
replicationinterval
The number of seconds slurpd waits before checking the replogfile for changes.
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 属性に設定されている規則を使います。 フラグ any saslAuthzFrom saslAuthzTo 属性の両方に設定されている規則を使います。 検査の順序は to, from の順序で行い、最初に成功したものを使います。 フラグ both any と同義ですが、将来的に無くなる予定です。 フラグ all は両方の認可の成功を要求します。 規則の指定は、代理認可を行える DN を指定する単純な正規表現です。 エントリ中の saslAuthzFrom 属性は、他のユーザにこのエントリへの代理認可を許すことを指定します。 エントリ中の saslAuthzTo 属性は、このユーザが代理認可できる他のユーザを指定します。 saslAuthzTo 規則の利用する場合、 この属性への任意の更新をユーザに認めてしまうと簡単に不正な利用ができてしまう ので注意してください。 一般に saslAuthzTo 属性は特権ユーザだけが更新できるように ACL で保護しなければなりません。 saslAuthzFromsaslAuthzTo の値は ID または ID の集合です。この値の指定には3つの形式があります。
ldap:///<base>??[<scope>]?<filter>
dn[.<dnstyle>]:<pattern>
u[<mech>[<realm>]]:<pattern>
<pattern>

<dnstyle>:={exact|onelevel|children|subtree|regex}

1番目の形式は正当な LDAP uri ですが、 <host>:<port>, <attrs>, <extensions> 部分は省略しなければなりません。この形式の指定の場合には saslAuthzFrom または saslAuthzTo. について内部的な検索が行われます。 2番目の形式は、オプションのスタイル修飾子のついた DN, です。 スタイル就職子には exact, onelevel, children, subtree があり、それぞれ指定した DN のエントリ、指定した DN 直下のエントリ、 指定した DN も含めたサブツリーのエントリに該当します。 <pattern> には正規化した DN を指定します。 特殊なスタイル修飾子 regex を指定した場合、 <pattern> は DN に一致する正規表現パターンとして regex(7). を使って処理します。 3番目の形式は SASL の認証 ID であり、オプションで認証機構 <mech> と、認証機構でサポートしているレルム <realm> を指定できます。 認証機構を指定する必要性についてはまだ議論中であり、 この指定を当てにするのは極力避けてください。 後方互換性のために、形式の種別の指定がなければ(すなわち <pattern> だけを指定した場合)、指定の DN のエントリに厳密一致するものとします。 つまり <pattern> は正規化した DN として扱います。 saslAuthzFromsaslAuthzTo の解釈はセキュリティに影響するので、ID の種別は明確に指定するよう 強く推奨します。
sasl-host <fqdn>
SASL 処理に利用する完全に修飾されたドメイン名を指定します。
sasl-realm <realm>
SASL レルムを指定します。デフォルトは空です。
sasl-regexp <match> <replace>
SASL 認証ユーザ名を認可のために利用する LDAP DN に変換するために SASL 機構によって利用されます。 結果の DN を持つエントリが存在しなくても適正とみなされることに注意 してください。 認可要求が受け取られると 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 文字列で使えます。
UID=$1,OU=Accounts,DC=example,DC=com

SASL 名は DN あるいは LDAP URI のどちらかに置換できます。 後者の場合、サーバはそれ自体のデータベースの検索に URI を使い、 検索結果が1エントリだけであれば、そのエントリの DN で SASL 名を置換します。 LDAP URI にはホスト名、ポート、属性、拡張指定があってはなりませんが フィルタは必須です。たとえば次に示すように指定します。
ldap:///OU=Accounts,DC=example,DC=com??one?(UID=$1)

設定ファイルには複数の 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/share/openldap/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 になっています。
limits <who> <limit> [<limit> [...]]
オペレーションを開始したユーザを対象にした時間やサイズの制限を指定します。 引数 who には次のいずれかを指定できます。
anonymous | users | [dn[.<style>]=]<pattern> | group[/oc[/at]]=<pattern>

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

anonymous は、すべての認証されていないクライアントに該当します。 users は、すべての認証されたクライアントに該当します。 さもなければ、正規表現 exact の dn パターンであるとみなされます。ただし、(オプションの)キーワード dn に exactbase (同義語)の修飾がある場合には DN の厳密一致を要求し、 onelevel で修飾した場合には直に1レベルの深さの一致を要求し、 subtree で修飾した場合には厳密一致を含む任意レベルの深さの一致を許し、 children で修飾した場合には厳密一致を含まない任意レベルの深さの一致を許します。 regex で修飾した場合は、 regex(7) に詳説されている正規表現パターンを基にした一致を要求します(修飾しない 場合と同じ)。 anonymous で修飾した場合は、バインドなし操作に一致し、 pattern の指定は無視されます。これと同じ振舞は who 節に anonymous を指定しても得られます。 group は、 グループを示すオブジェクトクラス oc の属性 at の値として設定されている DN のリストについて制限をかけます。 オブジェクトクラス oc と属性型 at はオプションであり、デフォルトはそれぞれ groupOfNamesmember になります。

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

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

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

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

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

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

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

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

pagedResults 制御が要求される場合にはデフォルトで hard サイズ制限が使われます。これは、ページサイズの要求が、 返すエントリ数の制限を明示的に要求しているとみなすためです。 しかし、サイズ制限は検索で返すエントリ総数に適用するのであって、 単一のページに適用するのではありません。 追加のサイズ制限を強制できます。 この指定は size.pr={<integer>|noEstimate} という形式で行います。 ここで integer は、制限が明示されない場合の最大ページサイズです。 noEstimate は、サーバが戻されるエントリの総数を見積もらないようにします。 キーワード none は pagedResults 制御のページサイズに制限をかけないことを示します。 形式が size.prtotal={<integer>|none|disabled} である指定は、 pagedResults 制御で返すことのできるエントリの総数に制限をかけます。 デフォルトでは、 hard 制限になっています。 設定において integer は pagedResults 制御での検索で返すことのできるエントリの総数に制限をかけます。 none を指定すると、返すエントリの数を無制限にします。 すなわち、クライアントが pagedResults を使う際のサイズ制限が無くなります。 キーワード disabled は pagedResults 制御を無効にします。すなわち結果をベージ化しないで返します。 pagedResults 制御を要求時に返すエントリの総数は、 prtotal スィッチで拡大しない限り、通常の検索の hard サイズ制限を超えられません。

maxderefdepth <depth>
実名参照するエイリアスの最大数を指定します。 エイリアスの無限ループを回避するために利用します。 デフォルトは 1 です。
overlay <overlay-name>
このデータベースに指定のオーバレイを追加します。 オーバレイは、データベース操作を拡張や変更するために、データベース操作を 事前に捕らえて処理するモジュールです。 オーバレイはデータベースが備えるスタックにプッシュされるので、 設定したのと逆順に実行していき、すべてのオーバレイの処理の後、 データベース自体に制御が移ります。
readonly on | off
このオプションはデータベースを「読取り専用」モードにします。 このモードでデータベースを更新しようとすると "unwilling to perform" エラーが返ります。デフォルトで reeadonly は off になっています。
replica uri=ldap[s]://<hostname>[:port]|host=<hostname>[:port] [starttls=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 ディレクティブで指定することもできます。 rootdn は syncrepl を用いる場合に必ず必要となります。
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 を行うことはできません。
syncrepl rid=<replica ID> provider=ldap[s]://<hostname>[:port] [type=refreshOnly|refreshAndPersist] [interval=dd:hh:mm:ss] [searchbase=<base DN>] [filter=<filter str>] [scope=sub|one|base] [attrs=<attr list>] [attrsonly] [sizelimit=<limit>] [timelimit=<limit>] [schemachecking=on|off] [updatedn=<dn>] [starttls=yes|critical] [bindmethod=simple|sasl] [binddn=<dn>] [saslmech=<mech>] [authcid=<identity>] [authzid=<identity>] [credentials=<passwd>] [realm=<realm>] [secprops=<properties>]
現在のデータベースがマスタの内容の複製であることを指定します。 つまり現在の slapd(8) で syncrepl 複製エンジンを動かして複製コンシューマとなります。 複製データベースは LDAP Content Synchronization protocol を用いて マスタの最新の内容と同じになるように維持されます。 syncrepl 複製エンジンを用いて複製する slapd ディレクトリの設定について詳しくは 「OpenLDAP 管理者ガイド」を参照してください。 パラメータ rid は、複製コンシューマサーバの設定の中の現在の syncrepl ディレクティブの識別子として利用されます。 このパラメータには0以上で3桁以内の整数値を指定してください。 パラメータ provider にはマスタ内容を持つ複製プロバイダサイトをURI で指定します。 ポートの指定 <port> を省略した場合には標準 LDAP ポート番号(389 または
636)が使われます。 syncrepl の複製対象は、検索指定を使って定義します。 コンシューマ slapd は検索指定にしたがってプロバイダ slapd に検索要求を送ります。 検索指定は、通常の検索指定と同様に searchbase, scope, filter, attrs, attrsonly, sizelimit, timelimit パラメータを持ちます。 syncrepl の検索指定は ldapsearch(1) クライアント検索ツールのパラメータと同じ値の形式と同じデフォルト値を持ちます。 LDAP Content Synchronization プロトコルには2種類の操作があります。 refreshOnly 操作では定期的に同期検索操作を行います。 それぞれの同期検索操作が終わった後に、次の同期検索操作を 再スケジューリングします。この時間隔は interval パラメータに指定します。 時間隔のデフォルトは1日に設定されています。 refreshAndPersist 操作では、同期検索がプロバイダ slapd で 継続されます。プロバイダ slapd に更新があると、 継続している同期検索のレスポンスとしてコンシューマ slapd に searchResultEntry を返します。 接続が切れた場合、コンシューマは interval パラメータに指定した時間隔でセッションが再確立するまで再接続を試みます。 このパラメータのデフォルトは 60 秒です。 LDAP Sync のコンシューマ側でスキーマ検査を行わせるかは schemachecking パラメータで切替えます。デフォルトは off です。 パラメータ updatedn には、複製の変更が許されているコンシューマ側の DN を指定します。 この DN は複製データベースに対して read/write アクセス権を持っている 必要があります。一般に、この DN は複製データベースの rootdn と同じにし、マスタデータベースの rootdn と同じにならないようにします。 パラメータ starttls は、プロバイダに bind する前に TLS セッションを確立するために StartTLS 拡張操作を使うことを指定します。 引数に critical を与えると、 StartTLS 要求が失敗した場合にセッションを中断します。 引数に yes を与えると、StartTLS 要求が失敗しても TLS 無しでセッションを継続します。 簡易認証 (simple) での bindmethod は、 binddncredentials のオプション指定を必要とします。 また、適切なセキュリティサービス(たとえば TLS や IPSEC など)が 用意されている場合にのみ利用するように勧めます。 SASL 認証 (sasl) での bindmethod は、認証機構 saslmech の指定を必要とします。 また、指定する認証機構に依存して、 authcid に認証 ID を指定したり、 credentials にパスワードを指定するといったことができます。 パラメータ authzid は認可 ID を指定するのに使います。 SASL bind についてのセキュリティパラメータ(上記の sasl-secprops に相当するもの)は、 secprops オプションに指定できます。 SASL レルムは realm オプションに指定できます。SASL レルムにデフォルトはありません。
updatedn <dn>
このオプションは、スレーブの slapd にのみ適用できます。 これには更新が許される DN を指定します(通常これは複製を更新するときに slurpd(8) がバインドする DN です)。 一般に、この DN はマスタで利用している rootdn と同じに すべきではありません。
updateref <url>
slapd(8) が複製されたローカルデータベースの更新を要求されたときに クライアントに戻す紹介先(referral)を指定します。 このディレクティブはいくつも指定でき、各 url が戻されます。

 

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

各データベースには固有の設定オプションがあります。 そのようなオプションの説明は バックエンドのマニュアルページに分けて載せています。  

バックエンド

以下のバックエンドを slapd に組み込めます。 これらのバックエンドについての文書は slapd-<backend>(5) マニュアルページにあります。
bdb
通常利用する slapd データベースとして推奨します。 しかし、正しく設定するには LDBM バックエンドよりも注意が必要です。 これはデータを格納するために Sleepycat Berkely DB (BDB) パッケージを使います。
ldbm
最も設定の容易なデータベースバックエンドです。 しかし、このバックエンドは BDB バックエンドのデータ耐久性機能を持って いません。 これはデータを格納するために Berkeley DB あるいは GDBM を使います。
dnssrv
実験用のバックエンドです。 DNS (Domain Name System)に保持された SRV リソースレコードを基にした 紹介(referral)サービスを行います。
ldap
受け付けた要求を他の LDAP サーバにフォワードする代理サーバとして動作します。
meta
このバックエンドは、リモート LDAP サーバの1セットについて基本的な LDAP 代理サーバとして動作します。これは ldap バックエンドの拡張です。 meta バックエンドの代理キャッシュ拡張は、以前にキャッシュした要求の結果を 用いて代理サーバから検索要求の応答を返します。
monitor
このバックエンドは slapd デーモンの動作状態についての情報を提供します。
null
このバックエンドに対する操作は成功しますが何も処理しません。
passwd
このバックエンドはデモンストレーションの目的にのみ用意されています。 これは、システムの passwd(5) ファイルにあるユーザアカウント情報を提供します。
perl
このバックエンドは slapd に perl(1) インタプリタを組み込みます。 これは、LDAP 操作を処理するのに Perl サブルーチンを実行します。
このバックエンドは、LDAP 操作を処理するのに外部プログラムを実行します。 このバックエンドは主にプロトタイプで利用するように意図しています。
sql
実験用のバックエンドです。 これは LDAP 要求を SQL データベースを使って処理します。
tcl
実験用のバックエンドです。 これは slapd に Tcl(3tcl) インタプリタを組み込みます。 これは、LDAP 操作を処理するのに Tcl コマンドを実行します。
 

設定例

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

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 0700 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-monitor(5), slapd-null(5), slapd-passwd(5), slapd-perl(5), slapd-shell(5), slapd-sql(5), slapd-tcl(5), slapd.access(5), slapd.plugin(5), slapd.replog(5), slapd(8), slapadd(8), slapcat(8), slapindex(8), slappasswd(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 オプション
一般バックエンドオプション
一般データベースオプション
データベース固有のオプション
バックエンド
設定例
関連ファイル
関連項目
謝辞
和訳