Windows Azureエンタープライズアプリケーション開発技法

Windows Azure Virtual NetworkとTraffic Managerとフェデレーション認証
―― 第2章 Windows Azureプラットフォーム概要 2.3.5/2.3.6/2.3.7 ――

日本マイクロソフト株式会社 コンサルティングサービス統括本部
赤間 信幸
2011/12/26
Page1 Page2 Page3

2.3.7 フェデレーション認証

 フェデレーション認証は、厳密にはWindows Azure Platformの機能ではなく、またマイクロソフト固有の技術というわけでもない。しかし、Windows Azure Platformでシステムを構築する場合、中でも特にオンプレミス環境に存在していた業務システムをWindows Azure環境に切り出すようなケースにおいては、フェデレーション認証がほぼ必須となるものであるため、ここで解説する。

フェデレーション認証とは何か

 そもそも「フェデレーション認証」という言葉に馴染みのない方も多いと思われるため、まずこれについて解説する*6。

*6 なお、ここでは簡単のために、やや単純化してフェデレーション認証を解説する。より一般的なフェデレーション認証に関する解説を読みたい場合には、以下の情報を参照のこと。
  「Windows CardSpace概要

 今、社内にある既存の業務システムをWindows Azure上に移行したり、あるいは従来であればイントラネットに配置したりするはずの業務システムをWindows Azure上に構築した場合について考えてみる。

 ユーザー情報が社内のActive Directoryドメインにより管理されており、かつ業務システムがイントラネットにある場合には、問題なくWindows統合認証を使うことができる。このため、エンドユーザーは、ユーザー名やパスワードを明示的に入力することなく、この業務システムを利用することができる。しかし、業務システムが社外(Azureなどのインターネット上)に置かれている場合には、Windows統合認証を使ってアクセスすることができない(図 2-35)。

図 2-35 社外にある業務システムにアクセスする場合

 このような問題に対して、従来は図 2-36に書かれているような方式(オンライン連携方式)で解決を図ることが多かった。

  • まずオンプレミス環境に、Active Directoryなどの認証サーバーを使ってユーザー名・パスワードの妥当性をチェックする機能を持ったサーバー(認証連携サーバー)を作成する(通常はXML Webサービスなどの形で開発する)。
  • Windows Azure環境のアプリケーションの中に、ユーザー名とパスワードを入力させるログインページを作る。
  • ユーザー名やパスワードが入力されたら、オンプレミス環境の認証連携サーバーを呼び出して、入力されたユーザー情報の正誤を確認する。
図 2-36 オンラインでオンプレミス環境のサーバーと認証連携を行う方式

 しかし、この方式には以下の難点がある。

  • クラウド上のアプリケーションが、ユーザー名とパスワードの情報を受け取る必要がある*7
  • 個別作り込みによる対応にすぎないため、汎用性がない。
*7 クラウド環境のアプリケーションは、「ユーザーが確かに本人である」ことさえ確認できればよく、パスワードを知りたいわけではない。クラウド環境のアプリケーション側がパスワード情報そのものを受け取る仕様になっていると、以下のような問題を生じることがある。 万が一、クラウド環境のアプリケーションがクラックされた場合、エンドユーザーのパスワードが奪取される危険性が生じる。 クラウド環境のアプリケーションが自社アプリケーションであればよいが、他社のアプリケーションやシステムであるケースもある(例:アプリケーションサービスプロバイダーが提供するアプリケーションに、自社のユーザーアカウントでアクセスしたい場合など)。このような場合に図 2-36のような方式を使うと、他社のアプリケーションに対して、自社のユーザー・パスワード情報をさらすことになってしまう。

 こうした問題を解決するために生まれたのが、フェデレーション認証という方式である(図 2-37)。フェデレーション認証方式では、セキュリティトークンと呼ばれるチケットを使うことで、エンドユーザーがパスワード情報をネットワーク上に晒さなくてすむようになっている。大まかな動作は以下の通りである。

  • セキュリティトークン(通常はクッキー情報により取り扱われる)を持たない状態で、社外(ここではAzure環境)のアプリケーションにアクセスを試みると、アクセスが拒否される。そしてそれと共に、社内のフェデレーションサーバーにセキュリティトークンを取りに行くように指示される(社内のフェデレーションサーバーへのリダイレクトが行われる)*8
  • エンドユーザーがフェデレーションサーバーにアクセスすると、ユーザー確認が行われ、セキュリティトークンが発行される*9 *10
  • このセキュリティトークンを持った形で社外のアプリケーションにアクセスすると、このセキュリティトークンの真贋判定が行われる*11。正しいものだった場合、アプリケーションにアクセスできるようになる。
図 2-37 フェデレーション認証による認証連携方式

