目次
LDAP概要
LDAP(Lightweight Directory Access Protocol)とは、ネットワーク機器やユーザーなどの情報を管理する「ディレクトリサービス」へ接続するためのベンダー中立の標準プロトコルです。
ディレクトリサービスは、ユーザー、ファイル、デバイスなど様々なネットワーク内の情報を一元的に管理し、検索などの機能を提供するサービスです。多様なデータを一元管理し、情報を知りたいアプリケーションからの迅速なクエリによる検索機能を提供することで効率よく認証などができるようになります。ディレクトリサービスの例としては、LDAP以外にもDNS(Domain Name System)などが該当します。
LDAPはLightweight とある通り、ITU-T*勧告のX.500 Directory Access Protocolの軽量のサブセットであり、1990年代初頭から利用されています。TCP/IPネットワーク上で動作するように設計されており、インターネットの普及とともに急速に広まりました。LDAPは新しいものではありません。ディレクトリサービスやLDAPのインターフェイスの仕組みを説明した確定的なホワイトペーパーは、2003年に発行されました。かなり古いものですが、LDAPは今日も広く使用されています。
*国際電気通信連合電気通信標準化部門(International Telecommunication Union Telecommunication Standardization Sector、ITU-T)
→Okta Japanの資料請求はこちら
LDAPサーバーとは?
LDAPは、その名の通りプロトコル、つまり通信規則です。そのため、LDAP自体が直接データ(ユーザー情報や組織情報など)を持つわけではありません。一方でLDAPをディレクトリサービスとの主要な通信手段とするディレクトリが数多く構築されてきました。多くの場合、これらはLDAPサーバーと呼ばれます。
LDAPは、ネットワーク上のクライアント(ユーザーやアプリケーション)が、LDAPサーバー(データを保持しているシステム)から情報を効率的に検索し、取得するための方法を定めています。データ自体はLDAPサーバーに保存されており、その具体的な形式や内容はサーバーの種類や設定によります
このLDAPサーバーは主に、アプリケーションのユーザーに関する情報ストアとして使用されます。その結果、Active Directory(AD)との違いを比較されることが往々にしてあります。この2つを並べて比較することは正確ではありません(後述)が、Windows環境で詳細なアクセス制御や一元管理が必要な場合はADが、異なるOS間での一貫した情報アクセスが必要な場合はLDAPサーバーが選択されてくる傾向が大きかったと言えるでしょう。
LDAPの仕組み:ディレクトリで保持するデータの特徴
企業は、ユーザー名、パスワード、メールアドレス、プリンター接続などの静的データをディレクトリ内に保存します。LDAPは、そのデータにアクセスしてデータを維持するための、特定のベンダーに偏らないオープンなアプリケーションプロトコルとして利用できます。LDAPは認証にも対応するので、ユーザーは一度サインオンするだけでサーバー上のさまざまなデータにアクセスすることも可能です。
LDAPはプロトコルであるため、ディレクトリサービスそのものの動きには影響されません。その代わりに、プログラミング言語の一形態であることから、ユーザーは必要な情報をすばやく見つけるためのアプリケーションを開発することができます。
LDAPは特定のベンダーに依存しないため、様々なディレクトリサービスに対して使用できます。一般的に、ディレクトリは、リレーショナルデータベースと比較して以下のようなデータの特徴があります。
- 説明的な属性ベースのデータを保持:名前や場所などの複数のポイントの組み合わせにより、データが定義されます。
- 静的データが多い:通常、書き込まれるよりも読み取られる頻度がはるかに高くなります。ディレクトリは、大量のルックアップまたは検索操作に迅速に応答します。
- 重要データ:ディレクトリ内に格納されるデータは、ビジネスの中核機能にとって重要であり、繰り返し使用されます。
またLDAPにより、様々なデータへの操作を実行できます。これには以下が含まれます。
- 追加:データベースに新しいファイルを入力します。
- 削除:データベースからファイルを取り除きます。
- 検索:データベース内から目的のものを見つけるため、クエリを開始します。
- 比較:2つのファイルの類似点または相違点を調べます。
- 変更:既存のエントリに変更を加えます。
LDAPが他のシステムと連携して使用されることもあります。たとえば、従業員がプリンターへの接続やパスワードの確認でLDAPを使用し、その後にLDAPにまったく依存しないGoogleに切り替えてメールを使用するといったことがあります。
LDAPの仕組み:LDAP処理フローの仕組み
一般的な従業員は、1日に数十回、場合によっては数百回もLDAPに接続します。LDAPクエリを完了するための仕組みは入り組んでおり、複雑ですが、接続が発生したことすら従業員が認識しないほど高速に処理されます。
LDAPクエリでは通常、以下が行われます。
- セッションの接続:ユーザー(アプリケーション)が、LDAPポート経由でサーバーに接続します。
- 要求:ユーザー(アプリケーション)が、メールルックアップなどのクエリをサーバーに送信します。
- 応答:LDAPプロトコルが、ディレクトリに対してクエリを実行し、情報を検索し、この情報をユーザー(アプリケーション)に配信します。
- 完了:ユーザー(アプリケーション)がLDAPポートから切断します。
検索は単純に見えますが、このLDAPの機能を可能にしているのは大量のコーディングです。開発者は、検索のサイズ制限、サーバーが処理に費やすことのできる時間、検索に含めることができる変数の数などを決定する必要があります。
様々な企業や組織で、意識せず各所でLDAPによる検索を実行しているかもしれません。ですが、LDAPがどのように設定されているかによって、実際の検索時の動きや機能はかなり違ってきます。
LDAPの仕組み:認証と安全性
検索を開始する前に、LDAPはユーザーを認証する必要があります。その処理には、以下の2つの方法があります。
- シンプル:正しい名前とパスワードにより、ユーザーをサーバーに接続します。
- シンプル認証およびセキュリティ層(SASL):Kerberosなどのセカンダリサービスは、ユーザーが接続する前に認証を実行します。これは高度なセキュリティを必要とする企業にとって、望ましい選択肢となります。
一部のクエリは企業内で発生しますが、モバイルデバイスや個人宅のコンピューターで開始されるクエリもあります。何も設定を行わないと大部分のLDAP通信はスクランブルや暗号化なしで送信されるため、セキュリティ上の問題が発生する可能性があります。LDAPメッセージの安全性を確保するために、多くの企業ではトランスポート層セキュリティ(TLS)を使用しています。
LDAPを理解するための重要用語
一般的なユーザーは、LDAPの細かな仕組み、機能を把握する必要はありません。しかし、ネットワークのセキュリティやアクセスを担っている場合には、中心的な概念と構造について深く理解している必要があります。そして、初心者にとって、LDAPを説明するために使用される言語は難解なことがあります。
LDAPについて学び始めると遭遇する一般的な用語には、以下が含まれます。
- データモデル:ディレクトリにはどのような種類の情報が含まれるのでしょうか。LDAPの側面を理解するのに役立つのがモデルです。モデルにより、一般的な情報(オブジェクトクラスなど)、名前(各アイテムが一意に参照される方法)、関数(データへのアクセス方法)、セキュリティ(ユーザーが認証する方法)が提供されます。
- 識別名(DN):各エントリの一意の識別子であり、情報ツリー内の場所も示します。
- 変更:LDAPユーザーがエントリーに関連付けられたデータを変更するために行う要求です。定義された変更タイプには、追加、削除、置換、増加が含まれます。
- 相対識別名(RDN):DN(識別名)を結びつけ、相対的な位置を指定する方法です。
- スキーマ:LDAPの基盤となるコーディングはスキーマと呼ばれます。この言語を使用して、サーバー上にある各項目の形式と属性を記述します。
- URL:サーバーのアドレスとポートを含む文字列です。さらに、グループを定義し、ロケーションを提供し、別のサーバーに対する操作を参照できるその他のデータも含みます。
- Uniform resource identifier(URI):リソースを定義する文字列です。
上記は、LDAPプロトコルを適切に実装するために習得する必要がある言語の一部にすぎません。しかし、LDAPはオープンソースのプロトコルであるため、豊富なドキュメントを活用して短期間で高度なコーディングを習得できます。
LDAPとSSO(シングルサインオン)
LDAPは、上述の特徴から認証時に使うログイン情報の一元管理のサーバとして構築されることも多くあります。このようなケースでは、ネットワーク内に所属するユーザのログイン情報を保存することができます。LDAPサーバに、様々なサービスやアプリケーションから接続することができ、ユーザの認証を行うことができます。
このため、LDAPは企業などにおいてシングルサインオン(SSO)を実現するためにも導入されています。LDAPはネットワークを経由しアカウント認証を実現する為、1つのユーザIDとパスワードで複数のサービスやアプリケーションにログインできます。
更に、クラウド経由でSSOを実現するOktaのようなIDaaS(アイダース:Identity as a Service)と組み合わせることでインターネットを介して、アプリケーションやサービスへのSSOが実現できます。
LDAPとActive Directory
LDAPとActive Directory(AD)を同じ意味で使用している人もいますが、そのために大きな混乱が生じます。これら2つのツールは連携しますが、同じものではありません。
ADは、コンピューター、プリンター、ユーザーなどのIT資産を編成するために使用される独自のディレクトリツールです。Microsoft製品であるため、一般的にWindows環境内で使用されます。Windowsをネットワーク上で使用したことがある場合、このシステムがデータの一部を支えます。
LDAPはADを読み取ることができるプロトコルですが、Linuxベースのプログラムなど、他のプログラムでも使用できます。特定のベンダーに依存しないプロトコルとして、このツールを使用してWindowsとは関係のないあらゆる種類の製品を操作できます。
このように、LDAPとADは連携してユーザーを支援します。つまり、2つは互いに競合するものではなく、また完全に同じ機能を提供するものでもありません。
LDAPとOkta
LDAPは、重要なファイルへのアクセスを支援します。しかし、データは機密であることから、悪意ある行動をとる可能性のある人々から情報を保護することが重要です。ハイブリッド環境でデータの一部をクラウドに保持している場合、リスクはさらに高くになります。
Oktaは、この重要情報の保護を支援します。その方法をご確認ください。
参考文献
What's LDAP?(LDAP Linux HOWTO)
A History and Technical Overview of LDAP(LDAP.com)
The LDAP Search Operation(LDAP.com)
Configuring Active Directory for LDAP Authentication(IBM)
Basic LDAP Concepts(LDAP.com)
LDAP URLs(LDAP.com)
Understanding LDAP Schema(LDAP.com)
How to Make Your Company's Single Sign-On Implementation as Smooth as Possible(2016年7月、Forbes)
Active Directory Domain Services Overview(2017年5月、Microsoft)
Understanding Active Directory(2018年3月、Medium)
What Is LDAP Authentication?(2018年7月、Houston Chronicle)
Identity Awareness Works Hand In Glove With Digital Transformation(2020年4月、Forbes)