
好きな所から読む
LDAPはシングルサインオンのために使われるアカウント管理の仕組みで、ネットワークを介して認証するために使われる仕組みです。さらに単にユーザーIDとパスワードを管理するだけの仕組みではありません。組織の階層に合わせてディレクトリ構造でアカウントを管理でき、氏名やメールアドレスなどの属性も渡せる便利な仕組みです。
とはいえLDAPを使うためには、アカウント管理の基本やネットワークの基本などを知らなくてはなりません。そこで今回は、LDAPを中心に組織のアカウント管理やネットワークの基本について解説します。ぜひ参考にしてください。
LDAPとは
LDAPは「Lightweight Directory Access Protocol」の略で、そのまま日本語に訳せば「軽量化したディレクトリアクセスのためのプロトコル」です。そしてLDAPはインターネット技術特別調査委員会によって標準されており、メーカー製のいろいろなネットワーク製品に実装されています。そのためアカウントを管理するソフトウェアを使っていれば、知らないうちにLDAPを使っているかもしれません。
またインターネット上で使わえるプロトコルの1つのため、企業内の閉じたネットワーク内だけではなく、GooleやMicrosoftのようなクラウドのサービスでも利用できます。大きな組織でアカウントを管理する立場であれば、知っていて当然の仕組みと言えるでしょう。
アカウントを階層で管理する
社内の情報システムを利用する場合、会社から支給されている自分のアカウントでログインしなければなりません。しかし、使用するシステムごとにアカウントで使える機能を細かく設定していたのでは、人事異動の度に手作業で設定を変更しなければなりません。
そのため大きな組織でアカウントを管理するには、部門毎、役割毎に階層構造を作り、社員それぞれのアカウントを分類して運用しなければなりません。さらにそのような階層構造は一元管理されている必要があります。
LDAPはこのような階層を持つアカウントのグループを、ネットワーク経由で一元管理するための仕組みです。
ドメインで管理する仕組み
先ほど、階層構造を作りアカウントを管理するを説明しましたが、LDAPでは階層をドメインと呼びます。なおIT用語でドメインと言えば、インターネットでアクセスしたいホストを特定するための用いられる仕組みです。そして、ホストを特定するためにドメインの階層を「.」で区切って指定します。
例えば、Gooleを利用するにはURLに「www.google.co.jp」に指定しますが、これは右側から「jp」ドメインの中の「co」ドメインに所属する「google」ドメインの「www」というホストという意味です。このドメインは階層を表現するのに適していることから、LDAPではアカウントが所属する階層構造もドメインで管理しています。
LDAPの機能とは
先ほど紹介したように、社内のシステムで利用するアカウントを階層構造で管理するLDAPでは、階層をドメイン単位で扱います。しかしLDAPに情報システムの機能を制御する機能は組み込まれていません。情報システム側がログインしたアカウントのドメインを評価し、使える機能を制限します。
さらにLDAPはネットワークを介してアカウント情報を提供する仕組みです。具体的にはLDAPを提供するサーバーを構築し、複数の情報システムからのリクエストに応じてアカウントのドメイン情報とパスワードを一元管理できます。
LDAPとシングルサインオンの関係
先ほど紹介したようにLDAPとは、ネットワークを介して階層で管理されたアカウント情報を提供する仕組みです。そしてLDAPはシングルサインオンを実現する仕組みとして、多くの企業で運用されています。次からLDAPを利用する目的ともいえるシングルサインオンの基本とLDAPとの関係について紹介します。
シングルサインオンとは
企業で使われているパソコンへのログインや、そのパソコンで使えるアプリケーションを利用するためのログインなど、企業では仕事をするのにアカウント認証が欠かせません。もし、それらに別々のユーザーIDとパスワードが設定されていたらどうなるでしょうか。使う度に手帳などに記載したユーザーIDとパスワードを探すなど、仕事をするうえでかなり不便です。
そのようないくつものログインが必要なケースで使われる仕組みがシングルサインオンです。シングルサインオンとは、ログインに必要な情報を管理するサーバーを構築し、社内で利用するパソコンやアプリケーションの認証をそのサーバーを使う方法です。
そしてシングルサインオンを利用すれば、1つのユーザーIDとパスワードで会社のパソコンや、そのパソコン用のアプリケーションにログインできます。
シングルサインオンの必要性
以前なら社内ネットワークにしか接続していないサーバーとパソコンを利用するため、部門に所属する社員が同じユーザーIDを使う、といったケースもありました。しかし、今社内で使われるパソコンはインターネット環境も用意されており、クラウドの仕組みも同時に利用できるケースがほとんどです。
このような環境では、セキュリティを確保するために社員1人につき1つのユーザーIDを設定し、役割に応じて権限を設定したり、誰が操作したかの記録を残す必要があります。そのため、社員に別々のアカウントを設定し、そのアカウントを管理することは必須となっています。
さら先ほど紹介したようにに仕事をするうえで、社内の複数のシステムを利用したり、クラウド上のサービスを利用するケースが増えています。増える度に新しいアカウントを作っていたのでは、セキュリティに関しても問題です。
シングルサインオンは社員1人に1つのアカウントとすることで、利用者にとって便利なだけではなく、セキュリティ対策としても必要性が高い、今の企業にとって必須の仕組みと言えるでしょう。
シングルサインオンで認証に使われるLDAP
これまで紹介したようにシングルサインオンとはアカウントを1つのサーバーで認証する方法で、さらに今の企業に必須の仕組みです。そしてアカウント認証の仕組みにLDAPが使われます。
LDAPはネットワークを経由したアカウント認証を実現することから、1つのユーザーUDとパスワードで複数のアプリケーションを利用できます。また、LDAPは階層的にアカウントを管理できるので、認証したいアカウントが使える機能を階層によって分けることが可能です。
さらにIDaaS等と組み合わせ、仕組みさえ用意すれば企業内のLDAPを使い、インターネットを介してクラウドのサービスへのシングルサインオンにも使えます。
LDAPサーバーの基本
これまで紹介したようにLDAPとはネットワークを介してアカウントを階層で管理するための仕組みであり、シングルサインオンを実現する手段として広く使われています。そして、企業などの組織に1台だけLDAPの規格に従いシングルサインオンのためのリクエストに回答するサーバーを設置し、そのサーバーでアカウントを管理するのが一般的です。このLDAPサーバーの基本について紹介します。
LDAPサーバーの役割
LDAPとは最初に紹介したように「Lightweight Directory Access Protocol」の略で、Pに当たるプロトコルとは通信をやりとりするための約束事です。そのためLDAPのプロトコルをサポートしたアプリケーションであれば、設定次第でLDAPを利用できます。
そしてアカウント情報を管理し、その情報をネットワークを介したリクエストに回答するのがLDAPサーバーです。なおLDAPサーバーには専用の管理ツールが用意されており、役割に応じてディレクトリを変更したり、パスワードの修正などが可能です。
ただしアカウント情報は会社の人事情報に直結し、社員のパスワードを管理する仕組みのため厳重に管理されなければなりません。そのためLDAPサーバーも操作できる方が限定されており、厳密な手続きに基づいて操作するのが一般的です。
LDAPサーバーが管理する情報や属性
LDAPではアカウント名とパスワードのみ管理する訳ではありません。リクエストに応じてアカウントに関する幾つかの属性を受け渡すことが可能です。次に代表的な項目を紹介します。
- ユーザーID(例 id00001)
- パスワード
- アカウントの表示名(テスト アカウント)
- アカウントの説明(“これはテストアカウントです)
- ドメイン名(dc=example, dc=build)
- 組織名・部署名(ou=test)
- 氏名(テストアカウント)
- メールアドレス
例えばドメイン名として下位の階層「example」と上位の階層「build」を、また組織名・部署名「test」と設定した場合、このアカウントは「uid=id00001, ou=test, dc=example, dc=build」になり、さらに氏名と表示名を別に設定できます。また、アカウントに対応したメールアドレスを渡すことも可能です。
LDAPサーバーを導入するには
LDAPは国際標準のプロトコルとして公開されており、これを適用したサーバー製品は複数のメーカーから販売されています。そのためLDAPサーバーを設置する場合、LDAPをサポートしいるメーカー製のアカウント管理システムを導入するのが一般的です。それぞれ独自の管理ツールが用意されているので、それらを活用してください。
なおオープンソースのLDAPサーバー、OpenLDAPも利用できます。メーカーのようなサポートを受けられませんが、オープンソースの管理ツールなどと組み合わせることで費用をかけずに利用することも可能です。
LDAPを運用するには
LDAPは国際標準のプロトコルであり、プログラミング言語毎にライブラリが用意されているので、認証を必要とする多くのアプリケーションで利用できます。しかし、どこでもLDAPを利用できるとは限りません。LDAPを利用するための設定が必要なケースもあります。次からLDAPを運用するうえで知っておきたい知識について紹介します。
ネットワークを介した接続の基本
LDAPはネットワークを介してアカウントの認証ができる仕組みですが、ネットワークに繋がっていたらどこでも使えるとは限りません。今のインターネットはTCP/IPという通信方法により繋がっています。そしてTCP/IPの特徴の1つがポート番号です。
例えばWebブラウザは、httpsというプロトコルによってWebページを表示するためのデータを取得します。そしてhttpsには専用のポート番号が設定されており、インターネットの接続に使われる機器はこのポート番号を通過させます。
しかし全てのポート番号を通過させているとは限りません。特にセキュリティに厳しい企業LANでは特定のポート番号しか許可していないケースもあります。今回紹介するLDAPも専用のポート番号が設定されているので、それが許可されたネットワークでしか使えません。
LDAP用のポート番号
先ほど紹介したようにネットワークでは使えるポート番号が制限されていることがあり、LDAPにもポート番号が設定されています。そして、LDAPのポート番号は、暗号化されていないプロトコル用は389番、暗号化されたプロトコル用は636番です。
ユーザーIDとパスワードを扱うLDAPは暗号化されてなければ危険です。LDAPが使えるのは、暗号化されたプロトコル用は636番が許可されたネットワーク環境だと考えてください。
なおポート番号で通信を許可する仕組みはルータやゲートウェイのようなネットワーク機器が有名ですが、アプリケーション用のサーバーでも、サービスしている機能以外のプロトコルを許可していないケースもあります。そのようなサーバー等でLDAPを利用する場合は、ポート番号を許可する必要があるので注意してください。
インターネットでLDAPを利用する
企業などのアカウント管理に使われるLDAPですが、インターネット上でも運用できます。GoogleやMicrosoftのサービスを含む、クラウド上のサービスの認証に、社内のアカウント管理と同じLDAPサーバーを利用することも可能です。
ただし、この場合社内のLDAPサーバーを直接外部にさらすのは危険です。アカウント情報を安全にインターネットをやり取りする中継サーバーを設置し、クラウド上のサービスからこのサーバーにリクエストする仕組みを利用します。
なおクラウド上のアプリケーションでLDAPを利用するには、特別な契約や設定が必要なケースがあるので注意してください。
終わりに
これまで紹介したようにLDAPは、階層ごとにアカウントを管理する仕組みで、シングルサインオンを実現するために利用します。LDAP単体の仕組みではなく、アカウント管理システムなどのパッケージソフトの通信プロトコルとして運用しているケースもあるので、知らないで使っている方も多いかもしれません。
LDAPのLはLightweightを意味しているとおり、軽量でシンプルなデータ構造が特徴です。しかしネットワークに依存するプロトコルの1つなので、運用するにはTCP/IPなどのネットワークの基本知識も必要です。アカウント管理の方法とLDAPの使い方とともにネットワーク管理の基本も合わせて学び、スキルアップしていきましょう。