インストールされたシステムでは、/etc/openldap/slapd.confにLDAPサーバの完全な設定ファイルが用意されています。ここでは1つのエントリについて簡単に説明し、必要な調整について説明します。ハッシュ(#)で始まるエントリは無効です。エントリを有効にするには、このコメント文字を削除します。
例 36.2. slapd.conf:スキーム用ディレクティブの取り込み
include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/rfc2307bis.schema include /etc/openldap/schema/yast.schema
に示すように、slapd.confにある最初のディレクティブは、LDAPディレクトリを編成するスキーマを指定します。例 36.2. 「slapd.conf:スキーム用ディレクティブの取り込み」core.schemaエントリは必須です。付加的に必要とされるスキーマは、このディレクティブの後に追加します。詳細は、付属のOpenLDAPマニュアルを参照してください。
例 36.3. slapd.conf:pidfileとargsfile
pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args
この2つのファイルには、PID (プロセスID)とslapdプロセスの起動時に使用される引数が含まれています。これらを変更する必要はありません。
例 36.4. slapd.conf:アクセス制御
# Sample Access Control
# Allow read access of root DSE
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
# access to dn="" by * read
access to * by self write
by users read
by anonymous auth
#
# if no access controls are present, the default is:
# Allow read by all
#
# rootdn can always write!
例 36.4. 「slapd.conf:アクセス制御」は、サーバ上のLDAPディレクトリへのアクセス許可を制御するslapd.confの一部です。slapd.confのグローバルセクションで行われている設定は、データベース固有のセクションで、カスタムのアクセス規則が宣言されていない限り有効です。これらはグローバル宣言を上書きするためです。ここで示すように、すべてのユーザはディレクトリの読み込みアクセスができますが、ディレクトリに書き込めるのは管理者(rootdn)のみです。LDAPのアクセス制御の管理は、非常に複雑なプロセスです。次のヒントが役立ちます。
すべてのアクセス規則は、次の構造に従います。
access to <what> by <who> <access>
whatには、アクセスを付与するオブジェクトまたは属性を指定します。個々のディレクトリブランチを、別の規則で明示的に保護することもできます。正規表現を使って、ディレクトリツリー中の特定の領域を1つの規則で処理することもできます。slapdは、設定ファイル中に記述されている順番で、すべての規則を評価します。一般的な規則は、特定的な規則の後に指定する必要があります。slapdが有効だと考える最初の規則が評価され、それ以降のエントリは無視されます。
whoには、whatで指定された領域へのアクセスを付与されるユーザを指定します。ここでもslapdは、最初に一致するwhoを見つけた後、評価を行わないため、特定の規則は、一般的な規則より前に指定する必要があります。表 36.2. 「ユーザグループと付与されるアクセス許可」に有効なエントリを示します。
表 36.2. ユーザグループと付与されるアクセス許可
タグ | スコープ |
|---|---|
| 例外なくすべてのユーザ |
| 認証されていない(「匿名」)ユーザ |
| 認証済みユーザ |
| ターゲットオブジェクトに接続されているユーザ |
| 正規表現に一致するすべてのユーザ |
accessは、アクセスタイプを指定します。に示すオプションを使用してください。表 36.3. 「アクセスのタイプ」
表 36.3. アクセスのタイプ
タグ | アクセスのスコープ |
|---|---|
| アクセスs可 |
| サーバへの連絡用 |
| 比較アクセス用のオブジェクト |
| 検索フィルタ設定用 |
| 読み込みアクセス |
| 書き込みアクセス |
slapdはクライアントが要求するアクセス権をslapd.confで付与されたアクセス権と比較します。要求された権限と比較して、同等または上位の権限が規則によって与えられている場合は、クライアントに対して、アクセスが許可されます。規則に宣言された権限を越える権限をクライアントが要求した場合、アクセスが拒否されます。
例 36.5. 「slapd.conf:アクセス制御の例」に、簡単なアクセス制御の例を示します。このように正規表現を用いて自由にアクセス制御できます。
例 36.5. slapd.conf:アクセス制御の例
access to dn.regex="ou=([^,]+),dc=example,dc=com" by dn.regex="cn=Administrator,ou=$1,dc=example,dc=com" write by user read by * none
この規則は、担当の管理者のみが個別のouエントリに書き込みアクセスできることを宣言します。他のすべての認証済みユーザは読み込みアクセスができ、その他のユーザはアクセスできません。
![]() | アクセス規則の設定 |
|---|---|
access to | |
詳細な説明およびLDAPのアクセス権の設定例については、インストールしたopenldap2パッケージのオンラインマニュアルを参照してください。
アクセス許可を一元的なサーバ設定ファイル(slapd.conf)で管理する方法以外に、ACI (アクセス制御情報)を使用する方法があります。ACIは、個々のオブジェクトのアクセス情報をLDAPツリーに格納します。アクセス制御のタイプには共通のものがなく、開発者の間では未だ実験的だと考えられています。詳細については、http://www.openldap.org/faq/data/cache/758.htmlを参照してください。
例 36.6. slapd.conf:データベース固有のディレクティブ
database bdbsuffix "dc=example,dc=com"
checkpoint 1024 5
cachesize 10000
rootdn "cn=Administrator,dc=example,dc=com"
# Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret
# The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd/tools. Mode 700 recommended. directory /var/lib/ldap
# Indices to maintain index objectClass eq
overlay ppolicy
ppolicy_default "cn=Default Password Policy,dc=example,dc=com" ppolicy_hash_cleartext ppolicy_use_lockout
この種類のデータベース(この場合Berkeleyデータベース)は、このセクションの先頭行に設定されます(例 36.6. 「slapd.conf:データベース固有のディレクティブ」を参照)。 | |
| |
| |
| |
| |
| |
directory | |
最後のディレクティブ | |
|
データベースに対してここで定義されたカスタムのAccess規則は、グローバルAccess規則に代わって使用されます。
LDAPサーバが完全に設定され、36.4項 「LDAPディレクトリのデータ処理」で説明するパターンに従ってすべてのエントリが作成されたら、rootユーザで「rcldap start」を入力し、LDAPサーバを起動します。実行されているかどうかわからない場合は、rcldap stopコマンドを実行します。実行しているLDAPサーバのステータスは、rcldapstatusコマンドを実行して要求します。
YaSTランレベルエディタ(20.2.3項 「YaSTでのシステムサービス(ランレベル)の設定」を参照)を使用して、システムのブートまたは停止時に、サーバを自動的に起動および停止することができます。またコマンドプロンプトでinsservコマンドを実行して、起動および停止スクリプトそれぞれへのリンクを作成することもできます。詳細については、20.2.2項 「initスクリプト」を参照してください。