実用的なアプリを設計するには、多くの労力とさまざまな点への注意が必要です。アプリとクライアント間の安全でスムーズな通信を確保することもその一つです。API開発やAPIセキュリティに携わる方は、オープンソースプロトコルであるLDAPについて十分に理解することが求められます。本記事で、その意味と可能性を探ります。
多くの方がなじみのあるインターネットプロトコルであるLDAPは、顧客情報の照会を可能にします。あまり詳しく知らなかったり、技術的な知識が不足していても問題ありません。ここで、このプロトコルについて詳しくご紹介します。
プロトコルについて
LDAPはLightweight Directory Access Protocolの略です。構造上、従来のプロトコルより軽量なDAPプロトコルとなっております。開発業界では、アプリが顧客固有の情報に直接アクセスし、大規模な認証を実施できる点で広く知られています。
オープンソースであるため、数千ものアプリに採用されています。また、公共・プライベートのネット接続や各種ディレクトリサービスに対応する幅広い実装範囲を持ちます。
ほとんどすべてがLDAPで問題なく動作するため、情報へのアクセス、修正、認証の手段として業界で好まれています。
ディレクトリ関連サービスの中でも、LDAPはOpenLDAPやAD(アクティブディレクトリ)との互換性が最も高いです。
日常的な管理作業で大量のデータを扱う労力から、LDAPの価値を理解できるでしょう。従業員は毎日、ユーザ名、パスワード、メール、Wi‑Fiパスワードなどのデータを用いて業務を遂行します。
これらの情報に簡単にアクセスするため、組織はディレクトリを利用し、共通データを格納します。しかし、従業員と管理者はどのように情報をやり取りするのでしょうか?
ここでLDAPの役割が発揮されます。このプロトコルにより、ディレクトリと従業員は必要な情報をマッピングし、主にSSO技術を用いてユーザの認証を行い、情報を交換します。許可が下りると、従業員はリクエストデータを受け取ることができます。
機能面では、LDAPはサーバがクライアントと共有するサーバ応答、データのフォーマット、リクエストなどの情報を、ADサービスとシームレスに交換できるようにします。
この仕組みを実現するため、LDAPは対象のユーザをサーバに結び付けます。クライアントから特定の情報アクセスリクエストが届くと、LDAPサーバが動作し、内部言語で処理を行った後、そのリクエストをディレクトリサービスに転送します。
ディレクトリサービスはリクエストを処理し、対応する応答をクライアントに転送します。このサイクルが完了すると、LDAPはクライアントとサーバの結び付けを解除し、クライアントはリクエストとレスポンスのデータを取得できます。
また、LDAPはSSSD(System Security Services Daemon)の処理にも広く関与しています。SSSDはLinux専用のソフトで、各種認証やID確認サービスへの情報アクセスを容易にするため、ネイティブLDAPドメインが設定上重要です。
LDAPは、割り当てられた作業を的確に実行するために、多くのデータ構成要素で成り立っています。これらの要素を理解することで、より容易に利用することができます。
属性
LDAPの主要なデータ保存形式である属性は、大量に存在することが一般的です。それぞれの属性には固有のタイプが設定され、エンドユーザとディレクトリサーバ間のやり取りのルールを定めます。保存されたデータに加え、クライアント側でアクセスされたデータも属性として保持されることがあります。
エントリ
このLDAPデータ構成要素は、ユーザやアイテムの識別に関するもので、後の検証のために特定の名前の下に対応する属性を一覧化します。エントリがなければ属性は存在せず、エントリが属性の有効活用を可能にします。
データ情報ツリー
LDAPは関連付けられた属性を用いて全データを保存し、全体の一部のみを表示します。残りはエントリの更新を通じてのみアクセス可能で、これらの情報はDITの枝となり、DITを使って過剰な情報の保存と管理が容易になります。
スキーマ
この構成要素はオブジェクトクラスと関連付けられたもので、属性の定義が含まれます。DIT内に多数のスキーマが存在し、エントリや属性の作成に主に利用されます。
LDAPは動作時に特定の操作タイプに従います。以下に、その概要を示します。
LDAPサーバが起動して通信が始まると、セッションの状態は未確定です。そこで、この操作により確認と調整が行われ、通常はシンプルもしくはSASLによる認証手続きで実施されます。
新規(固有な)エントリが更新され、ディレクトリサーバのデータベースに保存されます。既存の名前が再度入力されると、LDAPサーバはこれを拒否し、警告メッセージを表示します。
その名の通り、アンバインド操作はLDAPで構築されたサーバとクライアントの接続を終了します。接続が自動的に切断されても、関連リソースの解放のためにアンバインド操作の実施が推奨されます。
この操作を利用することで、LDAPクライアントは特定のレコードを見つけ、他の値と照合することが容易になります。名前、属性、サイズ、種類などのフィルターを用いてデータ検索が可能です。
この操作により情報の編集が行われます。編集は、エントリへの新たな内容の追加、または既存データの削除や上書きとして行われます。
不要なエントリは削除操作により容易に除去できます。ただし、エントリ名やリクエスト制御などの詳細を含む完全な削除リクエストがサーバに届くまで、削除は開始されません。
次の3つの仕組みを使用します:
LDAPサーバは、クライアントのメッセージ転送過程で他の認証手続きと連携します。これにより、一連の応答メッセージが開始されます。
その応答は、認証成功または失敗の結果を示します。これらのメッセージは基本的に平文で送信されるため、不正アクセスから情報を守るために厳重なセキュリティ対策が必要です。
両方式とも、既製のアクセス管理層を介した標準的なセキュリティを提供します。しかし、デフォルトのLDAPポートである389番は内蔵のセキュリティを持たず、認証が十分でないため、熟練のハッカーにより重要情報が狙われる可能性があります。
LDAPのセキュリティ向上には、SSL/TLS暗号化の追加が強く推奨されます。さらに、LDAPv3 TLS拡張やStartTLSモードなどの高度なセキュリティ拡張機能の利用で、接続が強化されます。
ADは、組織の共有資源を管理・保存するために利用される、業界で広く知られたディレクトリサービスです。通常、ADはユーザーデータ、サーバ、ドメイン名などの共有資源を管理します。
Microsoftが提供するADは、ユーザー・グループ管理、認証、ポリシーの作成や制御などの機能を付与します。
ADとLDAPは多くの類似点を持つため、同一視されがちですが、実際は異なります。ここではLDAPとADの違いについて説明します。
LDAPを深く理解するためには、SAMLとの違いを知ることも重要です。どちらもリモート認証プロトコルであり、高いセキュリティを備えています。そのため、どちらも魅力的な選択肢です。
ここで最も大きな違いは、その起源にあります。LDAPは90年代初頭、SaaSやパブリッククラウドが存在しなかった時代に登場しました。当時、リモートワークが一般的になるとは誰も予想していませんでした。
SAMLは2000年代初頭に、ウェブアプリのID統合を目的として誕生しました。SAMLになる前はXMLであり、HTTPSとして利用されることもありました。複数のIDを持つため、SAMLの動作にはStartTLSやLDAPの助けを必要としません。
SAMLにMFAを実装する場合、プロトコル仕様から逸脱する必要はありません。LDAPはMFAに適していないため、LDAP接続を構築する際の重要なステップとなります。この理由から、SAMLがLDAPよりも好まれる傾向にあります。
LDAPは有名で柔軟性が高い一方、完璧ではなく一定のリスクを伴います。早期かつ適切に対処しないと、APIの観点から深刻な問題が発生する可能性があります。特に懸念されるのは、LDAPがプライベートリソースへの接続を確立できるために起こるLDAPインジェクションです。
LDAPインジェクションは、ウェブアプリを介して悪意あるコードを注入し、重要なLDAPディレクトリ情報やデータにアクセスさせるサイバー攻撃の一種です。
この攻撃コードには、LDAPユーザのリクエストを改変するLDAPメタ文字が含まれていることが多いです。
攻撃が成功すると、不正アクセス、データ漏洩、アカウント乗っ取り、権限昇格などの被害が発生します。被害の程度は影響を受けたデータによって異なります。以前、攻撃者はLog4j脆弱性を利用してシステムに侵入した際、LDAPを利用しました。
LDAPサーバがリクエストの正当性を十分に確認しない場合にのみ、LDAPインジェクション攻撃は成立するため、脅威の余地が生まれます。
LDAPはリスクを伴うため、適切なセキュリティ対策を講じ、リスクを抑える方法を理解しておく必要があります。以下に、LDAPの安全性を確保するための効果的な手段を紹介します。
Wallarmはウェブ、マイクロサービス、APIセキュリティ分野で信頼される存在であり、多様なセキュリティソリューションを提供しています。WallarmのCloud WAFは、機能豊富なクラウドネイティブWAFとして、既知および未知のサイバー脆弱性を防ぐことが可能です。
使いやすいツールであるWallarm Cloud WAFは、DNS設定のわずかな変更でほぼ全てのAPIに対応します。自動調整機能により誤検知がほぼ発生せず、有効化することでLDAPインジェクション、OWASP Top 10脅威、アカウント乗っ取り、APIの濫用など、多くのサイバーリスクを防ぐことができます。
RegExps不使用やバイパス耐性など、最先端の予防技術に支えられているため、優れたLDAPセキュリティを実現します。自動化機能により、APIセキュリティの専門家も安心して利用できます。
最新情報を購読