2010年10月28日木曜日

IDaaSに関して考えてみる

たまには製品の実装の話以外も、ということでIDaaS(Identity as a Service)について考えてみます。

クラウドの潮流の中でXaaSというキーワードで「何でもサービス化」というのが流行って?いますが、アイデンティティをサービス提供する形態として「IDaaS」というのもしばしば耳にする様になってきました。

■IDaaSとは何か?
IDaaSとは平たく言うとアイデンティティプロバイダ機能のクラウドサービスなので、
・セキュリティトークンサービス(STS)
 認証機能
 セキュリティトークンの発行、変換機能
・アイデンティティストア
 アイデンティティ情報の保持
 ライフサイクル管理機能(セルフサービスポータル等)
といった機能が提供されることになります。

また、場合によっては他のクラウドサービスへのプロビジョニングを行ったりすることもあり得ると考えられます。

■IDaaSのメリット
IDaaSのメリットとして主に以下の事項が挙げられます。
サービスプロバイダにとって
・認証機能やアイデンティティ管理機を自前で開発しなくてよい
・アイデンティティ情報などのセンシティブな情報を自前で保持しなくてよい

利用者/利用企業にとって
・(サービスが対応していれば)複数のサービスで横断的に利用できる認証基盤となり、シングルサインオンが出来る
・複数のサービスと個別に信頼関係を結ぶ必要がなくなる(フェデレーション・ゲートウェイとしての利用)
・STSのトークン変換機能を使うことで自前(オンプレミス)のIdPを使うことができる(クラウド上にアイデンティティ情報をおく必要が必ずしもなくなる)
















もちろん使い方や利用するサービスによってすべてのメリットを享受できるわけではありませんが、特にフェデレーション・ゲートウェイとしての機能はクラウド・オンプレミスのアイデンティティ連携を行う上では非常に有用な機能となりえると思われます。


■現在のプレイヤー
現在のプレイヤーとしては、GoogleやYahoo!、Windows LiveIDなどOpenIDプロバイダとしてサービスを提供しているものや、FacebookやTwitterなどOAuth対応という形で一部の認証や認可の機能をサービスプロバイダに提供しているものなどが挙げられます。
ただ、先述のクラウド・オンプレミス連携を行う上で重要となるフェデレーション・ゲートウェイ機能を提供しているサービスはまだ少なく、PingIdentityや対応するサービスが限定的ですがマイクロソフト(Microsoft Federation Gateway)くらいがメジャーどころだと思います。


■IDaaSを立ち上げるには?
これはIDaaSに限りませんがGoogleやAmazonの様に自前でサービスを提供するためにシステムを開発するプロバイダやマイクロソフトの様に元々製品を持っていたものをベースにサービスを提供するプロバイダと違って、OSS以外の既製品を組み合わせてサービス化していくのは採算的に中々厳しいと思われます。
(AmazonやGoogleの実装を元としてEucalyptusやHadoopが出てきていますが、あくまでリファレンス実装ですし、AmazonやGoogle自身が販売してるモノではありません。仮に彼らが自身のサービスに使っているツールを製品として販売したら相当な価格になるんじゃないかと思います)

例えばIDaaSを立ち上げるのに、市販のシングルサインオン系の製品を使ってしまうと、それらの殆どはユーザ数でライセンス課金なので、1ユーザあたり数千円~数万円の値付けをしないと採算が合わないでしょうが、ユーザが単なる認証機能にそれだけの金額を払うことはないでしょう。(Novell製品で米VerizonなどはIDaaSをやっているといいますから、それなりにベンダの値引きがあるんでしょうが・・・)

となると、自前でIdPを実装するかWSO2OpenSSO/OpenAMなどのOSSをベースとして独自のサービスを実装するという覚悟が必要になるのかも知れません。

また、価格面以外にも認証や認可などセキュリティの根幹を担う機能を外部に委託する事になるので、ユーザからも提携するサービスプロバイダからも信頼される必要があります。ユーザに対してはOpenID CXやID-WSFの様に利用者自身の責任において属性の公開範囲等をコントロールする様な仕組みもありますし、この辺りになるともっと公的な機関との連携が必要になると思いますがKantara/LibertyのIdentity Assurance Framework(IAF)やGSA(米国調達庁)とICAMの例の様に第3者による認定制度の様な仕組みも必要になってくるでしょう。













IAFの認定アセスメントのイメージ


















GSA/ICAM/OIXによる認定のイメージ


このように色々とハードルが高い世界ではありますが、出来れば日本でもPingIdentityの様にIDaaSプロバイダが出てくると面白いと思っています。

2010年10月20日水曜日

AD FS2.0 のデモをする時のひと工夫

AD FS2.0(Active Directory Federation Services 2.0)はクラウド連携というビッグキーワードも手伝ってかなり注目されているのか、最近は色々なところでセミナーやデモを見かけるようになってきました。

