連載
» 2000年05月31日 00時00分 公開

ディレクトリサービスの仕組みと活用(2):ディレクトリの基本操作とセキュリティ

[北川正,@IT]

 前回は、ディレクトリの生い立ちや基本的な仕組み、そして製品選択の際のいくつかのポイントをあげて解説しました。今回も引き続き、概論を中心として、その実際を多少交えながら解説していきます。いくつか例をあげながらご紹介していきますが、今回の説明にあたっては、例としてロータスのドミノサーバを使用します。なお、解説する内容はドミノ以外でも、一般的なLDAPサーバに該当する内容となっています。

ドミノサーバとLDAPの起動

 ドミノサーバはメールやグループウェア、そしてWebアプリケーションサーバとして多くの企業で広く使われているものです。メールや各種アプリケーションをサービスするうえでセキュリティサービスが必須となることから、ドミノにはディレクトリが備わっています。社員にはメールアカウントが割り当てられることがほとんどですから、メールサーバのアカウント管理の仕組みをディレクトリとして利用できることは、管理工数の面で大きなメリットといえるでしょう。

 ドミノのディレクトリは、独自の通信プロトコルを使用するノーツクライアントを対象にしたサービスにとどまらず、各種インターネットプロトコル(POP3、IMAP4、HTTPなど)でのアクセスに対する認証やアクセスコントロールにも使用されています。さらにインターネット標準であるLDAPサービスもドミノには付属していますので、LDAPに対応した各種クライアント、アプリケーションからドミノのディレクトリを活用できます。

 これから話を進めていくうえで、最初にドミノサーバでLDAPサービスを起動させておく必要があります。ドミノサーバを標準でインストールした場合には、LDAPサービスは自動起動するようにはなっていませんので、次の手順で起動します。

 まずドミノサーバを起動し、サーバコンソールから「load ldap」と入力します。いくつかメッセージがコンソール画面に表示されて、LDAPサービスが正常に起動したことが確認できます。

LDAPアクセスの基本〜メールクライアントから

セットアップ

 LDAPサービスがドミノサーバで起動したあとに、まず行うべきことは、正常にLDAPサービスが動作しているかを確認することです。これを行うには、メールクライアントからアドレスの参照を行うとよいでしょう。インターネットメールクライアントには大抵、LDAPでのアドレス検索機能が付属していますのでそれを使います。

 ただし、LDAPでのアドレス検索機能を使用するには、設定があらかじめ必要となります。例えば、Outlook Expressを例にとってみましょう。メニューの「ツール」→「アカウント」を選択して、「インターネットアカウント」のダイアログボックスを表示させます。ここで、ディレクトリサービスのタブを選択すると、インターネット上でサービスしているメジャーなディレクトリサービスアカウントが表示されますので、新規にディレクトリサービスを追加します。この際に気を付けるべきポイントは、「このディレクトリサービスを使って、アドレスをチェックしますか」の設定です。この項目は、思わず「はい」を選択したくなりますが、「いいえ」に設定します。これは、メールを送信する際にアドレスを確認する機能で、宛先に記入した名前に該当するインターネットアドレスを確認するものです。インターネットアドレスを検索する機能とは別ですし、メール送信時のパフォーマンスが落ちますので、特に理由がないかぎり「いいえ」にしておきます。

実際にアクセスしてみる

 これで、LDAPでのアクセス準備ができましたので、実際に試してみましょう。ツールバーにある「アドレス帳」のボタンを押してアドレス帳を起動します。さらに、アドレス帳のツールバーにある「人の検索」のボタンを押して「人の検索」画面を表示させます。「探す場所」のコンボボックスから、先程設定したドミノサーバ名を選択します。ここで、「名前」にユーザー名の一部を入れて検索すると、ほぼ瞬時に該当するユーザーエントリが表示されるはずです。これで表示されない場合は、クライアントかサーバーのどちらかに問題があるのか、原因の切り分けを行います。ドミノサーバコンソールで正常に動作しているメッセージが出ていれば、あとはクライアント側の問題がほとんどですので、ディレクトリアクセスアカウントの設定を再度確認します。

高度な検索と漢字によるアクセス

 LDAPによるアドレス検索は、SQLと同じくクエリーによる検索です。従って、クライアント側のLDAPの実装によって、検索できる項目や絞り込みの機能が変わってきます。例えば、メールクライアントでは大抵の場合、ユーザー名やメールアドレスしか検索項目として備えていません。そのため、企業で往々にして必要とされる部署による検索はできません。

 クライアントやサーバを評価するうえでは上記に示した検索項目はもちろんのこと、クライアント側で生成される検索式のメカニズムについても注意が必要です。具体的には以下の通りです。

  1. 検索画面の「名前」に入れた内容が、サーバ上の「姓」と「名」の双方に対して検索しているか?(これはほとんど問題ないでしょう)
  2. 検索画面の「名前」に入れた内容は、前方一致、部分一致の双方で検索されているか? 例えば、「*」といったワイルドカードを使わずとも部分一致で検索するものもありますし、そうでないものもあります。このあたりはサーバ、クライアント双方に実装の違いが微妙にありますので、必要ならば評価時に見ておくとよいでしょう。

 さらに、日本語環境において重要となってくるのが、漢字によるユーザー名の検索です。これもまたクライアント、サーバ双方で実装が異なってきますが、ドミノも含めサーバ側で処理している場合がほとんどです。ただし、評価する場合は、サーバ、クライアントを組み合わせて評価を行います。

 運用上の注意点として、「漢字による検索ではヒットしない場合がある」ことに気を付けることが挙げられます。例えば、「さいとう」という姓を表記する漢字は何種類もありますが、サーバは問い合わせされた文字列を単純に漢字コードで検索しているため、「斎籐」の問い合わせに対して「斉籐」を返してくれるようなインテリジェントな検索は残念ながらできません。メカニズムを考えれば自明ではありますが、実運用においてはユーザーへの周知が必要でしょう。

 ドミノで漢字による検索を行ううえで特に設定は必要ありませんが、「ユーザー名の別名」と呼ばれるフイールドに漢字名を格納しておく必要があります。詳細手順はヘルプに記載があります。

