NET Access Control Service

Download Report

Transcript NET Access Control Service

T1-307
鈴木章太郎
アーキテクトエバンジェリスト
マイクロソフト株式会社
.NET Services 概要
Microsoft Identity Software + Services
.NET アクセスコントロールサービス概要
.NET サービスバスとの関係
.NET ワークフローサービスとの関係
Microsoft SQL データサービスとの関係
リソース /サンプル・関連セッション他
.NET が持つ能力のクラウドへの 拡張
.NET Services を有効活用できれば、既存のあるい
は他の方法よりはるかに楽にクラウドサービスの
実装が可能
現時点で3 つのサービスがあり、この後も、
後続が登場予定
.NET Service Bus – サービスの統合に必要な接続
性とメッセージングの基盤
.NET Workflow Service –
信頼性が高くスケーラブルなワークフロー
.NET Access Control Service –フェデレーション
認証をベースとしたオーソライゼーション
アプリケーション統合サービス
アクセス コントロール
ワークフロー
サービス バス
複数の組織にわたり、
ユーザー ID を安全に保護
ビジネス ロジック/サービス
インタラクションのモデル化及び実行
疎結合されたコンポジット アプリ
ケーション間のメッセージ交換を実現
 クレーム ベースの ID 管理
 標準プロトコル (WS-Trust、WSFederation) ベースで、相互運用性
を実現
 Web ページやサービス API による
管理
 CardSpace、LiveID、ユーザー名/
パスワードのサポート
 XAML ベース ワークフロー向けの
ランタイム実行環境
 サービス オーケストレーションの
実現
 Windows Workflow Foundation の
拡張
 XAML ベース モデルをクラウドに
アップロード可能
 シンプルなイベントのパブリッ
シュ/サブスクライブ
 メッセージングにおけるファイア
ウォール対応
 柔軟な接続モード
 オンプレミス アプリケーションへ
の接続によるハイブリッド S+S シ
ナリオの実現
 Windows Communication
Foundation の拡張
SQL データサービスとは
クラウド データベース サービス
拡張性と柔軟性
開発者の俊敏性

リレーショナル クエリ




BLOB (Binary Large OBject)
XML ワイヤー形式
SOAP/REST のサポート


データ パーティションによる
スループット/拡張性の強化
トランザクションの一貫性を
確保
柔軟なデータ モデル (スキー
マの強制なし)
信頼性とセキュリティ



