LDAPとは?
LDAPとは、Lightweight Directory Access Protocolの略で、Windowsサーバなどで提供されている、ActiveDirectoryのようなサービスを提供するプロトコルを指します。ていうか、ActiveDirectoryってLDAP使ってるんだよね。で、LDAPを使用してサービスを提供するサーバをLDAPサーバと言います。LDAPサーバとは、一言で言うとデータベースです。MySQLとか、GDBMとか、BerklayDBみたいなもん。Linux等のオープンソースでよく利用されるOpenLDAPは、そのデータベースのバックエンドに様々なツールが選べます。例えばpasswdファイル、MySQLとか、GDBMとか、BerklayDB、他のLDAPサーバ等。データベースのバックエンドをいろいろ選べるメリットは、提供するデータの件数に応じて、検索能力が強力なデータベースを選択できるということですね。
なぜLDAPを使うのか?
さて、まずは左のLDAPのデータ構造図を見てください。LDAPでデータを構築する際は、こういった階層構造を作ります。まずトップレベルはDC(DomainContext)というドメイン名を定義してあげます。このDCは、ルートツリーになるわけですね。個々の例ではExample.comというドメインのデータベースを構築するとします。この下にO(Organaization)やOU(OrganaizationUnit)というサブツリーを定義します。複数の組織があった場合(例えば総務、経理、設計等)や、複数のデータ種別(この図だと、アドレス帳、人のデータ、groupデータ、hostsのデータ等)を階層分けしておきます。階層はいくつでもOKなはず。この下にデータをぶら下げるわけですね。
さて、このデータ、ただぶら下げるにしても、何も考えずにただぶら下げとけばいいのか?それならSQLとかと変わんないじゃん?と思われると思います。ここが大きい特徴ですが、予めスキーマと呼ばれるデータ定義のフォーマットが用意されております。例えばアカウント(account/posixAccount/shadowAccount等)、人物情報(inetOrgPerson)等。で、このスキーマには、このデータにはどういうデータ要素を持っているか(例えばaccountならば、ユーザ名/ユーザID/パスワード等)が予め定義されているので、そのデータ要素を登録しておく、といった具合です。このスキーマは、RFCで定義されている標準スキーマってのがあり、このスキーマに対応しているツールであれば、そのデータを使用していろいろ処理できるってわけですね(例えばLinux認証に使用されるPAMはposixAccountスキーマに対応しているとか)。また、このスキーマは、自分でいろいろ定義を拡張できるので、標準では対応出来ない別データ要素を、スキーマ作ってデータに属性追加する事で拡張出来たりとかがやれるわけです。
LDAPを使用して実現したいこと
現状はこんな感じ。Linux認証はパスワード、sambaはsmbpasswd、メールはsasldb、Webはapacheのパスワードファイル等、アカウント管理データがいっぱいあって、ほんとにめんどくさい。新しいユーザを登録するときは、adduserして、smbpasswdして、saslpasswd2打って...めんどくさい~!パスワードがアンマッチになったりすると、どれが狂ってるのかわからない…
それをこんな感じに。LDAPの統合認証基盤にして、LDAPアカウントデータを一発いじることで、全ての認証基盤が変更されるようにしたい。また、LDAPサーバを各マシンが参照するようにして、LDAPアカウントデータ一発で、全てのマシンの認証データを変更できるようにしたい。(Windowsクライアントマシンは個人別認証でいいと思ってるので、Windowsのドメインコントローラーは使用しないポリシー)
最終的には、メールクライアントのアドレス帳もLDAPで統合しようと思っているので、LDAPによる個人別アドレス帳も作成しようと思ってまっす。Thunderbird対応も真面目に考えてみたいと思ってます。
Page Info | |
---|---|
Page Name : | Gentoo Linuxな生活/LDAP認証で悩む |
Page aliases : | None |
Page owner : | maruo |
Can Read | |
Groups : | All visitors |
Users : | All visitors |
Can Edit | |
Groups : | No one |
Users : | No one |