〜 基本からアクセス制御までを一気に理解!〜
目次
📝 はじめに
OpenLDAPは、軽量ディレクトリアクセスプロトコル(LDAP)を実装したオープンソースのディレクトリサービスです。ユーザー情報、グループ、ネットワーク機器などの情報を一元管理するための基盤として広く使われています。
本記事では、OpenLDAPの基本構成、重要な設定ファイル、エントリ操作、そしてアクセス制御までをわかりやすく解説します。
🧱 1. OpenLDAPの基本構造と用語
| 用語 | 説明 |
|---|---|
| LDAP | 軽量なディレクトリアクセスプロトコル。情報を階層的に構造化して管理。 |
| DN(識別名) | エントリを一意に特定する名前。例:uid=tanaka,ou=users,dc=example,dc=com |
| LDIF | LDAPデータを記述するためのファイル形式。テキストでエントリを定義。 |
| スキーマ | 属性やオブジェクトクラスの定義。例:inetOrgPerson, posixAccount |
| エントリ | LDAPディレクトリ内の情報単位。各エントリは属性と値を持つ。 |
📂 2. ディレクトリ構成と設定ファイル
OpenLDAPには2つの設定方式があります。
🗂 slapd.conf(旧方式)
従来の設定方法で、設定が1つのファイルにまとまっています。
📁 slapd-config(新方式)
設定がLDAPのディレクトリエントリとして管理されます。cn=config以下に格納され、ldapmodifyなどで変更します。
🛠 3. OpenLDAPの基本コマンド
| コマンド | 機能 |
|---|---|
slapd | OpenLDAPサーバー本体を起動するデーモン。 |
slapadd | LDIFファイルからデータベースに直接データを追加。 |
slapcat | データベース内容をLDIF形式で出力。 |
slapindex | インデックスの再生成。 |
ldapadd | LDAP経由でエントリを追加。 |
ldapmodify | エントリの変更。 |
ldapdelete | エントリの削除。 |
例:LDIFによるユーザー追加
dn: uid=tanaka,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
uid: tanaka
sn: Tanaka
givenName: Taro
cn: Taro Tanaka
mail: tanaka@example.com
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f user.ldif
🔐 4. アクセス制御とセキュリティ
アクセス制御は、ユーザーやグループごとの読み書き権限を細かく設定する重要機能です。
slapd.access(旧設定方式)例
access to dn.base=""
by * read
access to dn.subtree="ou=users,dc=example,dc=com"
by dn.exact="cn=admin,dc=example,dc=com" write
by users read
slapd-config方式の場合
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to dn.subtree="ou=users,dc=example,dc=com" by dn.exact="cn=admin,dc=example,dc=com" write by * read
ldapmodify -Y EXTERNAL -H ldapi:/// -f access.ldif
📚 5. スキーマとオブジェクトクラス
OpenLDAPのデータ構造を定義するのがスキーマです。各エントリにはオブジェクトクラスがあり、それに対応した属性を持てます。
代表的なオブジェクトクラス
| クラス名 | 用途 |
|---|---|
organizationalUnit | 部門情報などを定義 |
inetOrgPerson | 一般的なユーザー情報管理 |
posixAccount | UNIXユーザーアカウント |
🌐 6. WebインタフェースとGUIツール
OpenLDAPはCLI操作が基本ですが、以下のGUIツールも利用可能です。
- phpLDAPadmin:WebブラウザでLDAP管理
- LDAP Account Manager (LAM):ユーザー/グループ管理に特化
✅ まとめ
| 項目 | 理解すべきポイント |
|---|---|
| 構成ファイルと用語 | slapd.conf vs slapd-config、DN、LDIFなど |
| 基本コマンド | slapadd/slapcat、ldapadd/ldapmodifyなど |
| アクセス制御 | slapd.accessの書き方と実装方法 |
| スキーマ | inetOrgPersonなどの使い分け |
OpenLDAPは初学者にはやや難しいですが、設定の流れや構成を体系的に理解すれば、非常に柔軟でパワフルなディレクトリサービスになります。
コメント