LoginSignup
13
13

More than 3 years have passed since last update.

LDAPの用語や概念について纏める。

Posted at

用語と概念

識別名

ディレクトリツリー内のエントリを識別するには、識別名を使う。
ツリー構造の末尾から「,」でつないだものです。

uid=linucuser,ou=education,dc=linuc,dc=jp

LDIF

ディレクトリ内の情報は、LDIFというテキストファイルで表現する。1行目は識別名です。

dn: uid=linucuser,ou=education,dc=linuc,dc=jp
uid: linucuser
objectclass: posixAccount
cn: linucuser
uidNumber: 700
gidNumber: 700
homeDirectory: /home/linucuser
loginShell: /bin/bash

オブジェクトクラス

エントリが表す具体的ものの種類や、エントリで利用できる属性を定義したもので、何らかのオブジェクトクラスに属する。
(例)
組織:organization
ユーザーアカウント:account
国:country

スキーマ

オブジェクトクラスや属性の定義。
LDAPでは様々なスキーマが予め用意されているので、一般的な用途では個別に定義しなくても良い。
/etc/openldap/schemaに格納される。

スキーマファイル 説明
core.schema OpenLDAPで必須のスキーマ
cosine.schema ディレクトリサービスのX.500規格で規定された属性が定義されたスキーマ
inetorgperson.schema アドレス帳など個人情報を扱うためのスキーマ
nis.schema UNIX/Linuxのユーザーやグループ情報を扱うためのスキーマ

オブジェクト識別子

オブジェクトラスや属性には、オブジェクト識別子が割り当てられる。
OIDは重複しないようにIANAで管理されている。

ホワイトページ

個人別電話帳のことです。
作成するには、inetorgperson.schema で定義されている inetOrgPerson を利用するのが一般的です。

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

OpenLDAPの設定

  • デーモンは、slapd です。
  • かつては、/etc/openldap/ldap.conf を利用、現在は、/etc/openldap/slapd.d/.ldif 以下に設定が格納され、OpenLDAPサーバーユーティリティコマンドを使って、動的に変更できるようになっている。
OpenLDAPサーバーユーティリティコマンド 説明
slapadd エントリを追加する
slapcat 内容をLDIF形式で出力する
slapindex インデックスを再構築する
slappasswd 暗号化されたパスワードを生成する
slaptest LDAPサーバーの設定をチェックする

slappasswd でOpenLDAPサーバー管理者パスワードを生成してLDAPデータベースに登録します。

# slappasswd

生成されたパスワードを含むLDIFエントリを作成します。

setrootpass.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: ************

このLDIFエントリを ldapadd でLDAPデータベースに登録します。

# ldapadd -Y EXTERNAL -H ldapi:/// -f setrootpass.ldif

ベースDNを設定します。管理するLDAPエントリの最上位となるのが、ベースDNです。
ここでもLDIFファイルを作成します。設定を変更することになるので、ldapmodify を使います。

modify_basedn.ldif
dn: cn=ToModify,dc=example,dc=com
changetype: Modify
........
# ldapmodify -x -D cn=config -W -f modify_basedn.ldif

上記のLDAPデータベース管理者パスワードを設定します。(先のサーバー管理者とは別です。)
slappasswd を実行し、そのパスワードを記載したLDIFファイルを作成します。

setMangerpass.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: ************

管理者パスワードを登録します。

# ldapadd -Y EXTERNAL -H ldapi:/// -f setMangerpass.ldif

LDAPデータベースのスキーマを拡張します。後にユーザーを登録するのに必要になります。

# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif

テストとして、Linuxユーザーアカウントを登録してみます。次のようなLDIFファイルを作成します。

test.ldif
dn: dc=thinkit,dc=co,dc=jp
objectClass: dcObject
dc: linuc
............

LDAPデータに登録します。

# ldapadd -x -D "cn=MAnger,d =linuc,dc=jp" -W -f test.ldif

slapcat でLDAPデータベースの内容がLDIF形式で出力されます。

# slapcat

slapadd で、LDIFデータをLDAPデータベースに登録できます。
つまり、slapcatを使って、LDAPデータベースのバックアップをとり、slapaddでリストアできます。

# slapcat > ldapdb.ldif
# slapadd -l ldapdb.ldif

データベースをリストアした後は、slapindex を実行してデータベースのインデックスを再構築できます。

# slapindex

LDAPのアクセス制御

olcAccess: to アクセス制御対象 by アクセス許可対象 アクセスレベル

アクセス制御対象 説明
* すべてのエントリ
attrs=属性 指定した属性のみ
dn=DN 指定したdnのみ
アクセス許可対象 説明
* すべてのユーザー
anonymous 認証前のユーザー
users 認証されたユーザー
self 接続中の認証済みユーザー自身
dn[.範囲]=DN 指定したDNのユーザー
アクセス許可対象の範囲 説明
exact 完全一致
base ベースDNで指定されたエントリのみ
one ベースDNで指定されたエントリとその直下
sub ベースDNで指定されたエントリとその下にある全エントリ
アクセスレベル 説明
manage すべて可能
write 属性値を変更できる
read 検索結果を参照できる
search 検索できる
compare 比較できる
auth 認証を受けることができる
disclose エラー情報が出る
none アクセスできない

アクセス制御がされていない場合は、すべてのユーザーがすべてのエントリを読み込むことができる。
ただし、エントリの更新はrootdnだけが可能。

LDAPクライアント

LDAPクライアント 説明
ldapadd エントリを追加する
ldapsearch エントリを検索する
ldapdelete エントリを削除する
ldapmodify エントリを変更する
ldappasswd パスワードを変更する
LDAPクライアントのオプション 説明
-h LDAPサーバを指定する
-H LDAPサーバをURIで指定する
-x SASLを使わずに簡易認証を用いる
-p LDAPのポートを指定する。389
-D 認証に利用するDNを指定する
-W 認証時のパスワードを対話的に入力する
-w 認証時のパスワードを指定する
-f LDIFファイルを指定する
ldapsearchのオプション 説明
-b 検索を開始するベースDNを指定する
-L 検索結果をLDIFv1形式で表示する
-LL 検索結果をコメントなしの形式で表示する
-LLL 検索結果をコメントとLDAPバージョン表示なしで表示する
ldapmodifyの属性 説明
add 追加
replace 修正
delete 削除
ldappasswdのオプション 説明
-b 検索を開始するベースDNを指定する
-s 新しいパスワードを指定する
-S 新しいパスワードを対話的に入力する
13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13