Hanaki's weblog

« 前の日(Feb月 26日, 2009年) | 日付別メイン | 次の日(Feb月 28日, 2009年) »

20090228 2009年 2月 28日 土曜日

OpenSSO を用いた仮想フェデレーション(Virtual Federation)

今回は、SDN(Sun Developper Network)の記事の中から、Enabling Virtual Federation With OpenSSO, Part 1: Introduction に掲載されている、OpenSSO を用いてレガシーなアプリケーションの連携を、シンプルにかつ安全に行う仮想フェデレーション (Virtual Federation)技術について、原文の一部を翻訳しつつ紹介していきたいと思います。

課題


ここ最近では、アイデンティティー管理やアクセス管理を行う上で、「フェデレーション(連携)」が非常に重要なキーワードとなっていて、以下にあげるようなものがビジネス上のゴールとなってきています。


多くの企業ではすでに、上記のゴールの達成を目指して、アイデンティティー管理や連携に関するプロジェクトに投資を行っていますが、技術的に解決しなければならない多くの課題に直面しています。
それらの課題はおおまかに次の2つに区分けすることができます。

仮想フェデレーション〜上記課題へのソリューション提起

上であげた課題に対するソリューションとして、ここで提起するのが Sun OpenSSO Enterprise を用いた「仮想フェデレーション」技術です。

仮想フェデレーションでは、アイデンティティー情報(認証、プロファイル、トランザクション属性) を OpenSSO にセキュアにプッシュし、OpenSSO がそのデータを外部のパートナーへ標準の連携プロトコルを用いて伝搬することで、レガシーアプリケーションの連携を可能にします。

さらに、企業のアイデンティティーインフラ内で、OpenSSO を集中管理連携コンポーネントとし、その OpenSSO を用いて連携対象となるアプリケーションと外部のパートナーを一括管理することもできます。

利益


ハイレベルな観点では、仮想フェデレーションは非常にシンプルで、セキュアなメカニズムです。 SAML(Security Assertion Markup Language) 2.0 プロトコルを用いて、1 つのアプリケーションのアイデンティティー情報を別のドメインのアプリケーションへと伝送し、OpenSSO インスタンスを通してアプリケーションやサービスを外部パートナーと連携させることが容易にできます。
仮想フェデレーションでは、OpenSSO での認証処理と組み合わせることでアイデンティティー情報のセキュアな伝搬を実現します。アプリケーションに代わって、OpenSSO が、外部パートナーへのデータ転送の役目を担うわけです。
現在、仮想フェデレーションは以下のプロトコルに対してのみ動作しますが、将来的には他の連携プロトコルやプロファイルにも対応させる予定です。

仮想フェデレーションは次のような利益をもたらします:

仮想フェデレーション導入前後の比較

以下の表では、仮想フェデレーションを導入する前と後では、各課題への取り組みのシナリオがどう違ってくるかを示しています。
課題 仮想フェデレーション導入前 仮想フェデレーション導入後
レガシーアプリケーションを安全に連携する トラディショナルな手法を用いて、複雑で密結合(tightly coupled)な連携を実現する シンプルな連携とインテグレーション作業により、シンプルに、安全で疎結合な連携を実現する
連携したアプリケーションと連携のためのインフラを集中管理する アプリケーションごとに 1 つずつ、アプリケーションの数だけの連携ソリューションを配備する 連携管理のためにアイデンティティープロバイダ側とサービスプロバイダ側に OpenSSO インスタンスを 1 つずつ配備する
さまざまな企業内にある、ばらばらのデータリポジトリの間で、アイデンティティー情報(ユーザー属性、プロファイル、認可データ)の同期をとる リポジトリ間でアイデンティティー情報をやりとりするためにプロビジョニングツールや同期ツールを使う シンプルで安全で標準化されてる手法により、追加のアイデンティティー情報を使ってやりとりする。場合によっては、やりとりの際に使ったデータはアプリケーションから削除する
標準に準拠した相互運用性 専用の、拡張不可なテクノロジーとだけ動作可能な独自のソリューション SAML 2.0 による アイデンティティープロバイダとサービスプロバイダ間での標準準拠なインタラクション


Figure 1 に示すような仮想フェデレーションの例を考えてみます。



ある銀行の web アプリケーションは顧客のユーザー認証を行う役目を担っているアイデンティティープロバイダ(IdP)であり、外部のパートナーのアプリケーションと連携している。外部のパートナーのアプリケーションはサービスプロバイダ(SP)として小切手の処理を行い、適切な小切手画像をユーザーに提供する。

このシナリオの背後では次のようなプロセスが流れています。
  1. SAML 2.0 を用いて、IdP から SP へとトランザクションが伝搬される。トランザクションには、認証データ、アイデンティティーデータおよびトランザクションに関するデータが含まれている。
  2. まず最初にユーザーは、IdP に対してユーザー認証を行う。
  3. 認証されたユーザーが自分の所有する小切手の番号をクリックすると、銀行の IdP ポータルアプリケーション(以下、IdP)は小切手処理を行う SP アプリケーション(以下、SP)に対して小切手画像をリクエストする。
  4. ユーザーを識別・特定するために、IdP はアカウント番号 (ユーザー属性) と小切手の番号 (トランザクション属性) を SP に対してプッシュする。
  5. SP はユーザーの認証結果を確認した上で、IdP からの SAML 表明に含まれる属性(ペイロード)を受け取り、その表明の内容を全面的に信頼した上で、ユーザーに対して小切手画像データを送る。

仮想フェデレーション導入以前は、アカウントと小切手情報を IdP から SP へ渡すのには問題がありました。異なる企業に存在するリポジトリ間でのユーザーデータのプロビジョニングや同期の際に起こる問題に対処するケースが多々ありました。仮想フェデレーションの導入により、データ交換はシンプルで安全で標準化されます。

SAE(Secure Attribute Exchange)


仮想フェデレーションには SAE(Secure Attribute Exchange) と呼ばれるコンポーネントが含まれていて、次に示すように、SAE と OpenSSO によって first-mile と last-mile のインテグレーションをセキュアに行います。