【図解】LDAPとは?仕組みと必要な理由を初心者向けにわかりやすく解説

VPN装置やNAS、複合機の設定画面を開くと、よく「LDAPサーバ」という項目が出てきます。ADのことだろうと何となく入力して動いたものの、LDAPとADは何が違うのか、RADIUSやSAMLとはどう使い分けるのか、と聞かれると答えに詰まる人も多いのではないでしょうか。

この記事では、LDAP(エルダップ)を「社員名簿に問い合わせるための共通の言葉」としてとらえ、なぜ必要なのか、データをどう持っているのか、どんなやり取りでログインを確かめているのかを、図を使って順番に説明します。最後に、ADやRADIUS・SAML・OAuthとの違いと、LDAPを使う場面、安全に使うためのポイントを整理します。

この記事でわかること
  1. LDAPとは何か、なぜ必要なのか
  2. ツリーとDNによるデータの持ち方
  3. LDAPでログインを確かめる流れ(BindとSearch)
  4. Active Directory、RADIUS・SAML・OAuthとの違い
  5. LDAPを使う場面と、安全に使うためのポイント

LDAPを一言でいうと

LDAP(Lightweight Directory Access Protocol)は、「ディレクトリ」に問い合わせるためのプロトコルです。ディレクトリは、社員や部署、グループ、PCなどの情報をまとめた名簿のようなものだと考えてください。名簿そのものは、Active Directory(AD)やOpenLDAPといった製品が持っています。

会社の総務にある社員名簿でたとえると、名簿がディレクトリ、名簿を管理している総務の窓口がディレクトリサーバ、窓口に「営業部の山田さんのメールアドレスを教えて」「山田さんのパスワードはこれで合っていますか」と問い合わせるときの決まった言い方がLDAPです。問い合わせ方が決まっているので、複合機でもLinuxでもVPN装置でも、同じ名簿を同じ方法で使えます。

なぜLDAPが必要なのか

社員が使うシステムが、ファイルサーバ(NAS)、複合機、Linuxサーバ、VPN装置、社内アプリと5つあるとします。名簿を共有しなければ、それぞれの機器にユーザーを登録し、パスワードを設定することになります。

LDAPがない場合 LDAPを使う場合 ユーザー一覧 ユーザー一覧 ユーザー一覧 ユーザー一覧 NAS 複合機 Linux VPN LDAP ディレクトリ (AD など) 機器ごとに登録・削除が必要 名簿は1か所、どの機器も同じ名簿を見る
図1 機器ごとにユーザーを持つ場合と、LDAPで1つの名簿を見る場合

機器ごとにユーザーを持つと、次のような問題が起きます。

問題起きること
管理の手間入社のたびに5か所で登録し、パスワードの変更も5か所で行うことになります。
退職者の消し忘れ1か所でも削除を忘れると、退職した人のアカウントが使える状態で残ります。
パスワードの使い回し覚えきれないので、社員が同じパスワードを使い回したり、メモに書いたりしがちです。
異動への追従「営業部だけ使える」といった権限を、異動のたびに機器ごとに直す必要があります。

名簿を1か所にまとめ、どの機器もLDAPでその名簿に問い合わせるようにすれば、登録も削除も1回で済みます。退職者をADで無効にすれば、LDAPで問い合わせているすべての機器で、その人はログインできなくなります。

LDAPのデータの持ち方:ツリーとDN

データはツリー(木構造)で並んでいる

LDAPのディレクトリは、Excelのような表ではなく、会社の組織図のようなツリーでデータを持っています。いちばん上が会社(ドメイン)、その下に部署、さらにその下に人やグループが並びます。ツリーの1つ1つの項目を「エントリ」と呼びます。

dc=example,dc=com ou=sales ou=dev ou=groups uid=suzuki uid=tanaka cn=vpn-users uid=yamada 会社 部署 人 DN:uid=yamada,ou=sales,dc=example,dc=com 自分の名前から上へ、会社までをカンマでつないだもの
図2 ディレクトリのツリーと、山田さんのDN

DNは「住所」、属性は「名簿の欄」

ツリーの中で1つのエントリを指し示す名前を、DN(Distinguished Name、識別名)と呼びます。図2の山田さんなら uid=yamada,ou=sales,dc=example,dc=com です。「example.com社の営業部の山田さん」を、自分の名前から上へ順に書いたもので、住所を番地から書いていくのに似ています。ADでは CN=Taro Yamada,OU=Sales,DC=example,DC=com のように、人の名前を CN で書く形がよく使われます。

