Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

サーバー管理の困った!を○○で解決 LDAPを使ったユーザー管理編 1/2

煩雑なユーザー管理はLDAPで解決!

多数のサーバを抱えるサーバ管理者にとって、ユーザー管理は頭を悩ませる業務の一つです。

例えばある社員が異動になれば、各サーバにログインして権限を変更したり削除して回る必要がありますし、また新入社員や退職する社員が出た際にも同様の作業が発生します。

server-kanri

今回はこうしたサーバーの台数が増えるごとに困難になっていくユーザー管理に加え様々な情報を一元管理できるLDAPについてご紹介します。

全2回を予定しておりLDAPの基礎から導入方法、そして基本的な使い方といったLDAPの入門的な内容で、ユーザー管理でお悩みのサーバー管理者向けの記事となります。
LDAPのインストール方法についてもなるべく詳細に紹介していきますので、他のLDAPの記事を読んでよく理解できなかった方も本記事を参考にして再挑戦してもらえれば幸いです。

LDAPとは

LDAPは【 Lightweight Directory Access Protocol 】の略で、インターネットなどのTCP/IPネットワークでディレクトリサービスにアクセスするための通信プロトコルの一つです。
クライアントはTCPポート番号389を使用してLDAPサーバに接続を行い、属性(個人名や部署名)で構成するエントリ(関連する属性のまとまり)の検索、追加、削除の操作を行うことができます。

ディレクトリサービスはネットワークの利用者に関する情報や、ネットワークに接続された機器・資源に関する情報をサーバ上のデータベースで一元管理する仕組みです。
LDAPは利用者がクライアントを用いてディレクトリサーバに接続し、その管理する情報を利用するための通信手順を定めています。

LDAPを使うとできること

例えばLDAPサーバを1台構築しておくだけで、他のサーバからユーザ認証をLDAPサーバに問い合わせてくれます。
そのため、ユーザ管理はこのLDAPサーバ上で行っておけば、わざわざ他の各サーバ上にユーザを登録しなくても良いということになります。

ldap01

LDAPのメリット

上記で挙げたユーザ管理で説明しますと、管理が楽になります。
例えば退職者がいた場合、通常は退職者のアカウントをファイルサーバ、メールサーバ、開発用サーバ等といったそれぞれのサーバに入って削除していかなければなりません。
LDAPを利用することでLDAPサーバに登録されているアカウントを削除するだけで全てのサーバに退職者がログインすることが出来なくなります。

LDAPのデメリット

メリットの裏返しとなりますが、一元管理が可能となるゆえにアカウント情報が漏れた場合に全てのサーバにアクセスできてしまうことにあります。
ただLinuxで言うところのグループ設定などといった細かい権限設定はできますので、初めからセキュリティを意識した構築をしておくことで、このデメリットは最小限にすることが可能です。

LDAPディレクトリサービスの概要

ディレクトリサービスのプロトコルとして有名なプロトコルに、X.500ディレクトリアクセスプロトコル(DAP)がありますが、
LDAPはその名の通り、そのX.500のDAPを軽量化したものとなります。

LDAPの特長

  • X.500ディレクトリアクセスプロトコルに比べて、非常に軽い実装になっている。
  • アクセスと更新の両方をサポートしていて、なおかつ読み取りの用途に最適化している。したがって、書き込み処理よりも読み込みや検索処理を多く行うシステムに適している。
  • 軽い実装ではあるが、様々なアプリケーションをサポートできる豊富な機能を提供している。
  • 豊富な検索機能を持っている。
  • 認証機能を持っていて、アクセス制御に基づいて情報を保護することができる。
  • 様々な用途に適合できるよう、格納するデータタイプを自由に定義・拡張することができる。
  • データ複製機能を備えており、信頼性の高いシステムを構築することができる。

LDAPのデータ構造

LDAPでは、様々なデータを統一的に扱えるようになっています。LDAPで情報を扱う基本単位をエントリを呼びます。
LDAPエントリは属性と呼ばれる情報単位の集合として構成されます。さらに各属性は、属性の型(属性タイプ)と1つまたは複数の値(属性値)を持っています。

ldap02

各エントリはユニークな名前のDN(Distinguished Name)と呼ばれる属性を持ち、DNによって一意に検索を行うことができます。
通常、DNはエントリの検索を容易にするために、上位のエントリ名を含まないRDN(Relative Distinguished Name)も持つようにします。
尚DN、RDNは一意である必要があります。

LDAPエントリでは、そのエントリに設定する必要がある属性、または設定することのできる属性をobjectClassという特別な属性を用いて定義することもできます。
この定義をスキーマ定義と呼びます。
よく使用される属性タイプには、下記のようなものがあります。

よく使用される属性タイプ

属性タイプ 説明
dn 識別名 [Distinguished Name]
dc 識別名 [Domain Component]
objectClass オブジェクトクラス
o 組織名 [Organization]
ou 組織単位 [Organization Unit]
cn 一般名称

複数の属性の集合であるエントリは、ツリー構造で構成されます。例えば、nedia.ne.jpドメインの組織は、下記の図にように構成することができます。

ldap03

本例では、uid=user01のエントリのDNは、uid=user01,ou=People,dc=nedia,dc=ne,dc=jp、RDNはuid=user01となります。

LDIFテキストフォーマット

LDAPデータをインポートまたはエクスポートする場合、一般的にはLDIFテキストフォーマットを用います。
LDIFはエントリの属性タイプと属性値を:(コロン)で区切った形式で表します。

LDIFの例

本例は、DNがuid=user01,ou=people,dc=nedia,dc=ne,dc=jpのLDAPエントリをLDIFテキストフォーマットで表したものです。

LDAPの基礎についての記事は以上となります。
第2回となる次回の記事は以下の項目を予定しています。

  • OpenLDAPの導入(パッケージのインストール、サービスの起動)
  • サービスの起動設定(サービスの自動起動、サービスの手動制御)
  • アクセス制御の設定
  • LDAPサーバの基本設定とサービスの起動
  • データベースチューニング設定
  • サービスの起動
  • LDAPデータベースの設定
  • LDAPデータベースの基本設定

それでは!