2009年 2月 28日 土曜日
OpenSSO を用いた仮想フェデレーション(Virtual Federation)
今回は、SDN(Sun Developper Network)の記事の中から、Enabling Virtual Federation With OpenSSO, Part 1: Introduction に掲載されている、OpenSSO を用いてレガシーなアプリケーションの連携を、シンプルにかつ安全に行う仮想フェデレーション (Virtual Federation)技術について、原文の一部を翻訳しつつ紹介していきたいと思います。
課題
ここ最近では、アイデンティティー管理やアクセス管理を行う上で、「フェデレーション(連携)」が非常に重要なキーワードとなっていて、以下にあげるようなものがビジネス上のゴールとなってきています。
- 複数のアプリケーションを外部のパートナー(のアプリケーションなど)と連携させる
- 外部パートナーとの間でのユーザーデータの同期をより精度良く行う
- セキュアな(技術的に安全な)状態を保ちながら連携を行い、ユーザーのプライバシーを保持する
- 連携で相互運用性の利益を得る
- 企業内のアイデンティティー情報と連携のインフラを集中管理する
多くの企業ではすでに、上記のゴールの達成を目指して、アイデンティティー管理や連携に関するプロジェクトに投資を行っていますが、技術的に解決しなければならない多くの課題に直面しています。
それらの課題はおおまかに次の2つに区分けすることができます。
- 連携をサポートしていない既存の(レガシー)アプリケーションに対してセキュアに連携を行う
企業でアイデンティティー情報の連携を行う上では、Web ポータル、e-コマースのサイト、人事システムなど、既存のアプリケーションを連携することが必須となります。
それらのアプリケーションが商用の既製製品であるか、社内で構築したアプリケーションであるかにかかわらず、連携のためにはいくつかのインテグレーション作業(SOA 用語で言うところの first-mile や last-mile)が必要となります。
さらに、インテグレーションはセキュアに行わなくてはなりません。どのような企業でも外部のパートナーへユーザーのアイデンティティー情報を提供する際にはセキュリティとデータのプライバシーの保持を最優先とします。
それ以外にもまだまだやらなくてはいけないことは色々とあります。ユーザーのアイデンティティー情報をリモートのパートナーとどうデータ交換したり、同期をとったり、どのようにしてデータを複製(レプリケーション)するか、などです。
- 外部パートナーに対して標準規格の連携で管理する
成熟度の高い組織では、相互運用性の利点について非常に敏感であり、次のようなものを採用する傾向にあります。
- オープンな標準規格の連携技術 -- これを用いることで、1 つのベンダーのロックイン(占拠)を避けることができる。
- スタンダードなインテグレーション技術 -- これを用いることで、連携を行おうと予定しているさまざまなアプリケーションに対して同じ技術を繰り返し適用することができる。
しかしながら、標準規格を用いてアプリケーションをパートナーと連携させようとすると、すぐに管理コストが法外なものとなってしまいます。
多くの企業にとっての重要な問題は、いかにして集中化させたアイデンティティー管理のインフラを再利用させるかなのです。
要するに、我々にとっては集中管理型の連携ソリューションが必要となるわけです。
仮想フェデレーション〜上記課題へのソリューション提起
上であげた課題に対するソリューションとして、ここで提起するのが
Sun OpenSSO Enterprise を用いた「仮想フェデレーション」技術です。
仮想フェデレーションでは、アイデンティティー情報(認証、プロファイル、トランザクション属性) を OpenSSO にセキュアにプッシュし、OpenSSO がそのデータを外部のパートナーへ標準の連携プロトコルを用いて伝搬することで、レガシーアプリケーションの連携を可能にします。
さらに、企業のアイデンティティーインフラ内で、OpenSSO を集中管理連携コンポーネントとし、その OpenSSO を用いて連携対象となるアプリケーションと外部のパートナーを一括管理することもできます。
利益
ハイレベルな観点では、仮想フェデレーションは非常にシンプルで、セキュアなメカニズムです。
SAML(Security Assertion Markup Language) 2.0 プロトコルを用いて、1 つのアプリケーションのアイデンティティー情報を別のドメインのアプリケーションへと伝送し、OpenSSO インスタンスを通してアプリケーションやサービスを外部パートナーと連携させることが容易にできます。
仮想フェデレーションでは、OpenSSO での認証処理と組み合わせることでアイデンティティー情報のセキュアな伝搬を実現します。アプリケーションに代わって、OpenSSO が、外部パートナーへのデータ転送の役目を担うわけです。
現在、仮想フェデレーションは以下のプロトコルに対してのみ動作しますが、将来的には他の連携プロトコルやプロファイルにも対応させる予定です。
- SAML 2.0 browser-based transient federation and federated SSO
- Browser-based HTTP GET and POST binding mechanisms of the SAML 2.0 protocol
仮想フェデレーションは次のような利益をもたらします:
- 各アプリケーションを緩い結びつき(loosely coupled)で連携するので、従来の事前に設定済みのローカルリポジトリからデータを抽出するという手法と比べると、アイデンティティー連携の拡張性があります。
- 1 つの OpenSSO インスタンスだけで複数のアプリケーションを連携することができます。
- ローレベルでは、OpenSSO インスタンスは SAML 2.0 標準準拠プロトコルゲートウェイの役割を担います。OpenSSO によりユーザー認証が可能となり、SAML 2.0 を用いて安全にアイデンティティー情報を伝搬させることができるわけです。
- 仮想フェデレーションは、わずかなクライアント API のみを要するライトウェイトな OpenSSO コンポーネントなので、元々フェデレーションに対応してないレガシーなアプリケーションやサービスを連携するためにインテグレーションに費やす労力を軽減させることができます。
仮想フェデレーション導入前後の比較
以下の表では、仮想フェデレーションを導入する前と後では、各課題への取り組みのシナリオがどう違ってくるかを示しています。
| 課題 |
仮想フェデレーション導入前 |
仮想フェデレーション導入後 |
| レガシーアプリケーションを安全に連携する |
トラディショナルな手法を用いて、複雑で密結合(tightly coupled)な連携を実現する
|
シンプルな連携とインテグレーション作業により、シンプルに、安全で疎結合な連携を実現する |
| 連携したアプリケーションと連携のためのインフラを集中管理する |
アプリケーションごとに 1 つずつ、アプリケーションの数だけの連携ソリューションを配備する |
連携管理のためにアイデンティティープロバイダ側とサービスプロバイダ側に OpenSSO インスタンスを 1 つずつ配備する |
| さまざまな企業内にある、ばらばらのデータリポジトリの間で、アイデンティティー情報(ユーザー属性、プロファイル、認可データ)の同期をとる
|
リポジトリ間でアイデンティティー情報をやりとりするためにプロビジョニングツールや同期ツールを使う
|
シンプルで安全で標準化されてる手法により、追加のアイデンティティー情報を使ってやりとりする。場合によっては、やりとりの際に使ったデータはアプリケーションから削除する
|
|
標準に準拠した相互運用性
|
専用の、拡張不可なテクノロジーとだけ動作可能な独自のソリューション
|
SAML 2.0 による
アイデンティティープロバイダとサービスプロバイダ間での標準準拠なインタラクション
|
例
Figure 1 に示すような仮想フェデレーションの例を考えてみます。
ある銀行の web アプリケーションは顧客のユーザー認証を行う役目を担っているアイデンティティープロバイダ(IdP)であり、外部のパートナーのアプリケーションと連携している。外部のパートナーのアプリケーションはサービスプロバイダ(SP)として小切手の処理を行い、適切な小切手画像をユーザーに提供する。
このシナリオの背後では次のようなプロセスが流れています。
- SAML 2.0 を用いて、IdP から SP へとトランザクションが伝搬される。トランザクションには、認証データ、アイデンティティーデータおよびトランザクションに関するデータが含まれている。
- まず最初にユーザーは、IdP に対してユーザー認証を行う。
- 認証されたユーザーが自分の所有する小切手の番号をクリックすると、銀行の IdP ポータルアプリケーション(以下、IdP)は小切手処理を行う SP アプリケーション(以下、SP)に対して小切手画像をリクエストする。
- ユーザーを識別・特定するために、IdP はアカウント番号 (ユーザー属性) と小切手の番号 (トランザクション属性) を SP に対してプッシュする。
- SP はユーザーの認証結果を確認した上で、IdP からの SAML 表明に含まれる属性(ペイロード)を受け取り、その表明の内容を全面的に信頼した上で、ユーザーに対して小切手画像データを送る。
仮想フェデレーション導入以前は、アカウントと小切手情報を IdP から SP へ渡すのには問題がありました。異なる企業に存在するリポジトリ間でのユーザーデータのプロビジョニングや同期の際に起こる問題に対処するケースが多々ありました。仮想フェデレーションの導入により、データ交換はシンプルで安全で標準化されます。
SAE(Secure Attribute Exchange)
仮想フェデレーションには SAE(Secure Attribute Exchange) と呼ばれるコンポーネントが含まれていて、次に示すように、SAE と OpenSSO によって first-mile と last-mile のインテグレーションをセキュアに行います。
- セキュアな first-mile インテグレーション (IdP 側) — SAE は、アイデンティティー情報を連携対象となるアプリケーションから IdP の OpenSSO インスタンスへと注入します。そして、アイデンティティー情報は SAML 2.0 表明の属性ステートメントの中に埋め込まれて、IdP から SP へと伝達されます。
- セキュアな last-mile インテグレーション (SP 側) - SAE のセキュリティメカニズムにより、SP の OpenSSO から連携対象となるアプリーケーションへデータを安全に転送します。どのような場合でも、SAE は共通鍵暗号法または公開鍵暗号法によりセキュリティを保証します。
このデータの流れを図解で示したのが Figure 2 になります。
ここまで見てきたように、OpenSSO のシングルサインオン、SAML 2.0、SAE を組み合わせることで、レガシーアプリケーションの連携をシンプルに、安全に実現できます。
Enabling Virtual Federation With OpenSSO, Part 2: A Tutorial では、OpenSSO 付属のサンプルプログラムを例に、実際にどのように設定するかの手順が説明されてるので、こちらの記事についても次回紹介したいと思います。
Posted by hanaki
( 2月 28日 2009年, 12:14:23 午後 JST )
Permalink