エントリには、名簿の欄にあたる「属性」がいくつも入っています。よく見る属性は次のとおりです。

属性意味値の例
dcドメイン名の一部(domainComponent)example、com
ou部署などの組織単位(organizationalUnitName)sales
cn名前(commonName)Taro Yamada、vpn-users
uidログイン名(userid)yamada
sn姓(surname)Yamada
mailメールアドレスyamada@example.com
memberグループに入っているメンバーのDNuid=yamada,ou=sales,dc=example,dc=com

普通のデータベースとの違い

「名簿ならデータベース(RDB)でもよいのでは」と思うかもしれません。ディレクトリは、読むことが多く書くことが少ない情報を、組織の形のまま持つのが得意です。社員情報は、1日に何千回もログインのたびに読まれますが、書き換えは入社・異動・退職のときぐらいしか起きません。

ディレクトリ(LDAP)リレーショナルデータベース(SQL)
データの形ツリー(組織図の形)表(行と列)
得意なこと人・グループ・機器の情報を、たくさんのシステムから検索・参照する売上や在庫のように、頻繁に書き換わるデータを扱う
代表的な製品Active Directory、OpenLDAPMySQL、PostgreSQL、SQL Server

LDAPでログインを確かめる流れ

LDAPのやり取りは、クライアントがサーバに「操作」を頼む形で進みます。主な操作は次のとおりです。

操作やることたとえると
Bind自分が誰かを名乗り、パスワードなどで確かめてもらう窓口で社員証を見せる
Search条件に合うエントリを探して、属性を返してもらう名簿から探してもらう
Compareエントリの属性が、ある値と一致するかを確かめる「この人は営業部?」と確認する
Add/Delete/Modifyエントリの追加・削除・属性の変更名簿に書き足す・消す・直す
Unbindやり取りを終える窓口を離れる

VPN装置やNAS、社内アプリで「LDAP認証」を設定すると、多くの場合は次のように「探してから、本人として名乗る」流れで動きます。

利用者 アプリ・機器 LDAPサーバ ① IDとパスワードを入力 yamada / ******** ② Bind 検索用のサービスアカウントで 成功 ③ Search (uid=yamada) を探す 山田さんのDN ④ Bind 山田さんのDN+入力されたパスワード 成功 / 失敗 ⑤ ログインの可否
図3 LDAP認証の流れ(探してから、本人として名乗る)

利用者がIDとパスワードを入力する(①)

利用者がVPNのログイン画面などに yamada とパスワードを入力します。アプリや機器(LDAPクライアント)は、この時点ではまだ「yamada」が名簿のどこにいる誰なのかを知りません。

サービスアカウントで名乗る(②)

アプリは、名簿を検索するために用意した専用のアカウント(サービスアカウント、Bind用アカウントとも呼びます)でBindします。機器の設定画面にある「Bind DN」「Bindパスワード」の欄に入れるのが、このアカウントです。

ログイン名から本人を探す(③)

アプリは「ou=... から下で、uid が yamada の人」をSearchし、山田さんのDNを受け取ります。Searchでは、次の4つを指定します。

指定するもの意味例
ベースDNどこから下を探すかdc=example,dc=com
スコープ探す範囲。そのエントリだけ(base)、1段下だけ(one)、下すべて(sub)sub
フィルタ探す条件(uid=yamada)、(&(objectClass=person)(sn=Yamada))
取得する属性返してほしい欄mail、memberOf

本人として名乗り直す(④)

アプリは、見つけたDNと、利用者が入力したパスワードでもう一度Bindします。Bindが成功すればパスワードは正しく、失敗(invalidCredentials)なら間違っています。パスワードの照合はLDAPサーバが行うので、アプリや機器はパスワードを保存しなくて済みます。

必要ならグループも確かめる(⑤)

「VPNは vpn-users グループの人だけ」のような条件があるときは、ユーザーの所属グループもLDAPで確認してから、ログインの可否を決めます。ADなら、ユーザーの memberOf 属性に所属グループのDNが入っています。

補足

機器によっては、②③を省き、入力されたIDからDNを組み立てて(または yamada@example.com の形で)いきなり④のBindをするものもあります。設定画面に「Bind DN」の欄があるかどうかで、どちらの方式かの見当が付きます。

Active DirectoryとLDAPの違い