*8 フェデレーションサーバーは、セキュリティ用語では「セキュリティトークンサービス(STS)」と呼ばれる。また、実際にユーザー情報を保有するシステムは「アイデンティティプロバイダー(IP)」と呼ばれる。Active Directoryは典型的なIPである。
*9 セキュリティトークンには、当該ユーザーのユーザー名やグループ情報などが含まれているが、パスワード情報は含まれていない。また、このセキュリティトークンは、通常、フェデレーションサーバーが保有する秘密鍵で暗号化されている。
*10 このフェデレーションサーバーは社内にあるため、Windows統合認証を使ってアクセスしてもらうことができる。すなわち、フェデレーションサーバーがWindows統合認証を受け付けられる設定になっている場合、エンドユーザーはユーザー名やパスワードを入力しなくても、セキュリティトークンを発行してもらえることになる。
*11 この真贋判定は、通常は、送られてきたセキュリティトークンが、フェデレーションサーバーの公開鍵で解読できるかどうかにより行われる。なお、一連の動作の中で、なぜAzure環境の認証システムが、オンプレミス環境のフェデレーションサーバーと連携できるのか疑問に思われた方も多いかと思う。この点については解説を省いたが、実際にこのようなフェデレーション認証の仕組みを組み上げるためには、Azure環境の認証システムの中に、少なくとも以下の2つに相当する情報を組み込んでおく必要がある。 セキュリティトークンを持っていなかった場合に、エンドユーザーがどこにセキュリティトークンを取りに行くべきか(すなわちリダイレクト先となるURL)。 セキュリティトークンの真贋判定を行うための情報(通常はフェデレーションサーバーの公開鍵)。

 フェデレーション認証のポイントは、社外のサーバーに対して平文のパスワードが直接送信されることがない、という点である。このためフェデレーション認証を使うと、社外のサーバーに対して、自社内のアカウントを使って安全な形でアクセスすることができる。

フェデレーション認証を使うために必要な機能

 フェデレーション認証は非常に便利なものであり、フェデレーション認証における一連のデータのやり取りは、WSフェデレーション(WS-Federation)と呼ばれる仕様により標準化されている。しかし、実際にWSフェデレーションを利用するためには、以下の機能を用意する必要がある。

  • 社内(オンプレミス)環境
    • セキュリティトークンを発行することができる、フェデレーションサーバー
  • 社外(クラウド)環境
    • セキュリティトークンがない場合にエンドユーザーをフェデレーションサーバーにリダイレクトすると共に、セキュリティトークンが送られてきた場合にはその真贋判定を行うような認証モジュール

 こうした機能を自力で作り込むのは大変だが、マイクロソフト製品を使った場合にはいくつかの機能やツールが用意されており、比較的簡単にフェデレーション認証を実現することができる。具体的な機能は以下の通りである*12

  • ADFS(Active Directory Federation Service)
    • Active Directory上のユーザー情報を使ってセキュリティトークンを発行する、フェデレーションサーバー(STS)を構築するための機能。Windows Server 2008の標準機能として搭載されている。
  • WIF(Windows Identity Foundation)
    • アプリケーションに、フェデレーション認証機能を組み込むためのモジュール。Webからダウンロードし、自前のアプリケーションに組み込むことができるようになっている。
*12 これ以外にもフェデレーション認証に関連する重要な機能として、Windows Azure AppFabric Access Control Service(ACS)がある。これを利用すると、複数のSTSを束ねて1つのSTSとして取り扱うことなどができる。詳細はここでは触れないため、興味がある方はWebで調べてみていただければと思う。

図 2-38 マイクロソフト製品によるフェデレーション認証の実現方法

 以上、フェデレーション認証について解説した。クラウド環境に業務システムを配置する場合、このような認証連携は極めて重要になってくるため、理解しておくとよい。

 ここまで、Windows Azure Platformの様々な機能について解説してきたが、改めて代表的なサービスを列挙すると、以下のようになる。細かい使い方よりも、それらがどのような機能で、どんなときにどんな目的で使うものなのか、という点を押さえていただければと思う。

表 2-10 Windows Azure Platformの代表的なサービス

 「第2章 Windows Azureプラットフォーム概要」は今回で終了だ。次回は「第3章 クラウドとオンプレミスの考え方の違い」の「3.6 マルチテナントアーキテクチャ」を転載する。end of article

 

 INDEX
  [書籍転載]Windows Azureエンタープライズアプリケーション開発技法
  Windows Azure Virtual NetworkとTraffic Managerとフェデレーション認証
    1.Windows Azure Virtual Network
    2.Windows Azure Traffic Manager
  3.フェデレーション認証

インデックス・ページヘ 「Windows Azureエンタープライズアプリケーション開発技法」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間