[運用]
Windowsで構築する、クラウド・サービスと社内システムのSSO環境
――クラウド時代のアイデンティティ管理とは?――

第2回 クラウド・コンピューティング時代の認証技術

1.アイデンティティ連携の要素技術

Microsoft MVP
Identity Lifecycle Manager
伊藤忠テクノソリューションズ株式会社
富士榮 尚寛
2010/08/25
Page1 Page2 Page3

クラウド・コンピューティングとアイデンティティ管理の概要
第2回
クラウド・コンピューティング時代の認証技術
クラウド・サービスと社内ADとのSSOを実現する(前)
クラウド・サービスと社内ADとのSSOを実現する(後)

 前回は、クラウド・コンピューティングとアイデンティティ管理の概要を解説した。その中で、クラウドうえのサービスをセキュアに使うためにアイデンティティ管理システムに求められる機能として、アイデンティティ連携(フェデレーション)という概念が注目されている、ということを述べた。

 今回は、まずフェデレーションを中心とした新しいセキュリティ・モデルと各技術要素について解説する。次に、それらのテクノロジをマイクロソフトがどのようなビジョンとアーキテクチャに基づいて、Active Directoryをはじめとした同社の製品群へ実装しているのかについて解説する。

アイデンティティ連携(フェデレーション)の要素技術

 アイデンティティ連携(フェデレーション)とはどのような概念なのだろうか?

フェデレーションの定義と標準規格
 フェデレーションの定義はもともと、「アイデンティティ・プロバイダ(認証する側)のアイデンティティ情報とサービス・プロバイダ(利用する側)のアイデンティティ情報のひも付けを行う」ことを指していた。しかし最近はその結果として、アイデンティティ情報の管理組織や体系の異なるシステム間でのシングル・サインオンができるため、広義でのシングル・サインオン(グローバル・シングル・サインオン)としてとらえられることが多いようだ。

 このフェデレーションを行ううえで代表的な仕組み/技術標準として、

  • SAML(Security Assertion Markup Language)
  • WS-Federation
  • OpenID*1

が挙げられる。ここでは企業規模で使われることを想定して設計されているSAMLを例に取り上げながら、フェデレーションの概念を説明したい。

*1 OpenIDについては、Security&Trustフォーラムの「OpenIDの仕様と技術」が参考になる。

 まず、理解しておくべきSAMLの重要な用語があるので、あらかじめ解説しておく。

用語 意味/役割 備考
サブジェクト サービスを利用する主体(ユーザーなど)  
アイデンティティ・プロバイダ(IdP) 認証を行い、アイデンティティ情報を提供する OpenIDではOpenID Provider(OP)と呼ばれる
サービス・プロバイダ(SP) IdPに認証を委託し、IdPによる認証情報を信頼してサブジェクトにサービスを提供する リライング・パーティ(RP)とも呼ばれる
Assertion(アサーション) IdPが本人性を証明するために発行する文書。属性やアクセス権情報などを含むこともある Assertionに含まれる属性情報をクレーム(要求)と呼ぶこともある
Assertion Consumer Service(ACS) SP内でAssertionの解釈、認可を行う  
フェデレーション(SAML)で使われる重要な用語
SAML以外の技術標準では、別の呼称が使われていることがある。

 では、早速SAMLを使ったフェデレーションの基本的な動作の流れを解説していく。なお、SAMLに関する詳細な仕様については標準化団体OASISのWebサイトで公開されているドキュメントを参照していただきたい。ここではSAMLの動作を理解することに主眼を置くため、詳細な仕様については触れない。

フェデレーションの基本的な動作
 フェデレーションにおけるユーザーと各プロバイダ間の実際のアクセスは下図のようになる。

フェデレーションにおけるユーザーと各プロバイダ間のアクセス
アイデンティティ・プロバイダとサービス・プロバイダ間で直接の通信が発生しないので、各プロバイダが異なるネットワーク(イントラネットとインターネットなど)に属していても認証連携が可能だ。また、ユーザーはサービス・プロバイダで直接認証を行わないので、パスワードなどの資格情報がサービス・プロバイダに渡らない。

 ユーザー(ブラウザ)と各プロバイダ間の通信はメッセージ形式で行われる。詳細なメッセージのやりとりは下記のシーケンスになる。

フェデレーションにおけるメッセージのシーケンス
認証情報(Assertion)の改ざん防止のため、デジタル署名をして正当性確認を行う。縦軸は時間軸を表しており、上から下へ向かって順にメッセージが送受信される。

 やりとりされるSAMLメッセージの内容はXMLで表される。アイデンティティ・プロバイダ(IdP)にAD FS 2.0、サービス・プロバイダ(SP)にGoogle Apps(Gmail)を使った例を次に記す。