ただ、シングルサインオンのデモって非常に地味なんですよね。
ターゲットのアプリケーションにアクセスして、一瞬AD FS2.0へリダイレクトされて統合Windows認証でそのまま元のページへトークンをPOST、ログイン完了という流れにどうしてもなってしまうので、本当にAD FS2.0を使っているかどうかが全然見ている人には伝わりません。

私もデモをする時に同じ悩み?を持ち、ブラウザの統合Windows認証をオフにしたり、インターネットオプションの「ローカル イントラネット」からAD FS2.0のサーバやドメインを削除したりしましたが、ベーシック認証が走ってしまったりしてやはりあんまりうまくありませんでした。
とにかくデモ映えするには明示的にAD FS2.0のログインページにIDとパスワードを入力する、というステップがあった方が良いと思ったので、デフォルトでフォーム認証を使うようにしてみました。

手順は若干強引ですが、AD FS2.0も単なるWIF(Windows Identity Foundation)を使ったASP.NETアプリケーションである、という点に着目してログインページのweb.configファイルを直接編集します。

デフォルトインストールだと「C:\inetpub\adfs\ls\web.config」が編集対象となります。

編集箇所は59行目から始まるmicrosoft.identityServer.webセクションのlocalAuthenticationTypesです。
デフォルトだと

 <add name="Integrated" page="auth/integrated/" />
 <add name="Forms" page="FormsSignIn.aspx" />

という順番でまずIntegratedつまり統合Windows認証が使われるようになっていますが、これを

 <add name="Forms" page="FormsSignIn.aspx" />
 <add name="Integrated" page="auth/integrated/" />

という形でFormsつまりフォーム認証を優先する形に行を入れ替えてみます。

■編集の結果
 <microsoft.identityServer.web>
  <localAuthenticationTypes>
   <add name="Forms" page="FormsSignIn.aspx" />
   <add name="Integrated" page="auth/integrated/" />
   <add name="TlsClient" page="auth/sslclient/" />
   <add name="Basic" page="auth/basic/" />
  </localAuthenticationTypes>

これでファイルを上書き保存するとフォーム認証が優先されるのでAD FS2.0の認証ページにリダイレクトされた際にIDとパスワードを入力するフォーム認証画面が表示されます。
※web.configのバックアップは忘れずに!
















これで少しはイメージのしやすいデモが出来ると思います。

2010年10月1日金曜日

FIM2010 トラブルシューティング/トレースの有効化

Anthony HoさんのBlogでFIM Service / FIM Portal / Password Resetのトラブルシュートに関する記事がアップされていたので紹介したいと思います。
http://blogs.technet.com/b/aho/archive/2010/09/29/troubleshooting-fimservice-fimportal-password-reset-client.aspx

かなり詳細にトレースが出来るので、トラブルが発生した際はこの方法でトレースしてみるのもありかもしれません。

方法は簡単で、各サービスの構成ファイルの中のコメントアウトされている部分を有効にしてサービスを再起動するだけです。

***注意点***
・トレースを出力する設定を行うと動作がとっても重たくなります。
・一部構成ファイルを手動で書き換えるので、環境のバックアップを取得しておくことをおすすめします。
・XMLのタグを表記上全角にしていますが、実際は半角です。



では、FIM Service / Portalを例に実際にやってみます。

編集の対象となるファイルはデフォルトインストールパスでは、
 C:\Program Files\Microsoft Forefront Identity Manager\2010\Service
以下の
 Microsoft.ResourceManagement.Service.exe.xml
です。











・まずはログ出力レベルを変更します。

41行目のswitchValueをErrorからVerboseに変更します。
<source name="Microsoft.ResourceManagement" switchvalue="Error">

<source name="Microsoft.ResourceManagement" switchvalue="Verbose">

・svclogファイルにdiagメッセージを出力する設定を行います。

52行目~56行目のコメントアウトを外します。
<add name="DiagnosticListener">
 <filter type="">
</add>

・diagリスナーがファイルへ情報を出力する設定を行います。

64行目~69行目のコメントアウトを外します。
<add name="DiagnosticListener" type="System.Diagnostics.XmlWriterTraceListener, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" initializedata="fimDiagnostics.svclog" traceoutputoptions="LogicalOperationStack, DateTime, Timestamp, ProcessId, ThreadId, Callstack">
 <filter type="">
</add>


・ログの自動フラッシュを設定します。
 ※必須ではありません。この設定を行うとリアルタイムにログファイルに出力されますがパフォーマンスが低下します。

77行目のコメントアウトを外します。
<trace autoflush="true">


構成ファイルを保存し、サービス(Forefront Identity Manager Service)を再起動すれば先ほどのフォルダの中に
 fimDiagnostics.svclog
というファイルが出来ます。











しばらくポータルの操作などを行うと、ファイルの中にプロセスのトレース等の情報が書き込まれます。















先に紹介したAnthony Hoさんのblogエントリには他にもPassword Resetのトレース方法などの情報も載っていますので、トラブルの時は参照してください。