いちばん混同しやすいのが、ADとLDAPの関係です。LDAPは名簿に問い合わせるための「言葉(プロトコル)」で、ADはマイクロソフトの「製品」です。ADはディレクトリを持ち、その窓口の1つとしてLDAPを話します。ほかにも、Windowsのログオンに使うKerberos、名前解決のDNS、PCを一括で設定するグループポリシーなどを1つにまとめています。

Active Directory(ドメインコントローラ) Kerberos(88) LDAP(389 / 636) DNS(53) グループポリシー Windows PC 複合機 Linuxサーバ ディレクトリ ユーザー・グループ・PC
図4 ADの中のディレクトリと、それを使う窓口(括弧内はポート番号)

ドメインに参加したWindows PCのログオンは、主にKerberosで行われます。一方で、複合機、Linuxサーバ、VPN装置、NAS、業務アプリなどWindows以外の機器やアプリは、LDAPでADの名簿を検索したり、ログインを確かめたりします。つまり、「LDAPかADか」を選ぶのではなく、「ADという名簿を、LDAPという言葉で使う」という関係です。

LDAPActive Directory
正体プロトコル(問い合わせの決まりごと)マイクロソフトのディレクトリサービス製品
できることディレクトリの検索、Bindによる本人確認、エントリの追加・変更ディレクトリに加えて、Kerberos、DNS、グループポリシーなどをまとめて提供
ほかの例―OpenLDAP、389 Directory Server など(LDAPで使えるディレクトリ製品)
補足

ADでは、通常のLDAP(389)のほかに、フォレスト全体を検索するためのグローバルカタログ(3268、TLSでは3269)があります。複数ドメインの環境で「ユーザーが見つからない」ときは、問い合わせ先のポートを確認してみてください。

RADIUS・SAML・OAuthとの違い

LDAPと並んでよく出てくる認証まわりのプロトコルとの関係を、1枚の図にまとめます。ポイントは、LDAPが「名簿を引く」役で、ほかのプロトコルは「名簿を使って、何かを許可する」役だということです。

SaaS Wi-Fi・VPN の入口 複合機・社内アプリ RADIUSサーバ IdP RADIUS LDAP LDAP SAML / OIDC 同期・LDAP など ディレクトリ(AD・LDAPサーバ)
図5 LDAPはいちばん下で「名簿」を引き、ほかのプロトコルはその上で使われる
プロトコル主な役割誰と誰が話すかLDAPとの関係
LDAP名簿(ディレクトリ)の検索と、Bindによる本人確認アプリ・機器 ↔ ディレクトリサーバ―
RADIUSWi-Fi・VPNなどネットワークの入口でのAAA(認証・認可・アカウンティング)AP・VPN装置 ↔ RADIUSサーバ社内のアカウントで認証するとき、RADIUSサーバがADなどに確認する。そのやり取りにLDAPが使われることが多い
SAMLWebアプリのシングルサインオンブラウザを介して IdP ↔ クラウドサービスIdPのユーザー情報の元がADであることが多い(同期やLDAPなどで連携)
OAuth 2.0
OpenID Connect
OAuthはAPIを使う権限の受け渡し(認可)。OpenID Connectはその上でログイン(認証)を行うアプリ ↔ 認可サーバ(IdP)SAMLと同じく、IdPの裏側の名簿として使われる
KerberosWindowsドメインのログオンWindows PC ↔ ドメインコントローラADの中でLDAPと並んで動く

もう1つ大きな違いがあります。SAMLやOpenID Connectが受け渡すのは「いまログインした本人」の情報です。一方LDAPは、名簿全体から条件に合う人やグループを探せます。「営業部の全員のメールアドレスを一覧したい」「このグループに誰が入っているか知りたい」といった用途は、LDAPの得意分野です。

こんなときはLDAP

ここまでの内容を、「やりたいこと」から逆に引けるようにまとめます。どれも、ブラウザでログイン画面を出せない機器や、名簿そのものを検索したい場面です。

やりたいことLDAPを使う理由
複合機でスキャンした文書を、社員のメールアドレス宛てに送りたい複合機のアドレス帳がLDAPでADを検索し、宛先のメールアドレスを引けます。社員の登録を複合機ごとにやる必要がありません。
VPNやNASを、ADのアカウントで、特定のグループの人だけに使わせたい機器がLDAPでパスワードを確かめ、所属グループも確認できます。退職者や異動者もADの変更だけで反映されます。
Linuxサーバに、社員がADのアカウントでログインできるようにしたいSSSDなどを使い、LDAPでユーザーやグループの情報を引きます(パスワードの確認にはKerberosを使う構成もあります)。
社内アプリやパッケージ製品のログインを、ADのアカウントでそろえたい多くの製品が「LDAP認証」の設定を持っており、図3の流れでADを使えます。
部署やグループのメンバー一覧を、システムから取りたいLDAPのSearchで、条件に合うエントリをまとめて取得できます。

