Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Cloud で Active Directory を活用するには

5,178 views

Published on

2010年9月11日 技術ひろば

Published in: Technology
  • Be the first to comment

Cloud で Active Directory を活用するには

  1. 1. Cloudde Active Directory~シングルサインオンを実現するための処方箋~<br />マイクロソフト株式会社<br />エバンジェリスト<br />安納 順一(あんのう じゅんいち)<br />http://blogs.technet.com/junichia/<br />
  2. 2. 本日のテーマ<br />アプリケーションがクラウドにスケールアウトしたとき、<br />「認証」と「承認」の仕組みはどう変わるのか?<br />既存の Active Directory は生かせるのか?<br />夢のシングルサインオンは可能なのか?<br />についてお話しします。<br />
  3. 3. ID を使用する環境<br />アプリケーション在るところ「ID」在り<br />企業全体<br />クラウド<br />企業:クラウド<br />企業間<br />自宅 <br />企業:クラウド<br />企業全体<br />組織内<br />組織間<br />組織内<br />
  4. 4. 予測される ID 管理の問題点<br />見えない利用者の ID 管理/認証/承認<br />異なる認証方式の相互運用<br />ディレクトリサービスの設置が困難<br />クレームベース セキュリティ<br />フェデレーション セキュリティ モデル<br />
  5. 5. (例) 入国審査<br />信頼<br />米国政府<br />日本国政府<br />本人<br /><ul><li>顔
  6. 6. 指紋</li></ul>発行<br />信頼<br />入国<br />出国<br />空港<br />健保番号<br />/免許証番号<br />/住民票<br />ビザ<br /><ul><li>滞在可能期間</li></ul>入国申請書<br /><ul><li>滞在期間
  7. 7. 滞在先</li></ul>パスポート<br /><ul><li>発行国
  8. 8. 氏名
  9. 9. 有効期限
  10. 10. 旅券番号
  11. 11. 写真
  12. 12. 出国印</li></ul>パスポート<br />・<br />・<br />
  13. 13. フェデレーション セキュリティ モデル<br />クレーム<br />プロバイダー<br />リライング <br />パーティ<br />信頼<br />米国政府<br />日本国政府<br />オーソリティ<br />セキュリティ トークン<br />本人<br /><ul><li>顔
  14. 14. 指紋</li></ul>発行<br />信頼<br />サブジェクト<br />クレーム<br />クレーム<br />入国<br />出国<br />リソース<br />空港<br />健保番号<br />/免許証番号<br />/住民票<br />ビザ<br /><ul><li>滞在期間</li></ul>クレーム<br />資格情報<br />入国申請書<br /><ul><li>滞在期間
  15. 15. 滞在先</li></ul>クレーム<br />パスポート<br /><ul><li>発行国
  16. 16. 氏名
  17. 17. 有効期限
  18. 18. 旅券番号
  19. 19. 写真
  20. 20. 出国印</li></ul>クレーム<br />クレーム<br />クレーム<br />パスポート<br />・<br />・<br />クレーム<br />署名<br />クレーム<br />クレーム<br />クレーム<br />クレーム<br />
  21. 21. クレーム(主張)とは<br />アプリケーションに渡すユーザー自身の属性<br />承認に使用される<br />ユーザー ID<br />年齢<br />パスワード<br />住所<br />資格情報(認証結果)<br />性別<br />メール アドレス<br />言語<br />役職<br />年収<br />所属部門<br />所属企業<br />
  22. 22. セキュリティ トークン<br />パッケージ化されたクレーム<br />発行者の署名によって信頼性を担保<br />STS ( Security Token Service ) が生成する<br />セキュリティトークン<br />クレーム 1<br />クレーム 2<br />クレーム n<br />クレームの<br />発行元による<br />署名<br />
  23. 23. IDM と連携の限界<br />IDM:Identity Management<br /><ul><li>認証プロトコルの違い
  24. 24. Identity 管理ポリシーの違い
  25. 25. アプリケーション側の対応
  26. 26. Single Sign-On/Off への適用</li></ul>Active <br />Directory<br />アプリ1<br />LA空港<br />日本国<br />プロトコル<br />情報の整形<br />情報の解釈<br />情報<br />プロトコル<br />情報<br />情報<br />アプリ2<br />OpenLDAP<br />中国<br />ヒースロー<br />プロトコル<br />情報の整形<br />プロトコル<br />情報の解釈<br />情報<br />情報<br />情報<br />
  27. 27. 解決策<br /><ul><li>フェデレーション信頼による素結合
  28. 28. STS によりアプリケーション側の処理を削減
  29. 29. 情報はセキュリティトークンに格納して受け渡し</li></ul>米政府<br />STS<br />STS<br />Active <br />Directory<br />アプリ1<br />日本国<br />LA空港<br />プロトコル<br />情報の整形<br />情報の解釈<br />プロトコル<br />情報<br />プロトコル<br />フェデレーション信頼<br />情報<br />情報<br />イギリス政府<br />STS<br />アプリ2<br />OpenLDAP<br />STS<br />中国<br />ヒースロー<br />プロトコル<br />プロトコル<br />プロトコル<br />情報の整形<br />情報の解釈<br />情報<br />情報<br />情報<br />
  30. 30. フェデレーションセキュリティモデル<br /><ul><li>AD FS 2.0 がユーザーのロールを管理
  31. 31. アプリケーションは受け取ったロールを解釈するだけ</li></ul>Active Directory Federation Service<br />Active Directory Federation Service2.0<br />STS<br />STS<br />Active <br />Directory<br />アプリ1<br />プロトコル<br />情報の整形<br />情報の解釈<br />プロトコル<br />情報<br />プロトコル<br />信頼<br />情報<br />情報<br />Windows Identity Foundation<br />
  32. 32. 認証/ロール管理からの分離<br />アプリケーション<br />これまでの方式<br />認証<br />ロール<br />サービス<br />アプリケーション<br />認証<br />ロール<br />サービス<br />認証<br />セキュリティ<br />トークン<br />アプリケーション<br />クレームに対応<br />認証<br />クレーム<br />クレーム解釈<br />サービス<br />クレーム<br />認証<br />
  33. 33. SSO を実現するための構成要素<br />AD DS<br />認証サーバー<br /><ul><li>ユーザーを認証し、セキュリティトークンの発行を許可する</li></ul>AD FS 2.0<br />STS( セキュリティトークンサービス )<br /><ul><li>AD認証されたユーザーに対してセキュリティトークンを発行する
  34. 34. アプリケーションにセキュリティトークンを渡す</li></ul>クレームストア<br /><ul><li>セキュリティトークンに組み込むユーザー属性が格納されている</li></ul>AD DS/ldap<br />SQL Server<br />WIF<br />WS-Federation/WS-Trust/SAML 2.0 に対応したアプリケーション<br />※WIF は SAML2.0 に対応していない<br />
  35. 35. 基本的な構成<br /><ul><li>それぞれの企業にSTSを設置
  36. 36. STS 間でフェデレーション信頼を構築</li></ul>企業A<br />企業B<br />RP/SP<br />IdP/CP<br />信頼<br />④アクセス<br />AD DS<br />①認証<br />WIF<br />③Token発行<br />AD FS 2.0<br />AD FS 2.0<br />Application<br />②Token発行<br />クレームストア<br />IdP:Identity Provider<br />CP:Claims Provider<br />RP : Relying Party<br />SP : Service Provider<br />
  37. 37. 基本的な構成~簡易版<br /><ul><li>同一企業内であれば STS は1台で構築可能</li></ul>企業A<br />RP/SP<br />IdP/CP<br />信頼<br />③アクセス<br />AD DS<br />①認証<br />WIF<br />AD FS 2.0<br />Application<br />②Token発行<br />クレームストア<br />
  38. 38. アプリケーションがクラウドだったら…<br /><ul><li>クラウドアプリでも考え方は変わらない</li></ul>企業A<br />RP/SP<br />IdP/CP<br />信頼<br />③アクセス<br />AD DS<br />①認証<br />WIF<br />Application<br />AD FS 2.0<br />②Token発行<br />クレームストア<br />
  39. 39. WIF アプリケーションとSSOの仕組み<br />クラウド上に Identity 情報を用意せずに、クレームによるアクセス承認が可能<br />7<br />WIF<br />信頼<br />クラウド<br />オンプレミス<br />AD DS<br />AD FS2.0<br />3<br />8<br />5<br />4<br />6<br />2<br />1<br />WIF:Windows Identity Foundation<br />
  40. 40. WS-Federation (Passive SSO) の流れ<br />オンプレミスの AD DS にログオン依頼<br />AD DS からクレデンシャルが送信されクライアントに保存<br />------------<br />Windows Azure 上のアプリケーションにアクセス<br />クレーム ポリシーをアプリケーションから受け取り、STS(AD FS 2.0) にリダイレクト<br />属性ストアである AD DS からクレームを収集<br />集めたクレームに署名をしてセキュリティトークンを生成し、Windows Azure アプリケーションに送信<br />アプリケーションはセキュリティトークンを受け取り、Windows Identity Foundation(WIF) を使用してクレームを取り出し、評価する<br />画面がブラウザーに送られる<br />
  41. 41. WIF アプリケーションの構造<br />WIF (Windows Identity Foundation) を使用してセキュリティー トークンからクレームを取り出す<br />WIF は WS-Federation/WS-Trustをサポート<br />ロールは既にトークンにセットされているので評価するだけでOK<br />AD FS 2.0<br />ASP.NET<br />クレームの評価<br />トークン<br />ロール判定<br />Windows Identity Foundation<br />各種処理<br />.NET Framework 4<br />ブラウザー<br />
  42. 42. 「信頼」とは?<br />物理的には<br />メタデータ/証明書/暗号化キーを事前に交換<br />お互いの「すり替わり」を防止<br />データの横取りを防止<br />RP/SP<br />IdP/CP<br />信頼<br />Metadata<br />Metadata<br />URI<br />URI<br />精神的には<br />IdP 側 の Identity/Role 管理責任を信頼<br />RP 側の クレーム管理責任を信頼<br />
  43. 43. クレームの構造と識別方法<br />Microsoft.IdentityModel.Claims<br />http://msdn.microsoft.com/ja-jp/library/microsoft.identitymodel.claims.aspx<br />これらの値で<br />クレームを識別する<br />Claims<br />ClaimType<br />Claim<br />Value<br />Claim<br />Claim<br />Issuer<br />Claim<br />OriginalIssuer<br />ValueType<br />subject<br />
  44. 44. アプリケーション作成時の留意点<br />空の属性はクレームに含まれない<br />ゆえにトークンにも含まれない<br />安易に「既定値」を使用するととんでもないことに!<br />氏名 = 安納 順一<br />IdP<br />会社名 = マイクロソフト株式会社<br />役職= (空)<br />RP<br />氏名 = 安納 順一<br />会社名 = マイクロソフト株式会社<br />
  45. 45. サポートされているプロトコルとトークン形式<br />AD FS 2.0 <br />WIF<br />パッシブ SAML WebSSO<br />SAML 2.0 トークン<br />パッシブ WS-Federation<br />SAML1.1 トークン<br />アクティブ WS-Trust (CardSpace 対応含む)<br />SAML 2.0トークン<br />SAML 1.1 トークン<br />
  46. 46. AD FS 2.0 ~クレーム パイプライン<br />証明書利用者<br />(RP)<br />クレームストア<br />トークン<br />② 承認する<br />③ 発行する<br />① 受付ける<br />発行<br />変換<br />規則<br />output<br />受け<br />付け<br />変換<br />規則<br />input<br />発行<br />承認<br />規則<br />input<br />output<br />output<br />input<br />OK/<br />NG<br />switch<br />要求プロバイダー信頼<br />(Claims Provider Trusts)<br />証明書利用者信頼 (Relying Party)<br />要求規則 (Claim Rule)<br />
  47. 47. 要求規則 の処理プロセス<br />クレーム<br />要求規則セット<br />要求規則1<br />発行<br />条件<br />Input Claim Set<br />要求規則2<br />OutputClaim Set<br />要求規則 n<br />テンプレートが用意されている<br />トークン<br />
  48. 48. カスタム規則<br />テンプレートに用意されていないルールは自作することができる<br />「要求規則言語」を使用する<br />条件部<br />発行部<br />条件文 1<br />True<br />=><br />発行文<br />条件文 2<br />&&<br />False<br />&&<br />入力方向のクレーム/属性をチェックし、すべての条件が True の場合に「発行部」が実行される。条件部が無い場合には無条件で True とみなされる。<br />条件部<br />オプション<br />発行部<br />発行するトークンタイプと、そこに格納する属性/値を指定する。<br />必須<br />
  49. 49. カスタム規則の書式 (例)<br /><変数>:[ <クレームの属性> == <値> ] <br /> => issue ( <発行書式>);<br />パス スルー (入力クレームをそのまま出力クレームに転送)<br />c:[type == “http://schemas.xx.org/claims/Email”] <br /> => issue (claim = c) ;<br />ユーザー名で AD DS を検索して会社名を取り出す<br />c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]<br /> => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"), query = ";company;{0}", <br />param= c.Value);<br />
  50. 50. ここで1つの疑問が…<br />クラウド上のアプリケーションが<br />        社外のものだったら????<br />
  51. 51. クラウドアプリが社外だったら…?<br /><ul><li>企業B社内のSTSとフェデレーション信頼を構築</li></ul>企業B<br />企業A<br />RP/SP<br />IdP/CP<br />WIF<br />Application<br />信頼<br />AD DS<br />信頼<br />AD FS 2.0<br />AD FS 2.0<br />クレームストア<br />
  52. 52. アプリケーションが RESTfulならば<br />こんな方法もあります<br />
  53. 53. クラウドアプリが社外だったら…?<br /><ul><li>クラウド上の STS を使用する</li></ul>企業B<br />企業A<br />RP/SP<br />IdP/CP<br />STS<br />REST<br />Application<br />信頼<br />AD DS<br />AD FS 2.0<br />AD FS 2.0<br />クレームストア<br />
  54. 54. Windows Azure platformAppFabricAccess ControlServiceV1<br />RESTfulサービスに特化したシンプルな RP/SP 用STS<br />プロトコル:OAuth WRAP<br />トークン:SAML 1.1,SAML 2.0,SWT <br />platform <br />Relying Party<br />AppFabric<br />Access Control Service<br />信頼<br />STS<br />REST<br />信頼<br />③ トークン<br />②トークン<br />Service Bus<br />① 認証<br />④ 結果<br />
  55. 55. AppFabric ACSV1 の想定シナリオ<br />RESTful なサービスへのアクセス制御を行う<br />企業B<br />道路の混雑状況を提供するサービス<br />REST API<br />Request<br />Response<br />Request<br />Response<br />企業A<br />企業C<br />Application<br />Application<br />
  56. 56. ACS を 企業内 AD との SSO に使用する<br />ACS では Passive SSO がサポートされていないことに注意<br />9<br />信頼<br />ACS<br />WRAP<br />REST<br />Service<br />5<br />WS-Trust<br />信頼<br />クラウド<br />信頼<br />8<br />オンプレミス<br />6<br />4<br />10<br />AD DS<br />AD FS2.0<br />1<br />7<br />2<br />3<br />クライアント<br />アプリケーション<br />
  57. 57. 処理の流れ<br />クライアント アプリケーションが AD FS 2.0 にトークン発行を依頼<br />AD DS からクレームを収集<br />AD FS 2.0 から SAML 1.1 トークン発行<br />トークンを ACS に送信<br />ACS は受け取った SAML 1.1 トークンをルールに沿って検証<br />SWT を生成し、クライアントに発行<br />クライアント アプリケーションは受け取った SWT を分解し、正しい ACS から発行されたものか等を検証<br />問題なければ HTTPAuthorization ヘッダーに SWT を埋め込み、REST サービスにPOST<br />REST サービスは受け取った SWT を分解してロールを検証<br />ロールが正しければサービスを実行<br />
  58. 58. まとめ<br />
  59. 59. 3 種類の STS(Security Token Service)<br />STS により「使用目的」と「出来ること」が異なる<br />【MFG】<br />【ACSV1】<br />【AD FS 2.0】<br />Microsoft Online Services 用に用意された STS<br />クラウド上に<br />用意された STS<br />高機能な STS<br />オンプレミスに配備<br />MFG<br />ACS<br />AD FS 2.0<br />AD FS 2.0<br />AD FS 2.0<br />AD FS2.0<br />any<br />IdPs<br />any<br />IdPs<br />MFG:Microsoft Federation Gateway<br />ACS : Windows Azure platform AppFabricAccess Control Service<br />信頼<br />
  60. 60. STS (Security Token Service) の役割<br />セキュリティトークンの発行と管理<br />クラウド アプリケーションとオンプレミスの架け橋<br />アクセス<br />信頼<br />信頼<br />ACS<br />アクセス<br />STS<br />信頼<br />トークン<br />信頼<br />STS<br />トークン<br />AD DS<br />AD FS<br />
  61. 61. AD FS 2.0 と ACS V1 の違い<br />ACS V1は AD FS 2.0 の替わりにはなれないことに注意<br />IdPとの連携が必要<br />
  62. 62. シナリオによって使用するSTSが異なる<br />IdP/CP<br />RP/SP<br />REST<br />クラウド<br />ACS V1<br />WIF<br />AD FS 2.0<br />REST<br />オンプレミス<br />WIF<br />AD FS 2.0<br />AD DS<br />
  63. 63. ACS V2 はAD FS 2.0 以外の IdP にも対応予定<br />ACS V2 が万能になるわけではありません!<br />IdP/CP<br />RP/SP<br />REST<br />クラウド<br />ACS V2<br />WIF<br />AD FS 2.0<br />REST<br />オンプレミス<br />WIF<br />AD FS 2.0<br />AD DS<br />
  64. 64. © 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.<br />The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.<br />

×