Instiq
第1章 · ネットワーククライアントの管理·v1.0.0·更新 2026/7/7·読了目安 約12分

変更要約: 初版(主題2.07・副主題2.07.1〜2.07.4に対応)

1.4OpenLDAPサーバーの設定

この節の要点

OpenLDAP サーバー(slapd)本体の設定・運用を学びます。データベースのバックアップ/インポート/インデックス再構築を行う slapcatslapaddslapindex、データ格納先 /var/lib/ldap/、動的設定の仕組み slapd-config、アクセス制御を定義する slapd.access、ディレクトリ情報の基本単位 DNLDIFobjectClass/属性(attributes)を押さえます。

前節までのクライアントコマンドが操作する相手が、Linux で最も普及した LDAP サーバー実装 OpenLDAP(デーモン名 slapd)です。202試験では、クライアントからの操作とは別に、サーバー側の管理(バックアップ・インポート・アクセス制御・動的設定)が重要度2で問われます。ディレクトリ特有のデータモデル(DN・LDIF・objectClass)の理解が前提になります。

1.4.1ディレクトリのデータモデル

  • LDAP ディレクトリはツリー構造(DIT:Directory Information Tree)で、各エントリの位置を一意に示す文字列が DN(Distinguished Name。例 uid=suzuki,ou=people,dc=example,dc=com)。ホワイトページ(社内電子電話帳)のような用途が典型例。
  • エントリをテキストで表現する交換フォーマットが LDIF(LDAP Data Interchange Format)で、ldapadd/ldapmodify/slapadd の入力として使われる。
  • 各エントリが持てる属性(attributes)の種類は objectClass で決まる(例 inetOrgPerson を持つエントリは cnsnmail 等の属性を持てる)。objectClass と属性は LDAP スキーマでオブジェクトID(OID)により識別される。

1.4.2slapdの運用ツールとアクセス制御

  • デーモン本体は slapd。既定のデータベースファイルは /var/lib/ldap/ に格納される(ディストリビューションにより異なる場合がある)。
  • バックアップslapcat(データベースの中身を LDIF としてダンプ)。リストア/初期インポートslapadd(LDIF をデータベースへ直接投入。slapd を停止した状態で使うオフラインツール)。インデックス再構築slapindex(検索性能向上のためのインデックスを作り直す)。
  • OpenLDAP 2.x 以降の推奨設定方式は slapd-configcn=config ツリーとして LDAP 自体の中に設定を持ち、サーバーを止めずに動的に変更を反映できる)。旧来のテキストファイル一発の slapd.conf 方式に代わるもの。
  • アクセス制御(誰がどの属性を読み書きできるか)は slapd.accessolcAccess 属性・access to 句)で定義する。細かい粒度(DN の範囲や属性単位)で読み取り/書き込み権限を絞り込める。
試験ポイント

「バックアップ=slapcat(LDIF へ出力)」「インポート/リストア=slapadd(オフライン・slapd停止時)」「インデックス再構築=slapindex」「動的設定=slapd-config(cn=config)」「アクセス制御=slapd.access」 の対応づけが最頻出です。slapcat と slapadd は入出力の向きが逆(slapcat=出す/slapadd=入れる)である点を必ず区別してください。

日常運用の一連の作業で押さえましょう。定期バックアップでは slapd を稼働させたまま slapcat -n 1 -l backup.ldif(対象データベースを指定して LDIF へダンプ)を cron 等で実行します。逆に、別サーバーへの移行や災害復旧でまっさらな状態からデータを流し込む場合は、必ず slapd を停止してから slapadd -l backup.ldif を実行します(稼働中の DB に直接書き込むための整合性維持が理由)。投入後は検索性能のために slapindex でインデックスを再構築します。設定変更(例:新しいスキーマの追加、slapd.access によるアクセス制御の見直し)は、旧来の slapd.conf を直接編集する方式では反映にサービス再起動が必要でしたが、slapd-configcn=config ツリー)を使えば ldapmodify でその場に設定エントリを書き換えるだけでサービスを止めずに反映できます。アクセス制御では、例えば「一般ユーザーは自分のパスワード属性だけ書き込み可、他は読み取りのみ」のような粒度を slapd.accessaccess to attrs=userPassword by self write by * read のような記述で実現します。この背後にあるデータモデルは、DIT 上の各エントリが一意な DN を持ち、objectClass(例 inetOrgPerson)によって使える属性の集合が決まり、それらをテキストでやり取りする形式が LDIF である、という3点セットです。

ツール/概念役割動作条件
slapcatデータベース→LDIFへダンプ(バックアップ)slapd 稼働中でも可
slapaddLDIF→データベースへ投入(リストア/初期化)slapd 停止が原則
slapindex検索用インデックスの再構築データ投入後などに実行
slapd-config動的設定(cn=config)稼働中に反映可
注意

ひっかけ: 「slapadd はデータベースの内容を LDIF としてバックアップするコマンドである」は誤りです。バックアップ(データベース→LDIF)は slapcat の役割で、slapadd は逆方向(LDIF→データベースへの投入)です。また「slapd-config は slapd.conf という1つのテキストファイルを指す」も誤り=slapd-config は cn=config という LDAP ツリー内の動的設定であり、旧来の単一テキストファイル方式(slapd.conf)とは別物です。

slapcat(出力)とslapadd(投入)の向き、slapindex、slapd-config(cn=config)、slapd.accessの関係を示した図。
slapcatとslapaddは逆方向

1.4.3この節のまとめ

  • バックアップ=slapcat(DB→LDIF)/リストア=slapadd(LDIF→DB・slapd停止時)/インデックス再構築=slapindex
  • 動的設定=slapd-config(cn=config)・アクセス制御=slapd.access。データモデルは DN/LDIF/objectClass+属性

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 稼働中の OpenLDAP サーバーのデータベースを、定期的に LDIF 形式でバックアップしたい。適切なコマンドはどれ?

Q2. 障害復旧のため、新しいサーバーに空の OpenLDAP をインストールし、バックアップした LDIF ファイルからデータを丸ごと投入したい。適切な手順はどれ?

Q3. OpenLDAP のディレクトリで、あるエントリに `inetOrgPerson` という objectClass が設定されている場合の説明として正しいのはどれ?

理解度を確認第1章「ネットワーククライアントの管理」の問題を解く