Microsoft SQL Server テクノロ
ジで構築
認証/承認
バックアップ/地理的分散によ
り事業継続性を確保
一つのアイデンティティモデル で、ユーザーにアイデンティティのコントロールを
可能にする
Software
開発者の生産性拡充
Live
Identity
Service
“Geneva”
Server
Microsoft
Services
Connector
Active Directory
Microsoft
Federation
Gateway
Windows
CardSpace
“Geneva”
標準技術への準拠
.NET Access
Control
Service
“Geneva”
Framework
Live
Framework
Claims-Based Access
Services
選択の柔軟性
アイデンティティメタシステムとクレーム(申告)ベースモデル
Software
Services
クレームプロバイダ(IP / STS)
Live
ID
Microsoft
Federation
Gateway
“Geneva”
Server
.NET Access
Control
Service
Microsoft
Services
Connector
3rdパー
ティ製
サーバー
3rdパー
ティ製
サーバー
クレーム
要求
クレーム
返送
Active Directory
アプリケーション
(RP)
“Geneva”
フレームワーク
Live
フレームワーク
3rd パーティ製
フレームワーク
(In cloud or on-premises)
リレーションシップ
(WS-Security, WS-Federation, WS-Trust)
クレーム取得
クレーム返送
(Requester / Client)
アイデンティティセレクタ(適切な場所で)
Windows CardSpace
“Geneva”
3rd パーティ製
セレクタ
クレーム要求
IP ( Identity Provider (Issuer) ):
ユーザーのIDを発行するサイト 。
STS ( Security Token Issuing Service ):
IP が持つ、オンラインでセキュリティトークンを発行
することのできるサービス。
RP ( Relying Parties ) :
情報の提示を求めるWebサイト、ターゲットアプリ
ケーション。クライアントに対して、セキュリティ
トークンの提示を要求する。 具体的には、利用できる
IPの種類と、必要な Claim リスト(例えば、ユーザー
名と会社名、役職、年齢情報をくれ、等)を指定。
Requester( =Client ) :
ユーザーのアプリケーション。Webブラウザ(HTTPク
ライアント)、WPF/WCF アプリケーション(SOAPクラ
イアント)等。
セキュリティトークン
IP の STS から必要に応じ、その都度発行してもらう、
いわゆる身元証明情報。必要最小限の Claim のみが記
載された形で発行され、これを RP に提示することで、
RP に対し、身元証明を行う。
Claim ( クレーム、主張 )
Clientが送信する、ユーザーに関する情報項目のこと。
CardSpace にも記載可能。当然、すべての情報が必要
なわけではなく、一部の Claim のみで十分なことも多
い。 ユーザーID、会社情報、役職、所属、等。アク
ション(メソッド)の実行権限も付与可能。
CardSpace ( 情報カードの一種 )
IP からセキュリティトークンを発行してもらうための
カード。STSの URL、記載可能な Claim 一覧等が記載さ
れ、自己発行カードも作成可能。
下記はいずれも、アクセスコントロールに
おいて、同じアプローチを利用
Microsoft SQL データサービス
(1) ユーザー名 & パスワードと、
(2) .NET アクセスコントロールサービスが生成
するトークン、のいずれも利用可能
.NET サービスバス
.NET ワークフローサービス
ポータル全体
注: .NET Service Bus と、.NET Workflow Service は、トー
クンのプロセッシングにおいて共通のコードを利用
誰が
呼び出し元?
彼らは何が
できるの?
Live ID
ユーザー
XYZ
ドメイン
ユーザー
利用者
Access
Control
Service
<何らかのID
プロバイダ>
統合
オーケスト
レーション
Service
Bus
UI
WF
Data
アプリケーション
Store
ポータル
UIを持ち、アクセスコントロールのルールのコレク
ションを作成したり管理したりする
クライアント API
アクセスコントロールのルールのコレクションを管理
するための具体的かつ実践的な方法を提供する
サービス ( STS )
トークンを発行するホストされたサービス
開発者は、“Geneva”フレームワーク(WCFや、.NET
Framework 3.5、その他 WS-Trust 1.3準拠のjava stackに
も対応)を利用して、このサービスと相互にやり取り
をする
3. アクセスコントロール
1. 利用者のためにアク
セスコントロールの
ルールを決める
6.クレーム
をRelying
Partyで
チェック
0. Cert|Secret
公開鍵、証明書
の交換;
定期的にリフ
レッシュ
Relying Party
(サービスバス、
アプリケー
ション等)
アクセスコント
ロールサービス
アカウント
(Managed STS)
ルールに基づいて、入力
クレームを出力クレーム
にマッピングする
5. トークン付きの
メッセージを送信
Requestor / Clinet
リクエスタ
(利用者)
1つの Access Control Service Account で
複数のアプリケーションや同一アプリケーションの別の部分
へのサービス提供ができる
URI がアプリケーション毎なので個別の設定可能
Scope: http://foo.com
Rule 1
Rule N
Enc . Pref. & Settings
Scope: http://bar.com
Rule 1
Rule N
Enc . Pref. & Settings
.NET サービスバス, .NET ワークフローサービス、
そして SQL データサービス には、.NET アクセス
コントロールサービスアカウントがある
これらのアカウントは、スコープ(適用範囲)と
暗号化プリファレンスを含んでいる
ルールは、新しい利用者アカウントが作成された
ときに、自動的に追加される
.NET サービスバスと .NET ワークフローサービ
ス、そして SQL データサービスでは、ルールは異
なる
NET サービスバスと 、.NET ワークフローサービス
は、利用者アカウントにルールへのEdit権限を付与
している
サインアップ時にアサインされる
アクセスコントロールサービスには、現
在、下記のクレデンシャルストアがある
ソリューション名 / ソリューションパスワード
X.509 証明書
CardSpace v1 自己発行カード
しかしアクセスコントロールサービスそれ
自体は、アイデンティティプロバイダにな
る計画はない
将来のリリースで、クレデンシャルストア
としては、Live Identity Services を使う予定
トークンのリクエスティングとプロセッシング
Geneva Framework の利用が最もシンプル
.NET Framework 3.5 のWCFの利用
いずれかの WS-Trust 1.3 スタックの利用 (Sun Metro, 等)
.NET サービスバスと.NET ワークフローサービスも、
SDKの中に、トークンをリクエストするタイプを持つ
ルールの管理
ルール管理のためのシンプルなAPI
クライアントAPIを利用 or REST エンドポイントを利用
アクセスコントロールサービスポータルも利用できる
.NET Services SDKにサンプルのソースコードあり
スマートクライアントやWebサービスを対象と
する
E.g. WPF や WCF アプリケーションが典型例
そのようなアプリケーションのために:
RST(Request for Security Token)の中のアクセスコ
ントロールサービスにクレームを送信し、RSTR を
relying party(対象アプリケーション)に送信する
.NET Services SDKにサンプルがある
インタラクションはWS-Trust 1.3に準拠
.NET Framework 3.5のWCF や、その他いくつかの
Java スタックがサポートされる
各々のクレデンシャルタイプのためのエンドポイ
ント
他IPからのトークンのためのエンドポイントでもある
ホスト名 + ソリューション名 + クレデンシャル
タイプ
ユーザー名 / パスワード:
http://accesscontrol.windows.net/sts/
{solutionName}/username_for_certificate
X509 Certificate:
http://accesscontrol.windows.net/sts/
{solutionName}/certificate
Windows CardSpace:
http://accesscontrol.windows.net/sts/
{solutionName}/issued_for_certificate
Calculator Service
アクティブリクエスタプロファイルシナリオ(WCFサービス)
.NET Services SDK同梱
ローカルのサービスにあるメソッドをOutput Claimとして、アク
セスコントロールサービス側でRule化し制御
ユーザー名 / パスワード利用とCardSpace利用の両シナリオ
.NET Access
Control Service
2
Relying Party
(Calculator Service)
Client
1
WS-Trust
1. ユーザー名 /
パスワード
2. CardSpace
Security Token Service
3
4
クライアントPC
HTTPリダイレクトを認識できるクライアントを
対象とする
E.g. ブラウザがその典型例
Web アプリケーションのために:
アクセスコントロールサービスにリダイレクトし、返
送されたトークンをプロセッシングし、次いでセッ
ションクッキーを発行する
.NET サービスポータルがまさにこれを行っている
アクセスコントロールサービスにより、Liveアイ
デンティティサービスや、 “Geneva” サーバー と
のフェデレーションが可能
さらに 3rd パーティの WS-Federation サポート製品が
登場予定
ホスト名+ ソリューション名 + フェデ
レーションターゲット
これもquery string パラメータを必要とする
Live ID federation エンドポイント:
https://accesscontrol.windows.net/passivests/
{solutionName}/LiveFederation.aspx
General federation エンドポイント:
https://accesscontrol.windows.net/passivests/
{solutionName}/Federation.aspx
これら2つは将来のバージョンで統合予定
スコープ、Reply Toアドレス、アイデン
ティティプロバイダのアドレス、を記述
例:
wa=wsignin1.0&wtrealm={scope}&wreply={replyTo}&
whr={identityProvider}
“Geneva” Frameworkを使うことにより、
whr 等は自動的にハンドリングされる
現在のCTP以降でさらに機能が強化される予定
Contosowoodworking(木工用品店)
Web サイト、WS-Federation 連携
パッシブリクエスタプロファイルシナリオ(ASP.NET Webアプリ
ケーション)
Contosowoodworking Web サイトへのアクセスを、アクセスコン
トロールサービスで制御
パワーツールと普通のツールを権限によって表示 / 非表示
WS-Federation
.NET Access
Control Service
2
Web ブラウザ
Client
Relying Party
(Contosowoodworking)
1
6
Security Token Service
5
4
3
クライアントPC
WS2007FederationHttpBinding は、 WCF スタッ
クのための WS-Trust 1.3 実装
アクティブの場合  RST を アクセスコントロール
サービス(STS)に送信し、次いで、トークン+ ペイ
ロード を対象アプリケーション ( Relying party )に送
信する
アクセスコントロールサービスの中のクレデン
シャルストアを使うときには、当該 RST はソ
リューションクレデンシャルを含んでいる
.NET Services SDK の中に、ソリューション名 /
パスワードと、CardSpaceのサンプルがある
CardSpace を使うには、Visual Studio を使った
“サービス参照の追加”か、svcutil で行う
アクセスコントロールサービス開発者のための
最適なフレームワーク
タイプが定義され、それによりトークンをリク
エストしたりプロセスする
このトークンにはアクセスコントロールサービストー
クンを含む
アクティブ・パッシブ両方のシナリオあり
“Geneva” Framework SDK の一部として利用可能
Microsoft.IdentityModel.dll に利用できる殆どのタイプ
が定義されており、これを使ってアクセスコントロー
ルサービスのインタラクションが可能
NOTE: アクセスコントロールサービスは、このアセン
ブリを使って作成されている
4 つのサービスから構成される :
トークン発行者としてのSTS、ルール管理
サービス、ルール実行エンジン、ポータル
STS と ルール管理サービスは public API を
持つ
Portal
STS
Rule Mgmt
Rule Processing
Storage
Data
Model
Security Token Service
Security Token
STS Service
Custom
Handlers,
Authenticators,
Policies
Custom
Handlers,
Authenticators,
Policies
……
Custom Handlers, Authenticators, Policies …
IDFXFramework
“Geneva”
IDFX
WCF Front-End
WS-Federation
(Passive)
WS-Trust
(Active)
Internet
SOAP Client
HTTP Client
. NET サービスバスは、一つのネーミングを使用
して、リソースとエンドポイントを構造化
各利用者アカウントは、当該ネーミングの一部
を、 ソリューション名をベースとして、割り当
てる
各ソリューション名のネーミングは、.NET アク
セスコントロールサービスの中のスコープである
当該ソリューション名のオーナーは、スコープの
Edit権限を付与される
Foo/
http://servicebus.windows.net/services/
Bar/
Baz/
.NET サービスバスがトークンに対して要求する
のは :
アクセスされているリソースのネーミングを含む
Listen かつ/または Sendのアクションクレームを含む
.NET サービスバスの 証明書により暗号化される
トークンが提示されるまでに検証される
当該ソリューション名のスコープは、2つのルー
ルでプロビジョニングされる :
Username= Foo  Action=Listen
Username= Foo  Action=Send
Foo はこれらのルールを必要に応じて変更できる
.NET サービス SDK には、トークンをリクエスト
するためにWCFを拡張するタイプ群が含まれる
スタンダードエンドポイントビヘイビア
ソリューション名 / パスワード、X509、CardSpace、
Federation、等々.
下記のタイプを使ってアクセス可能
TransportClientEndpointBehavior type
WS-Trust 1.3 準拠のWebサービススタックであれ
ば、 .NET サービスバスとのインタラクションが
可能 (e.g., Sun Metro 1.3)
.NET ワークフローサービスは、ネーミングを
使って、リソースとエンドポイントを構造化
.NET サービスバスとほぼ同じモデル
HTTP エンドポイントも含む
Foo/
http://workflow.windows.net/workflowshttp/
Bar/
Baz/
Foo/
http://workflow.windows.net/workflows/
Bar/
Baz/
. NET ワークフローサービスがトークンに対して要求する
のは :
アクセスされているリソースのネーミングを含む
Read/Write/Execute/Send の各アクションクレームを含む
.NET ワークフローサービスの証明書により暗号化される
トークンが提示されるまでに検証される
当該ソリューション名のスコープは、アクションルール
でプロビジョニングされる :
Read/Write/Execute/Send
必要に応じてこれらのルールは変更できる
ワークフロー群は、通常のトークンのライ
フタイムを超えて稼働可能
例 : 半年にわたって毎日, Foo’のワークフロー
は、サービスバスにメッセージを送る必要が
ある
ワークフローは、長期間にわたり存続する
Authentication (AuthN、認証) トークンを
使って、 Authorization (AuthZ、認可) トー
クンを要求する
Access Control Service Controlled
Authorities in SQL Server Data Services
Rule 1
Rule 2
Scope 1 ptr
Scope 2 ptr
.
.
.
Scope N ptr
Scopes
Foo Account
Container
Scope
1
Foo
Rule
Container 1
Scope
2
Foo
Rule
Container 2
.
.
.
Scope
N
Foo Rule
Container N
SDS は2つの認証ユーザーを持っている:
ユーザー名 / パスワードを管理
アクセスコントロールサービストークン
SDSは、アクセスコントロールサービスのアカウ
ントと1つのスコープを持つ
各々の.NET Servicesのアカウントにより、ルール
が付加される
アクセスコントロールサービスのユーザー名を、
UPNクレームにマップする
Username=shotaro → [email protected]
さらに深い統合が可能になっている
基本的には、アプリケーションの要求に応じて、カスタマ
イズされるべき
その上で共通のパターンとして :
1.
2.
サービスアカウントを使って、 .NET サービスにアクセス、
AuthN ( 認証) / AuthZ ( 認可 )は独立して行う
フェデレーション認証を使って、ユーザーにサービスにより支え
られているドメインへの AuthN ( 認証) / AuthZ ( 認可 )を行う
アプローチ1.は、固有のIDストアを使った既存のアプリ
ケーションに近い
Calculatorサービスのデモもこれに該当する
アプローチ2.が最もフィットするのは、新しいアプリ
ケーションの場合である
フェデレーション認証のアプローチと推測
ユーザーのセットに対して新しいスコープ
を作成
プロビジョン時間に作成された.NET サービス
バスと、.NET ワークフローサービスのスコー
プに従わせる
Listen / Send / Execute 等をユーザーシナ
リオに基づいて割り当てる
独自のユーザーのための認証プロセスにおい
て、当該クライアント API を使う
REST RST / RSTR のサポート
アクセスコントロールの技術を広くリーチ
するために、共通のリクエスト
現在、詳細を詰めているところ
Federation Gateway のサポート
クレデンシャルストアとしての Live ID
の利用
Windows Azure 上へのホスティング
カスタムポリシーのサポート
T1-301
T1-302
T1-303
T1-304
T1-305
T1-306
T1-308
T1-201
T1-309
T1-310
T1-401
T1-402
T1-403
Windows Azure プログラミング
Windows Azure ストレージサービス
Windows Azure 管理機能
.NET Services 概要
.NET Services:サービスバスとアーキテクチャの詳解
.NET Services:ワークフローサービスによるクラウド
サービスのオーケストレーション
SQL Services 概要
Live Services 概要
Live Framework リソースモデルとリソースへのアクセス
Live Framework アプリケーション開発
クラウドコンピューティングのエッセンス
“Geneva”:フェデレーショナルなクレームベース ID
モデルの適用
Web 2.0 スタイル サービスのアーキテクチャと実装
Azure Services Platform SDK
Windows Azure SDK
Windows Azure Tools for Visual Studio 2008
.NET Services SDK
SQL Data Services SDK
http://www.microsoft.com/azure/sdk.mspx
http://portal.ex.azure.microsoft.com/sdk.aspx
Geneva Framework SDK
http://portal.ex.azure.microsoft.com/sdk.aspx
https://connect.microsoft.com/site/sitehome.aspx?SiteID=642&wa
=wsignin1.0
Azure Services Training Kit PDC Preview
http://www.microsoft.com/azure/trainingkit.mspx
Azure Services Management Tool
http://code.msdn.microsoft.com/AzureManagementTools
© 2009 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.