LDAP とは?何ができる?
LDAP (読み方:えるだっぷ) とは Lightweight Directory Access Protocol の略で、簡単に言うとシステムを使う人たちの情報を保管しているデータベースです。
LDAP では主に『LDAP 認証』や『LDAP 連携』といった仕組みにより様々なことが実現できます。よく使われるものとして以下の機能があります。
1. Linux のシステムアカウント情報(/etc/passwd や /etc/shadow) の一元化
多数の Linux クライアントがある場合、1 台 1 台に ID パスワード情報を入れることなく、LDAP サーバ 1 台だけ登録すれば、どの Linux クライアントからも同じ ID パスワードでログインできるようになり、さらに環境(プロファイル)もログイン時に取得できるようになります。
2. Linux サーバの各種アプリでの ID パスワード統一化
例えば postfix や dovecot 等のメールサーバや、ログインが必要な Web (Apache) ベースのアプリサーバの ID パスワード情報を統一化することができます。さらにこの発展形として、シングルサインオン(1 つのサーバで認証すれば、他のサーバは認証無しでログインできる仕組み)も実装できます。
3. 社員情報の共有
例えば LDAP サーバに氏名、メールアドレス、電話番号、所属部署などの情報も格納しておきます。そして、別の Linux サーバに、Cybozu 等のグループウェアサーバをインストールし、適切な設定を入れます。
そして、ユーザがグループウェアにログインし、検索画面で他の人の氏名を入力し検索ボタンを押すと、その人のメールアドレスや電話番号、所属部署を表示させるように構成することができます。
4. アカウント自動作成等の LDAP 連携
例えば同じようにグループウェアサーバサーバ側で LDAP 連携の設定を入れておくことで、グループウェアサーバ側にアカウント設定を入れなくても、LDAP にアカウントが登録されていれば、初回サーバログイン時に、LDAP に認証した結果が OK であれば自動でアカウントを作成する、といった構成が可能です。
その他にも、postfix との連携で、ユーザ(メールアドレス)によって SMTP リレー先を変えたり、samba との連携でアクセス権の一元管理が出来たりと、連携の幅は広いです。
LDAP とデータベースとの違いは?
データベース (Relational Database) では頻繁に更新が行われ、かつ 1 つのデータベーステーブル内の 1 レコードを更新した際に、別のテーブルが更新されることも多く、それらの一連の処理をトランザクションとして一貫性・整合性を管理しています。なので、複雑なテーブル構造の更新処理に適している反面、負荷が大きいです。
一方、LDAP は簡単なツリー構造となっており、データベースのような複雑な構造は取れません。その分、負荷が軽いため、システムアカウントの管理には適しています。
データベースは 1 日のうちに複数回更新することが前提ですが、LDAP は数日に 1 回程度を想定しています。
LDAP と AD (Active Directory)との違いは?
Active Directory のドメインコントローラは内部で LDAP を使っています。これは OpenLDAP とは異なる Microsoft 独自のものですが、RFC 4511 に準拠したものとなっています。
ですが Active Directory にとって LDAP とは、Active Directory というソリューションを構成するためのコンポーネントの 1 つに過ぎません。AD にはグループポリシーといった Windows クライアントの管理制御機能が標準で付いていたりと、通常の LDAP サーバ以上のことができます。また、AD ではユーザアカウントだけでなくコンピュータアカウント(いわゆる、ドメインに参加しているクライアント)を持っていることも特徴的です。
Active Directory では、OpenLDAP の例で示した連携がたいてい可能です。OpenLDAP が Linux クライアントに特化しているのに対し、Active Directory では Windows に特化したものとなっています。
ドメインコントローラはこれに加え、ファイルサーバへのアクセス制御を一元的に行う(例えば複数のファイルサーバがある場合、通常は各サーバにアカウント情報を登録し、その上でアクセス権の設定を行うが、AD 環境においては、アクセス制御用のアカウント情報は AD にて管理してあるため、各サーバにアクセス権を設定するだけでよい)ことが標準で可能となっています (OpenLDAP でも samba サーバとの連携で同様のことが可能)。また、グループポリシーによる Windows クライアントの統合的な管理(例えば Windows ファイアウォールやスクリーンセイバーの設定を強制する、等) も可能です。
LDAP スキーマとは
LDAP スキーマとは、格納する属性データの形式や制約を定義するものです。
LDAP では各オブジェクト (各ユーザアカウント等) は一般に複数の属性 (およびそこに格納される属性値) を保有しています。
スキーマとは、このようなオブジェクトや属性の定義をするものです。
例えば『sample』という属性のスキーマを追加するときは、その『sample』属性に格納されるデータが、数字の文字列なのか、英数字なのか、大文字小文字を区別するのかしないのか、一意である必要があるか否か、といった定義をします。
スキーマは必要に応じて柔軟に追加できますので、システムに対して柔軟な設計や適応が可能となります。
コメント