IT

LDAP【LPIC level2】

LDAPの仕組み

LDAP(Lightweight Directory Access Protocol)とは、ディレクトリサービスの提供者と利用者の間で情報をやり取りするためのプロトコルです。

ディレクトリサービスとは、キーとなる値から、ディレクトリの中の情報を検索することが出来るサービスです。

DITと識別名

DIT(Directory Information Tree)とは、LDAPで情報が格納される階層構造のことです。

識別名(DN)とは、ディレクトリツリー内のエントリを識別するためのものです。

LDIF

ディレクトリ内の情報はLDIF(LDAP Data Interchange Format)という形式で記述されたテキストファイルで表現できます。

スキーマ

LDAPでは、データを格納するためのオブジェクトクラスや属性のセットが用意されています。オブジェクトクラスや属性の定義はスキーマと呼ばれます。

スキーマが定義された/etc/openldap/schemaディレクトリ以下に格納されています。

以下は、主なスキーマファイルです。

スキーマファイル説明
core.schema基本的な属性を定義する必須のスキーマです。
cosine.schemaX.500規格で定義された属性を定義するスキーマです。
inetorgperson.schemaアドレス帳など個人情報を扱うためのスキーマです。
nis.schemaNIS関連(ユーザーやグループ情報)のオブジェクトクラスや属性を定義するスキーマです。

オブジェクト識別子

オブジェクトクラスや属性にはオブジェクト識別子(OID)が割り当てられています。

OIDは全世界で重複しないようIANAによって管理されています。

あらかじめ用意されたオブジェクトクラスや属性を利用する分には申請などは必要ありませんが、新たなオブジェクトクラスを作成したりスキーマを拡張したりしてサービスを外部に提供する場合はIANAにOIDの割り当てを申請する必要があります。

ホワイトページ

ホワイトページとは個人別電話帳のことです。

ホワイトページを作成するには、inetorgperson.schemaで定義されているinetOrgPersonクラスを使うのが一般的です。

以下は、ホワイトページで利用できる主な属性です。

属性説明
cn一般名(common name)
sn苗字
mailメールアドレス
o組織名
ou組織単位名
telephoneNumber電話番号

LDAPサーバーの設定

LinuxでLDAPを利用するには、一般的にOpenLDAPが使われます。

OpenLDAPサーバーデーモンはslapdです。

OpenLDAPサーバーの設定ファイルは/etc/openldap/slapd.confです。

slapd.confは、大きく分けて全体の設定を行うグローバルセクションとデータベース毎の設定を行うデータベースセクションがあります。

以下、slapd.confのグローバルセクションで使用する主なディレクティブです。

ディレクティブ説明
argsfile ファイル名slapdデーモン起動時のコマンド引数を格納するファイルを指定します。
pidfile ファイル名slapdのプロセスIDを格納するファイルを指定します。
include ファイル名読み込む設定ファイルを指定します。
logfile ファイル名デバッグログの出力先ファイルを指定します。
loglevel ファイル名ログレベルを指定します。
idletimeout 秒数アイドル状態のクライアント接続を強制的に切断するまでの秒数を指定します。
timelimit 秒数slapdが検索要求の応答に使う最大秒数を指定します。

以下、データベースセクションで使用する主なディレクティブです。

ディレクティブ説明
database 種類バックエンドデータベースの種類を指定します。
suffix DNディレクトリのトップとなるDNを指定します。
rootdn DNデータベース管理者のDNを指定します。
rootpw パスワードデータベース管理者のパスワードを指定します。
index 属性名 種類属性に作成するインデックスの種類を指定します。
directory ディレクトリデータベースファイルを格納するディレクトリを指定します。

アクセス制御

OpenLDAPでは、エントリや属性に対してアクセス制御を設定できます。slapd.confファイル内でaccess to パラメータを使って使用します。以下、access toパラメータの書式です。

access to アクセス制御対象 by 接続元 アクセスレベル

アクセス制御対象、接続元、アクセスレベルについては以下で説明します。

アクセス制御対象

アクセス制御対象説明
全てのエントリ
attrs=属性指定した属性のみ
dn=DN指定したDNのみ

接続元

接続元説明
全てのユーザー
annonymous認証前のユーザー
users認証されたユーザー
self接続中の認証済みユーザー自身
dn=DN指定したDNのユーザー

アクセスレベル

アクセスレベル説明
write属性値を変更できる
read検索結果を参照できる
search検索できる
compare比較できる
auth認証を受けることが出来る
noneアクセス出来ない

LDAPサーバーの管理コマンド

slappasswd

slapd.confファイルのrootpwに設定する管理者パスワードを作成するコマンドです。

slapcat

LDAPデータベースの内容がLDIF形式で出力するコマンドです。

slapadd

LDIFデータをLDAPデータベースにリストアするコマンドです。

LDAPクライアントの利用

以下は、LDAPクライアントコマンドです。

コマンド説明
ldapaddエントリを追加します。
ldapsearchエントリを検索します。
ldapdeleteエントリを削除します。
ldapmodifyエントリを変更します。
ldappasswdパスワードを変更します。

今回はネットワーククライアント管理のLDAPの仕組みと設定についてでした。

最後まで読んで頂き、ありがとうございました。

LPIC level2の他の分野へ移動できる全体ページへは以下リンクからお願いします。