1. はじめに
ライトウェイトディレクトリアクセスプロトコル (LDAP) [RFC4510] は, ディレクトリにアクセスするための強力なプロトコルである. ディレクトリ内容の検索, 取得, 操作の手段と, 豊富なセキュリティ機能群にアクセスする方法を提供する.
これらのセキュリティ機能がインターネット上のすべての LDAP クライアントとサーバーの間で相互運用可能であることは極めて重要である. したがって, LDAP 準拠を主張するすべての実装に共通するセキュリティ機能の最小部分集合が存在しなければならない.
LDAP ディレクトリサービスに対する基本的な脅威には, 次のものがある (これらに限定されない):
(1) データ取得操作によるディレクトリデータへの不正アクセス.
(2) 他者のアクセスを監視することによるディレクトリデータへの不正アクセス.
(3) 他者のアクセスを監視することによる, 再利用可能なクライアント認証情報への不正アクセス.
(4) ディレクトリデータの不正な変更.
(5) 構成情報の不正な変更.
(6) サービス妨害 (Denial of Service): 他者へのサービス提供を妨げる目的で (通常は過剰に) リソースを使用すること.
(7) なりすまし (Spoofing): 転送中のデータを改変したり, クライアントのトランスポート接続を誤った方向へ導いたりして, 情報がディレクトリから来たとユーザーやクライアントに誤信させること. ディレクトリサーバーに見えるが実際にはそうでない敵対的実体に, ユーザーやクライアントに特権情報を送らせること. 情報が特定のクライアントから来たとディレクトリサーバーに誤信させるが, 実際には敵対的実体から来ていること.
(8) ハイジャック (Hijacking): 攻撃者が確立済みのプロトコルセッションの制御を奪うこと.
脅威 (1), (4), (5), (6), (7), (8) は能動的攻撃 (active attack) である. 脅威 (2) と (3) は受動的攻撃 (passive attack) である.
脅威 (1), (4), (5), (6) は敵対的クライアントによるものである. 脅威 (2), (3), (7), (8) は, クライアントとサーバーの間の経路上の敵対的エージェント, またはサーバーを装う敵対的エージェント (例えば IP スプーフィング) によるものである.
LDAP は次のセキュリティメカニズムを提供する:
(1) Bind 操作による認証. Bind 操作は, 匿名 (anonymous), 未認証 (unauthenticated), 名前/パスワード (name/password) の各メカニズムをサポートする simple 方式と, 多種多様な認証メカニズムをサポートする Simple Authentication and Security Layer (SASL) 方式を提供する.
(2) ベンダー固有のアクセス制御機能をサポートするメカニズム (LDAP は標準のアクセス制御機能を提供しない).
(3) Transport Layer Security (TLS) または SASL メカニズムのセキュリティ層によるデータ完全性サービス.
(4) TLS または SASL メカニズムのセキュリティ層によるデータ機密性サービス.
(5) サーバーに構成された管理上の制限によるサーバーリソース使用量の制限.
(6) TLS プロトコルまたは SASL メカニズムによるサーバー認証.
LDAP は, LDAP プロトコル以外の手段, 例えば IP 層のセキュリティ [RFC4301] によって保護されることもある.
経験によれば, 実装するセキュリティメカニズムを実装者が自由に取捨選択できるようにするだけでは, 相互運用性にはつながらない. 義務づけがなければ, サーバーがサポートするどのセキュリティ機能もサポートしないクライアントが書かれ続けるか, さらに悪い場合には, ほとんどの状況で不十分なセキュリティしか提供しないメカニズムだけをサポートするクライアントが書かれ続けることになる.
クライアントが, 識別名 [X.501][RFC4512], その文字列表現 [RFC4514], あるいは種々のシステムで用いられる形式 (例えば単純なユーザー名 [RFC4013]) として識別子を表現するメカニズムを含む, 多様なメカニズムを用いて認証できることが望ましい. 一部の認証メカニズムは資格情報を平文で送信し, かつ/またはデータセキュリティサービスを提供せず, かつ/または受動的攻撃の対象となるため, トランスポート層セキュリティサービスを確立するための実装必須 (mandatory-to-implement) メカニズムを特定することにより, 安全な相互運用性を確保する必要がある.
LDAP で提供され本文書で記述されるセキュリティメカニズムの集合は, 幅広い配備シナリオのセキュリティ要件を満たしつつ, 各種 LDAP 実装と配備の間で高度な相互運用性を提供することを意図している.
1.1. 他の文書との関係
本文書は LDAP 技術仕様 [RFC4510] の不可分の一部である.
本文書は [RFC4510], [RFC4511] および [RFC4512] とともに, RFC 2251 を完全に廃止する. RFC 2251 の 4.2.1 節 (一部) と 4.2.2 節は本文書によって廃止される. 付録 B.1 は, 本文書が RFC 2251 に対して行った実質的な変更を要約する.
本文書は RFC 2829 を完全に廃止する. 付録 B.2 は, 本文書が RFC 2829 に対して行った実質的な変更を要約する.
RFC 2830 の第 2 節と第 4 節は [RFC4511] によって廃止される. RFC 2830 の残りは本文書によって廃止される. 付録 B.3 は, 本文書が RFC 2830 に対して行った実質的な変更を要約する.
1.2. 表記規則
本文書におけるキーワード "MUST", "MUST NOT", "SHALL", "SHOULD", "SHOULD NOT", "MAY", "OPTIONAL" は, RFC 2119 [RFC2119] に記述されているとおりに解釈されるものとする.
用語 "user" は, ディレクトリクライアントを用いてディレクトリにアクセスするあらゆる人間またはアプリケーション実体を表す. ディレクトリクライアント (またはクライアント) は, ディレクトリユーザーエージェント (DUA) とも呼ばれる.
用語 "transport connection" は, プロトコル交換を運ぶために用いられる下位のトランスポートサービス, およびこれらのサービスによって確立される関連付けを指す.
用語 "TLS layer" は, セキュリティサービスを提供するために用いられる TLS サービス, およびこれらのサービスによって確立される関連付けを指す.
用語 "SASL layer" は, セキュリティサービスを提供するために用いられる SASL サービス, およびこれらのサービスによって確立される関連付けを指す.
用語 "LDAP message layer" は, ディレクトリサービスを提供するために用いられる LDAP Message (PDU) サービス, およびこれらのサービスによって確立される関連付けを指す.
用語 "LDAP session" は, 複合的なサービス (トランスポート接続, TLS 層, SASL 層, LDAP メッセージ層) とそれらの関連付けを指す.
一般に, 本文書のセキュリティ用語は [RFC2828] に示された定義と一貫して用いられる. さらに, セキュリティ, 認証, 認可に関するいくつかの用語と概念を本文書の付録 A に示す. これらの用語と概念の正式な定義は本文書の範囲外であるが, それらを理解することは本文書の多くの内容を理解するための前提である. セキュリティ関連の概念に馴染みのない読者は, 本文書の残りを読む前に付録 A を一読することを推奨する.