アイデンティティ管理(16)なぜアプリケーションに直接LDAPの設定を行うのではなくSSSDを使うのか?

*本記事は「Red Hat Enterprise Linux Blog」に掲載された記事を翻訳したものです
原著:「Why Use SSSD Instead of a Direct LDAP Configuration for Applications?
執筆:Dmitri Pal
翻訳:ソリューションアーキテクト 森若 和雄

以前の投稿「アイデンティティ管理とアプリケーションの統合」では、どのようにアプリケーションがアイデンティティ管理エコシステムを活用できるかを扱いました。たとえば、多くのアプリケーションではApacheモジュールおよびSSSDを統合することで、より柔軟な認証を実現しています。これは進歩なのですが、納得できない方もいます。なぜ単純にLDAP設定をするのではなく、ApacheモジュールとSSSDを(たとえば)Active Directoryと組みあわせる必要があるのか? どうしても「なぜわざわざそんなことをするのか?」と疑問に思うのです。

このシナリオを詳細に見てみましょう。あるアプリケーションが直接LDAPへ接続する設定をサポートしており、十分良く動作すると仮定します。

システム管理者がアプリケーションによるLDAP接続を選択する理由は、以下の2つでしょう:

  • 単純である – LDAPの接続情報を入力するだけで終わります
  • アプリケーションのUIが入力を支援してくれる

SSSDはもう少し複雑なセットアップと設定が必要となりますが、SSSDを利用することで、直接LDAPを利用するよりも良い点があります。具体的には、

  • Enterprise SSO – ApacheモジュールとSSSDを利用することで、Kerberosベースの認証を利用でき、Active Directoryで認証されたユーザーはユーザー名やパスワードを(ふたたび)聞かれることなくアプリケーションにアクセスできます
  • フェイルオーバー – アプリケーション組み込みのLDAP接続機能は往々にしてフェイルオーバー機能を持っておらず、そのためもしサーバーへの接続が切れてしまうとアプリケーションはうまく動作しなくなる可能性があります。一方SSSDは、Active Directoryサーバー群を発見するディスカバリ機能を持ち、(設定により)明示的もしくはDNSベースのフェイルオーバー機構により、コネクションが切れた場合にも動作を継続することができます
  • オフラインをサポート – もしサーバーへの接続が切れてしまった場合も、キャッシュがあればアプリケーションは動作を継続することができます。SSSDは、シンプルなLDAPソリューションが通常提供しないこの機能を提供します
  • セキュリティ – LDAPサーバーへの接続のセキュリティは非常に重要です。特にシンプルなLDAPの場合、接続にはアプリケーションの設定ファイルかデータベースに保存されたパスワードが必要です。これはベストプラクティスではありません。実際のところ、Kerberos keytabをサーバーへの接続に利用する方がはるかに安全です。SSSDとGSSProxyによるソリューションは、こちらの仕組みで作成されています
  • ドメインを考慮する – Active Directory環境が複数の異なるドメインをまとめた1つ以上のフォレストからできているのはよくあるケースです。ユーザーはフォレストの異なる位置にいたり、全く別のフォレストにいることもあります。SSSDベースのソリューションではこれらの複雑さを隠蔽し、異なるドメインやフォレストのユーザーがアプリケーションにアクセスできるようにします。これはシンプルなLDAP設定では不可能なことです
  • サイトを考慮する – Active Directoryサーバーは多くの場合特定の場所またはデータセンターに対応づけられています。SSSDベースのソリューションはサイトにより最も近いActive Directoryサーバーを選択します。シンプルなLDAPの場合、大抵は1つのサーバーだけを利用し、ディスカバリやサイトによるサーバー選択は行われません。これはアプリケーションが複数のインスタンスを持ち、世界のまったく異なるどこかにあるサーバーを利用するのではなくローカルのサーバーを利用したい場合に重要になります
  • 負荷分散 – LDAPへの接続も簡単に負荷分散できるという反論があるかと思います。実際に可能ですが、SSSDベースのソリューションではロードバランサーも不要です。SSSDはディスカバリやフェイルオーバーの機能があるので、別のハードウェアを設定・メンテナンスする必要がなくなり、時間と費用を節約できます

まとめると、Apacheモジュールによる外部の認証は認証方法に大きな柔軟性をもたらし、複雑なドメイン構造をサポートし、セキュリティ上の特性もよく、そして追加の機材なしでアプリケーションの回復力を上げることができます。

もちろん、何事にも対価が必要です。外部の認証を設定するには、シンプルなLDAPの設定を行う場合と比べると、理解するべき設定内容が少し増えます。いくらか複雑にもなりますが、この複雑さは(わずかな)労力に値するものです。ipa-client-install や realmd のような導入および設定ツールによって、SSSDの設定はシンプルで簡単になります。導入スクリプトやPuppetモジュールがアプリケーションから提供されている場合もあります。これらの支援によりSSSDベースの統合は非常にスムーズで、(SSSDが提供する)リッチな機能を使うことができます。

* 各記事は著者の見解によるものでありその所属組織を代表する公式なものではありません。その内容については非公式見解を含みます。