42
Cloud de Active Directory シングルサインオンを実現するための処方箋~ マイクロソフト株式会社 エバンジェリスト 安納 順一(あんのう じゅんいち) http://blogs.technet.com/junichia/

Cloud で Active Directory を活用するには

Embed Size (px)

Citation preview

Page 1: Cloud で Active Directory を活用するには

Cloud de Active Directory~シングルサインオンを実現するための処方箋~

マイクロソフト株式会社

エバンジェリスト

安納 順一(あんのう じゅんいち)http://blogs.technet.com/junichia/

Page 2: Cloud で Active Directory を活用するには

本日のテーマ

アプリケーションがクラウドにスケールアウトしたとき、

• 「認証」と「承認」の仕組みはどう変わるのか?

• 既存の Active Directory は生かせるのか?

• 夢のシングルサインオンは可能なのか?

についてお話しします。

Page 3: Cloud で Active Directory を活用するには

企業全体

組織内

組織内

クラウド

ID を使用する環境

自宅

企業全体

企業間

企業:クラウド

アプリケーション在るところ「ID」在り

Page 4: Cloud で Active Directory を活用するには

予測される ID 管理の問題点

• 見えない利用者の ID 管理/認証/承認

• 異なる認証方式の相互運用

• ディレクトリサービスの設置が困難

クレームベース セキュリティフェデレーション セキュリティ モデル

Page 5: Cloud で Active Directory を活用するには

健保番号/免許証番号/住民票

入国

日本国政府

(例) 入国審査

出国

発行

パスポート• 発行国• 氏名• 有効期限• 旅券番号• 写真• 出国印

米国政府

本人• 顔• 指紋

入国申請書• 滞在期間• 滞在先

パスポート・・

空港

信頼

ビザ• 滞在可能期間

信頼

Page 6: Cloud で Active Directory を活用するには

入国

日本国政府

フェデレーション セキュリティ モデル

出国

発行

パスポート• 発行国• 氏名• 有効期限• 旅券番号• 写真• 出国印

米国政府

本人• 顔• 指紋

入国申請書• 滞在期間• 滞在先

パスポート・・

健保番号/免許証番号/住民票

信頼

ビザ• 滞在期間

クレームプロバイダー

クレームクレームクレームクレームクレームクレーム

資格情報

セキュリティトークン

オーソリティ

リライングパーティ

クレームクレーム

クレーム

クレームクレーム

クレーム署名

サブジェクト

空港

信頼

リソース

Page 7: Cloud で Active Directory を活用するには

クレーム(主張)とは

• アプリケーションに渡すユーザー自身の属性

• 承認に使用される

Page 8: Cloud で Active Directory を活用するには

セキュリティ トークン

• パッケージ化されたクレーム

• 発行者の署名によって信頼性を担保

• STS ( Security Token Service ) が生成する

セキュリティトークン

Page 9: Cloud で Active Directory を活用するには

IDM と連携の限界

• 認証プロトコルの違い• Identity 管理ポリシーの違い• アプリケーション側の対応• Single Sign-On/Off への適用

IDM : Identity Management

Active Directory

プロトコル

アプリ1

プロトコル

情報の整形

OpenLDAP

プロトコル

情報の解釈

アプリ2

プロトコル

情報の解釈

情報の整形

情報

情報

情報

LA空港日本国

ヒースロー中国

Page 10: Cloud で Active Directory を活用するには

解決策• フェデレーション信頼による素結合• STS によりアプリケーション側の処理を削減• 情報はセキュリティトークンに格納して受け渡し

STSSTS

STSSTS

Active Directory

プロトコル

アプリ1

プロトコル

情報の整形

OpenLDAP

プロトコル

情報の解釈

アプリ2

プロトコル

情報の整形

情報の解釈

情報

情報

情報

プロトコル

プロトコル

フェデレーション信頼

LA空港日本国米政府

中国 ヒースロー

イギリス政府

Page 11: Cloud で Active Directory を活用するには

フェデレーションセキュリティモデル

STS

STSActive Directory