ブラウザからのアクセス

 大抵のブラウザではLDAPサーバへのアクセスができます。メーラーやLDAPクライアントがない場合でも、ブラウザさえあれば、基本的な問合わせは可能です。この方法は、LDAPフォーマットに従ってURLを作成しますので、LDAPフォーマットがどのようなものであるかを知るうえでよい機会となるでしょう。

 URLの先頭は、プロトコルを示していますので、よく使用されるhttpの代わりにldapを使用します。その後にLDAPサーバ名、問い合わせ文を入れます。例えば、

ldap://myserver/ou=tokyo, o=atmarkit??sub?(cn=*yamada)


といったものになります。oとはorganization、ouとはorganization unitです。LDAPフォーマットの詳細はRFC1959に規程されていますので、ここでは簡単な説明に留めておきます。これを使えば、先ほどのメーラーでは不可能な複雑な検索も可能となります。

画面1 ブラウザでの検索結果 画面1 ブラウザでの検索結果

セキュリティ、セキュリティ、セキュリティ

 ここで、管理者にとって重要なセキュリティについて触れておきましょう。

 LDAPサーバはクライアント側の問い合わせに対して、そこで指定された項目のデータを返します。従って、ディレクトリサーバに保管されているデータについては、基本的にいずれのデータも技術的に取り出し可能であることをつねに念頭において、LDAPサーバの運用を考える必要があります。では、具体的にどのようなことを考慮すればよいか見てみましょう。

ディレクトリに置く情報を制限する

 最も基本的であり、かつ安全な方法です。しかし、ディレクトリサーバは多目的に使うことから、各企業の環境に応じてスキーマと呼ばれるデータフィールドを独自に増やしてさまざまなデータを格納することがあります。ディレクトリサーバの目的は、多種多様なデータを一ヶ所に集めて格納しておくことで利便性を高めることにあるので、ディレクトリに置く情報を制限するのは決してよい方法とは言えない場合があります。また、スキーマを拡張しなくとも、基礎的な情報だけでも十分、有意義なものである場合があります。そのような場合は、以下にあげる方法を検討してみてください。

応答項目を制限する

 先ほど、ディレクトリサーバの情報は「技術的に取り出し可能」と述べましたが、実際のディレクトリサーバには応答可能な項目を制限する機能を持ったものが多くあります。これはディレクトリサーバ選定の際の重要な評価項目の1つといえます。

 運用の上で気を付けることとして、スキーマ拡張時の設定変更があります。スキーマを拡張したものの、制限する応答項目の設定を忘れると、そこがセキュリティホールとなる場合があります。

 ドミノでは、サーバ設定文書に応答する項目を設定する個所がありますので、そこに必要最低限の項目を設定します。応答するものだけを列記する形ですので、ドミノに関しては先ほどのセキュリティーホールのリスクはありませんので安心です。

書き込み制限の実施

 ここまでLDAPサーバの参照についてのみ触れてきましたが、LDAPは新規データエントリの作成や、既存のデータに対する変更についても可能です。データ改ざんのリスクを避けるために、基本的に管理者以外は読み込みだけのアクセス権が設定されていることを確認しておきます。

 ドミノでは、サーバ設定文書のLDAPの項目で、「アクセスの種類」が「参照アクセス」になっていることを確認します(デフォルト値が「参照アクセス」ですので基本的に問題はないでしょう)。

ユーザー認証の実施

 これは、ごく一般に使用されているクリアテキストによる、ユーザー名とパスワードの送信によりユーザー認証を行うものです。しかし、すでに常識となっていますが、これだけでは基本的に不十分と言わざるを得ません。従って、次に示すSSLと組み合わせることを推奨します。

SSLによる暗号化

画面2 ドミノによるSSL設定 画面2 ドミノによるSSL設定

 上に示したユーザー認証を用いる用いらないにかかわらず、通信経路上でタッピングされてしまうと、通信内容がすべて漏れてしまう可能性があります。これを防ぐには、SSLを使った暗号化が適当です。SSLについては、最近では一般的になっているのでここでの解説は割愛します。

 ユーザー認証およびSSLのドミノでの設定は、サーバ文書の「ポート」→「インターネットポート」→「ディレクトリ」にあるオプションスイッチで行います。これらのスイッチを組み合わせながらどのようにセキュリティレベルが変わっていくかを確認することができます。

さらなるセキュリティ

 ここから先は、かなり厳重なセキュリティの部類に入ってきますが、セキュリティポリシーによっては必要になってくるでしょう。具体的には、X509証明書を用いたユーザー認証です。ここまで来ると、かなり大掛かりな仕掛けとなってきます。PKI(Public Key Infrastructure)まで視野にいれた総合的なシステム設計が必要になりますので、ディレクトリだけの都合で容易に動きが取れない場合がほとんどです。


Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。