クラウドの時代にLDAPはどうなるのか

最近は、Microsoft Entra IDなどのクラウドのID基盤に移る会社も増えています。ただ、クラウドのID基盤はSAMLやOpenID Connectでログインさせることが中心で、Microsoft Entra IDには、機器がそのままLDAPで問い合わせる窓口はありません。一方で、複合機やNAS、VPN装置、Linuxサーバのように、LDAPでしか社内のアカウントを使えない機器はまだ多く残っています。

こうした機器を使い続ける場合は、次のような形がとられます。

  • オンプレミスのADを残し、LDAPが必要な機器はADを見る。
  • Microsoft Entra Domain Services のように、クラウド側でLDAP(TLSを使う636番も含む)を提供するサービスを使う。
  • IDaaS製品が用意しているLDAPの窓口やエージェントを使う。

どの形にするかを考えるには、まず社内の機器やアプリのうち、どれがLDAPを使っているかを洗い出すのが近道です。設定画面に「LDAPサーバ」「Bind DN」の欄がある機器が、その候補です。

安全に使うためのポイント

389番のままでは、パスワードが読める

通常のLDAP(TCP 389)の通信は暗号化されていません。Bindでよく使われるシンプルBindでは、パスワードがそのまま送られるため、通信を盗み見られるとパスワードがわかってしまいます。パスワードを送る場合は、TLSで暗号化した通信を使います。

方式内容
LDAPS(TCP 636)最初からTLSで暗号化した通信でLDAPを話す方式です。
StartTLS(TCP 389)389番でつないだ後、StartTLSという操作で暗号化に切り替える方式です。

ADではLDAP署名の要求に注意する

ADには、署名のないLDAPのやり取りを拒否する「LDAP署名」の設定があります。Windows Server 2025では、新しく作るADで、LDAP署名を必須にするのが既定になりました。暗号化していない389番でシンプルBindをしている古い機器やアプリは、つながらなくなる可能性があります。ADを新しくするときは、LDAPを使う機器をLDAPSかStartTLSに切り替えられるかを、先に確認しておくと安心です。

空のパスワードと、Bind用アカウントの権限

注意点内容
空のパスワードLDAPには、DNだけを送りパスワードを空にした「認証なしのBind」があります。アプリがこれを成功と扱ってしまうと、パスワードなしでログインできてしまいます。空のパスワードはアプリ側で受け付けず、サーバ側でも認証なしのBindを拒否する設定にします。
匿名のBindDNもパスワードも空のBind(匿名)で名簿を読めると、社員の一覧が外から取れてしまいます。必要がなければ無効にします。
Bind用アカウント図3の②で使うサービスアカウントは、検索に必要な読み取り権限だけにし、パスワードは長く推測しにくい値にします。

まとめ

LDAPは、ADなどのディレクトリ(名簿)に問い合わせるための共通の言葉です。名簿を1か所にまとめ、いろいろな機器やアプリが同じ名簿をLDAPで見ることで、アカウントの登録や削除が1回で済むようになります。RADIUSやSAMLが「入口」や「ログイン」を受け持つのに対し、LDAPはその下で名簿を引く役です。

項目ポイント
LDAPとはディレクトリ(名簿)に問い合わせるためのプロトコル
なぜ必要か機器ごとのアカウント管理をやめ、1つの名簿で登録・削除・権限を管理するため
データの持ち方組織図のようなツリー。エントリの住所がDN(例:uid=yamada,ou=sales,dc=example,dc=com)
ログインの確認サービスアカウントでBind → Searchで本人のDNを探す → 本人のDNとパスワードでBind
ADとの違いLDAPは言葉、ADは製品。ADはLDAPのほかKerberos・DNS・グループポリシーも提供する
ほかとの違いRADIUSはネットワークの入口、SAML・OpenID ConnectはWebのログイン、LDAPはその裏の名簿の検索
ポートLDAP 389(StartTLSも389)、LDAPS 636、ADのグローバルカタログ 3268/3269
セキュリティパスワードを送るならLDAPSかStartTLS。空のパスワードと匿名Bindに注意し、ADではLDAP署名の要求に備える

コメント