プロトコル

アプリ1

プロトコル

情報の整形

情報の解釈

情報

プロトコル

Active Directory Federation ServiceActive Directory Federation Service

2.0

Windows Identity Foundation

信頼

• AD FS 2.0 がユーザーのロールを管理• アプリケーションは受け取ったロールを解釈するだけ

Page 12: Cloud で Active Directory を活用するには

認証/ロール管理からの分離

アプリケーション

アプリケーション

アプリケーション

これまでの方式

クレームに対応

Page 13: Cloud で Active Directory を活用するには

SSO を実現するための構成要素

認証サーバー• ユーザーを認証し、セキュリティトークンの発

行を許可する

STS( セキュリティトークンサービス )• AD認証されたユーザーに対してセキュリティトーク

ンを発行する• アプリケーションにセキュリティトークンを渡す

クレームストア• セキュリティトークンに組み込むユーザー属性

が格納されている

AD DS

AD FS 2.0

AD DS/ldapSQL Server

WS-Federation/WS-Trust/SAML 2.0 に対応したアプリケーション※WIF は SAML 2.0 に対応していない

WIF

Page 14: Cloud で Active Directory を活用するには

基本的な構成

IdP/CP

AD DS

クレームストア

AD FS 2.0

RP/SP

Application

信頼

AD FS 2.0

IdP:Identity ProviderCP:Claims ProviderRP : Relying PartySP : Service Provider

企業A 企業B

• それぞれの企業にSTSを設置• STS 間でフェデレーション信頼を構築

②Token

発行

WIF

Page 15: Cloud で Active Directory を活用するには

基本的な構成~簡易版

IdP/CP

AD DS

クレームストア

AD FS 2.0

RP/SP

Application

信頼

企業A

• 同一企業内であれば STS は1台で構築可能

②Token

発行

WIF

Page 16: Cloud で Active Directory を活用するには

アプリケーションがクラウドだったら…

IdP/CP

AD DS

クレームストア

AD FS 2.0

RP/SP

信頼

企業A

• クラウドアプリでも考え方は変わらない

Application

②Token

発行

WIF

Page 17: Cloud で Active Directory を活用するには

WIF アプリケーションとSSOの仕組み

オンプレミス

クラウド

AD DS AD FS 2.0

12

3

4

クラウド上に Identity 情報を用意せずに、クレームによるアクセス承認が可能

WIF

5

6

7

8

WIF:Windows Identity Foundation

Page 18: Cloud で Active Directory を活用するには

WS-Federation (Passive SSO) の流れ

1. オンプレミスの AD DS にログオン依頼

2. AD DS からクレデンシャルが送信されクライアントに保存

------------

3. Windows Azure 上のアプリケーションにアクセス

4. クレーム ポリシーをアプリケーションから受け取り、STS (AD FS 2.0) にリダイレクト

5. 属性ストアである AD DS からクレームを収集

6. 集めたクレームに署名をしてセキュリティトークンを生成し、Windows Azure アプリケーションに送信

7. アプリケーションはセキュリティトークンを受け取り、Windows Identity Foundation (WIF) を使用してクレームを取り出し、評価する

8. 画面がブラウザーに送られる

Page 19: Cloud で Active Directory を活用するには

ブラウザー

WIF アプリケーションの構造• WIF (Windows Identity Foundation) を使用して

セキュリティー トークンからクレームを取り出す

• WIF は WS-Federation/WS-Trust をサポート

ASP.NET

Windows Identity Foundation

.NET Framework 4

AD FS 2.0クレームの評価

ロール判定

各種処理

ロールは既にトークンにセットされているので評価するだけでOK

Page 20: Cloud で Active Directory を活用するには

RP/SPIdP/CP

「信頼」とは?

信頼 MetadataMetadata

URI URI

精神的には

IdP 側 の Identity/Role 管理責任を信頼

RP 側の クレーム管理責任を信頼

物理的には

メタデータ/証明書/暗号化キーを事前に交換

お互いの「すり替わり」を防止

データの横取りを防止