<samlp:AuthnRequest
 xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"
 ID="xxx"
 Version="2.0"
 IssueInstant="YYYY-MM-DDTHH:MM:SSZ"
 ProtocolBinding=
  "urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
 ProviderName="google.com"
 IsPassive="false"
 AssertionConsumerServiceURL=
  "https://www.google.com/a/MYDOMAIN.COM/acs"
 >
 <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
  google.com/a/MYDOMAIN.COM
 </saml:Issuer>
 <samlp:NameIDPolicy
  AllowCreate="true"
  Format="urn:oasis:names:tc:SAML:1.1:nameid-format:unspecified" />
</samlp:AuthnRequest>
SPからIdPへの認証要求(AuthNRequest)
SPからIdPへ認証を求める際の送信内容の例。
Assertionの渡し方の定義(HTTP-POST)。
Assertionを渡す先(=Google AppsのAssertion Consumer Service)のURL。

<Assertion
 ID="zzz"
 IssueInstant="YYYY-MM-DDTHH:MM:SS.sssZ"
 Version="2.0"
 xmlns="urn:oasis:names:tc:SAML:2.0:assertion">
 <Issuer>http://IdP.myidp.local/adfs/services/trust</Issuer>
 <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
  ……(デジタル署名に関する情報)……
 </ds:Signature>
 <Subject>
  <NameID>testuser@mydomain.com</NameID> 
  <SubjectConfirmation
   Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
   <SubjectConfirmationData
    InResponseTo="zzz"
    NotOnOrAfter="2010-05-31T09:03:29.335Z"
    Recipient="https://www.google.com/a/MYDOMAIN.COM/acs" />
  </SubjectConfirmation>
 </Subject>
 ……
 <AuthnContextClassRef>
  urn:federation:authentication:windows
 </AuthnContextClassRef>
 ……
</Assertion>
IdPで認証された後のSPに渡される認証結果を含むAssertion
IdPでの認証後に、SPに送信されるAssertionの内容。Windowsでの認証の結果を含んでいる。
AD FS 2.0の認証サービスのエンドポイントURL。
サブジェクトに関する情報。NameID(識別子)としてGoogle Appsで使うメール・アドレス属性を渡している。
認証情報(Windows統合認証で認証したという情報)。

フェデレーションの利点
 上記のフェデレーションの動作におけるポイントの1つとしては、サービス・プロバイダ側で直接認証(IDやパスワードの入力)を行っていないので、サービス・プロバイダへのネットワーク経路上をパスワードが流れないという点がある。もう1つ、サービス・プロバイダが直接アイデンティティ・プロバイダと通信を行っていないので、アイデンティティ・プロバイダとサービス・プロバイダは別々のネットワークに存在してもよいという点も挙げられる。

 これらにより、イントラネット上のアイデンティティ・プロバイダを利用して、クラウド上のサービス・プロバイダへセキュアなアクセスを行うといったことが可能になる。また同時に、イントラネット上の社内アプリケーションにも同様の仕組みを導入することにより、イントラネットとクラウドにまたがったセキュアなシングル・サインオンという非常に利便性の高いシステムを構築できる。


 INDEX
  [運用]Windowsで構築する、クラウド・サービスと社内システムのSSO環境
  第1回 クラウド・コンピューティングとアイデンティティ管理の概要
    1.クラウド・コンピューティングの基礎と課題
    2.クラウドでのセキュリティ対策とアイデンティティ管理の役割
    3.クラウドがアイデンティティ管理システムにもたらす変化
 
  第2回 クラウド・コンピューティング時代の認証技術
  1.アイデンティティ連携(フェデレーション)の要素技術
    2.マイクロソフトのアイデンティティに関するビジョン
    3.アイデンティティ・メタシステムの実装
 
  第3回 クラウド・サービスと社内ADとのSSOを実現する(前)
    1.AD FS 2.0のセットアップ
    2.Google AppsとAD FS 2.0との連携
    3.Windows Live IDとAD FS 2.0との連携
    4.Salesforce.com CRMとAD FS 2.0との連携
 
  第4回 クラウド・サービスと社内ADとのSSOを実現する(後)
    1.Windows AzureとAD FS 2.0との連携(1)
    2.Windows AzureとAD FS 2.0との連携(2)

 Windows 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間