Page 21: Cloud で Active Directory を活用するには

クレームの構造と識別方法

Claims

Claim ClaimType

Value

Issuer

OriginalIssuer

ValueType

これらの値でクレームを識別する

subject

Claim

Claim

Claim

Microsoft.IdentityModel.Claimshttp://msdn.microsoft.com/ja-jp/library/microsoft.identitymodel.claims.aspx

Page 22: Cloud で Active Directory を活用するには

アプリケーション作成時の留意点

• 空の属性はクレームに含まれない– ゆえにトークンにも含まれない

– 安易に「既定値」を使用するととんでもないことに!

氏名 = 安納 順一

会社名 = マイクロソフト株式会社

役職= (空)

IdP

RP 氏名 = 安納 順一

会社名 = マイクロソフト株式会社

Page 23: Cloud で Active Directory を活用するには

サポートされているプロトコルとトークン形式

• パッシブ SAML WebSSO

– SAML 2.0 トークン

• パッシブ WS-Federation

– SAML 1.1 トークン

• アクティブ WS-Trust(CardSpace 対応含む)

– SAML 2.0 トークン

– SAML 1.1 トークン

AD FS 2.0 WIF

Page 24: Cloud で Active Directory を活用するには

AD FS 2.0 ~クレーム パイプライン

要求プロバイダー信頼(Claims Provider Trusts) 証明書利用者信頼 (Relying Party)

証明書利用者(RP)

① 受付ける ③ 発行する

発行変換規則

input

output

受け付け変換規則

input

output発行承認規則

input

output

② 承認する

クレームストア

OK/NG

switch

トークン

要求規則 (Claim Rule)

Page 25: Cloud で Active Directory を活用するには

要求規則 の処理プロセス

要求規則1

要求規則2

要求規則セット

Input Claim Set

OutputClaim Set

クレーム

条件 発行

トークン

要求規則 n

テンプレートが用意されている

Page 26: Cloud で Active Directory を活用するには

カスタム規則

• テンプレートに用意されていないルールは自作することができる

• 「要求規則言語」を使用する

入力方向のクレーム/属性をチェックし、すべての条件が True の場合に「発行部」が実行される。条件部が無い場合には無条件で True とみなされる。

=>True

False

発行するトークンタイプと、そこに格納する属性/値を指定する。必須

条件部条件文 1

条件文 2&&

&&

オプション

発行部

発行文

条件部

発行部

Page 27: Cloud で Active Directory を活用するには

カスタム規則の書式 (例)

<変数>:[ <クレームの属性> == <値> ] => issue ( <発行書式> );

c:[type == “http://schemas.xx.org/claims/Email”] => issue (claim = c) ;

c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]=> issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname"), query = ";company;{0}", param = c.Value);

パス スルー (入力クレームをそのまま出力クレームに転送)

ユーザー名で AD DS を検索して会社名を取り出す

Page 28: Cloud で Active Directory を活用するには

ここで1つの疑問が…

クラウド上のアプリケーションが

社外のものだったら????

Page 29: Cloud で Active Directory を活用するには

クラウドアプリが社外だったら…?

IdP/CP

AD DS

クレームストア

AD FS 2.0

RP/SP

信頼

企業A

• 企業B社内のSTSとフェデレーション信頼を構築

Application

企業B

AD FS 2.0

WIF

Page 30: Cloud で Active Directory を活用するには

アプリケーションが RESTful ならば

こんな方法もあります

Page 31: Cloud で Active Directory を活用するには

クラウドアプリが社外だったら…?

IdP/CP

AD DS

クレームストア

AD FS 2.0

RP/SP

企業A

• クラウド上の STS を使用する

Application

企業B

AD FS 2.0

STS

REST

Page 32: Cloud で Active Directory を活用するには

platform

AppFabricAccess Control Service

Windows Azure platform

AppFabric Access Control Service V1

• RESTful サービスに特化したシンプルな RP/SP 用 STS– プロトコル :OAuth WRAP

– トークン :SAML 1.1,SAML 2.0,SWT

信頼

Relying P

arty

Service Bus

信頼

STS

REST

Page 33: Cloud で Active Directory を活用するには

AppFabric ACS V1 の想定シナリオ

道路の混雑状況を提供するサービスREST API

企業A 企業C

企業B

Request

Request

Resp

onse

Resp

onse

Application Application

RESTful なサービスへのアクセス制御を行う

Page 34: Cloud で Active Directory を活用するには

クライアントアプリケーション

ACS を 企業内 AD との SSO に使用する

オンプレミス

クラウド

AD DS

2

ACS では Passive SSO がサポートされていないことに注意

AD FS 2.0

ACSRESTService

信頼

信頼

13

4

5

68

9

7

10

WS-Trust

WRAP

Page 35: Cloud で Active Directory を活用するには

処理の流れ

1. クライアント アプリケーションが AD FS 2.0 にトークン発行を依頼

2. AD DS からクレームを収集

3. AD FS 2.0 から SAML 1.1 トークン発行

4. トークンを ACS に送信

5. ACS は受け取った SAML 1.1 トークンをルールに沿って検証

6. SWT を生成し、クライアントに発行

7. クライアント アプリケーションは受け取った SWT を分解し、正しい ACS から発行されたものか等を検証

8. 問題なければ HTTP Authorization ヘッダーに SWT を埋め込み、REST サービスに POST

9. REST サービスは受け取った SWT を分解してロールを検証

10.ロールが正しければサービスを実行

Page 36: Cloud で Active Directory を活用するには

まとめ

Page 37: Cloud で Active Directory を活用するには

3 種類の STS(Security Token Service)• STS により「使用目的」と「出来ること」が異なる

MFG:Microsoft Federation GatewayACS : Windows Azure platform AppFabric Access Control Service

【 MFG 】

MFG

AD FS 2.0

Microsoft Online Services用に用意された STS

【 AD FS 2.0 】

AD FS

2.0

高機能な STSオンプレミスに配備

AD FS 2.0anyIdPs

【 ACS V1 】

ACS

anyIdPs

クラウド上に用意された STS

AD FS 2.0

信頼

Page 38: Cloud で Active Directory を活用するには

STS (Security Token Service) の役割• セキュリティトークンの発行と管理

• クラウド アプリケーションとオンプレミスの架け橋

STS

STS

信頼信頼

信頼信頼

AD DS AD FS

ACS

Page 39: Cloud で Active Directory を活用するには

AD FS 2.0 と ACS V1 の違い

AD FS 2.0 ACS V1

プロトコル • SAML 2.0• WS-Federation• WS-Trust

• OAuth WRAP(for REST service)

トークン • SAML 1.1• SAML 2.0

• SAML 1.1/2.0 (AD FS 2.0)• SWT

トークン発行の要件

• AD DS による認証 • セキュリティ キー• SAML 1.1/2.0 トークン• SWT

役割 IdP/CP, RP/SP RP/SP

Passive SSO ○ ×

管理方法 • 管理コンソール• Windows PowerShell

• ACM.exe コマンド• ACSM Browser

アプリケーションに WIF は必要か?

必要 必要ない

IdP の選択 ○ 選択ページのカスタマイズも可能

× クライアントアプリケーションが IdP を意識する

ACS V1 は AD FS 2.0 の替わりにはなれないことに注意

IdPとの連携が必要

Page 40: Cloud で Active Directory を活用するには

シナリオによって使用するSTSが異なる

IdP/CP RP/SP

クラウド

オンプレミス

REST

WIF

AD FS 2.0

ACS V1

AD DS

REST

WIF

AD FS 2.0

Page 41: Cloud で Active Directory を活用するには

ACS V2 はAD FS 2.0 以外の IdP にも対応予定

IdP/CP RP/SP

クラウド

オンプレミス

REST

WIF

AD FS 2.0

ACS V2

AD DS

REST

WIF

AD FS 2.0

ACS V2 が万能になるわけではありません!

Page 42: Cloud で Active Directory を活用するには

© 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.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.