このトピックはまだ評価されていません - このトピックを評価する

Windows Presentation Foundation セキュリティ サンドボックス

Mark Alcazar

Windows Presentation Foundation プラットフォーム

Microsoft Corporation

2005 年 9 月

日本語版最終更新日 2006 年 6 月 19 日

概要 : XBAP セキュリティ サンドボックスの作成に使用するテクノロジの概要を示します。サンドボックスの機能セットを概説し、開発時のトレードオフについて論理的に説明します。

適用対象 :

WinFX Runtime Component

Windows Presentation Foundation (WPF)

XAML ブラウザ アプリケーション (XBAP)

目次

はじめに
概要
使用する機能に関する考慮事項
徹底的な防御
まとめ

はじめに

WinFX プラットフォームの一部である Windows Presentation Foundation (WPF) により、XAML ブラウザ アプリケーション (XBAP) という新しいアプリケーションの種類が導入されます。XAML ブラウザ アプリケーションは、ブラウザで実行され、インストールされることのないオンライン専用アプリケーションです。このアプリケーションは、セキュリティ サンドボックスで実行され、Web 上の WPF プラットフォームの機能を活用します。

ここでは、XBAP セキュリティ サンドボックスの作成に使用するテクノロジの概要を示します。サンドボックスの機能セットを概説し、開発時のトレードオフについて論理的に説明します。次のような目的で作成されました。

  • XAML ブラウザ アプリケーション内で可能な操作の種類について説明する。

  • 経験豊富な開発者によるセキュリティ サンドボックスの設計の理解を支援する。

  • サンドボックス内でできない操作のうち、どれが設計によって制限されているものか、どれがバグの可能性があるかの判断を支援し、マイクロソフトにフィードバックを提供できるようにする。

注意 この文書は、WinFX ランタイムと XAML ブラウザ アプリケーション (XBAP) に関する知識がある読者を対象としています。

WinFX ランタイムと XAML ブラウザ アプリケーションの概要については、Web における Windows Presentation Foundation: XAML ブラウザ アプリケーション を参照してください。

概要

サンドボックスとは、一般的なセキュリティ用語で、アプリケーションの実行権限を制限する環境を指します。インターネットからダウンロードしたアプリケーションは、供給元が不明な場合や、信頼できない場合があるので、特にサンドボックス化が重要となります。ここでは、XAML ブラウザ アプリケーション用に作成された Windows Presentation Foundation サンドボックスの概要について説明します。

コード アクセス セキュリティ

WPF サンドボックスは、.NET Framework の基礎セキュリティ テクノロジであるコード アクセス セキュリティ (CAS) を使用して構築されたセキュリティ モデルです。このセキュリティ モデルは許可セットと展開ゾーンの組み合わせを使用してアプリケーションの権限を決定します。CAS の詳細については、コード アクセス セキュリティ(英語) を参照してください。

アクセス許可の要求

コード アクセス セキュリティの重要な特徴は、コードが特定のレベルのアクセス許可を要求できることです。一般に、権限の検証が必要な場合は、コードが明示的に特定のアクセス許可を要求します。ディスクにアクセスする API を例に挙げてみましょう。ファイルを作成するコードが、FileIOPermission.Demand() を呼び出します。この要求により、.NET ランタイムがスタック ウォークを実行し、呼び出しモジュールの中に必要なアクセス権を持つものがあるかどうかを判別します。

CAS のスタック ウォークの仕組みは、さまざまな点で複雑です。詳細については、MSDN 記事の コード アクセス セキュリティ(英語) を参照してください。

セキュリティ例外

コードが必要なアクセス許可を保持していない場合、要求は失敗し、.NET Framework ランタイムがセキュリティ例外をスローします。このため、開発者がサンドボックスで使用できない機能を使って XAML ブラウザ アプリケーションを作成しようとすると、セキュリティ例外が発生します。

サンドボックスと部分信頼

サンドボックスは、一般的なセキュリティ用語で、アプリケーションの実行権限を制限する環境を指します。部分信頼は、コード アクセス セキュリティに基づくセキュリティ サンドボックスを指します。インターネットから展開した XBAP と XAML (Extensible Application Markup Language) ファイルは、すべて部分信頼の枠内で実行されます。

このドキュメントで使用している部分信頼とは、"インターネットから展開した XBAP に適用されるサンドボックス" と同じ意味があります。CAS は、ゾーンに基づくセキュリティ フレームワークなので、イントラネット アプリケーションは、インターネット アプリケーション用のサンドボックスより大規模なサンドボックスを要求することができます。インターネット サンドボックスの方が制約の厳しい環境であり、さまざまな状況が想定できるため、このドキュメントでは、インターネット サンドボックスで実行する機能に焦点を当てて解説します。

インターネットのアクセス許可セット

ここでは、インターネット サンドボックスを使ったアプリケーションについて、既定で実行を許可できる操作の種類を簡単に紹介します。以下に一覧されている実際のアクセス許可についての詳細は、System.Security.Permissions 名前空間 を参照してください。

インターネット   ゾーンで使用できる既定のアクセス許可  

FileDialogPermission.Open

標準の [File Open] ダイアログボックスを安全な方法で使用することを許可します。

IsolatedStorageFilePermission

ステート情報の最大 512K までを、ディスク上の安全な場所に書き込むことを許可します。

UIPermission.SafeTopLevelWindows

1 つのブラウザ ウィンドウへのアクセスを許可します。追加の WPF ウィンドウを開くことはできません。

PrintingPermission.Safeprinting

ユーザーにプロンプトを表示する、安全な方法での印刷を許可します。

WebPermission

アプリケーションの供給元サイトへのネットワークアクセスを許可します。

WebBrowserPermission

WPF Frame 要素に対し、HTML (または他の XBAP) を含むコンテンツに安全で確実な方法でナビゲートすることを許可します (WinFX Beta 2 では、コンピュータに WPF がインストールされている場合のみ、このアクセス許可がインターネット ゾーンに追加されます)。

MediaPermission

WPF の Image、Audio、および Video 要素に対し、安全で確実な方法でコンテンツをホストすることを許可します (WinFX Beta 2 では、コンピュータに WPF がインストールされている場合のみ、このアクセス許可がインターネット ゾーンに追加されます)。

インターネット ゾーンで使用できないアクセス許可の例

FileIOPermission

このアクセス許可は、ディスク上でのファイルの読み書きを制御します。そのため、インターネット ゾーンのアプリケーションでは、ユーザーのハードディスクにあるファイルを読み取ることができません。

RegistryPermission

このアクセス許可は、レジストリの読み書きを制御します。そのため、インターネット ゾーンのアプリケーションでは、ユーザーのレジストリ内の状態にアクセスすることや、状態を制御することはできません。

SecurityPermission.UnmanagedCode

このアクセス許可は、Win32 のネイティブ機能の呼び出しを制御します。

全般的方針

何らかの操作を実行可能にする場合は、エンド ユーザーに対してセキュリティ上のリスクが生じないかどうかを確認するため、実装を分析する必要があります。一般的なガイドラインとして、WPF の開発チームは、既存の Web プラットフォームで実行可能なシナリオについてのみ、サンドボックスでも可能にすべきかどうかを検討します。他の Web プラットフォームでは実行できない新しいシナリオをサンドボックスで可能にするためには、徹底した分析を行い、エンド ユーザーにとってのセキュリティ リスクが生じないようにする必要があります。例 :

  • 画像に対しては、供給元以外の Web サイトからのコンテンツをホストすることが許可されています。これは、他の Web プラットフォーム (HTML) でこの機能が許可されているからです。

  • 3D のような新しい機能は、(すべてのグラフィック操作がブラウザのウィンドウによる制約を受けている場合は) セキュリティ リスクが生じないことが実証されているため、部分信頼で実行できます。

部分信頼で実行できる機能セット

WPF プラットフォームの機能のうち、一部だけが部分信頼で実行できます。一部しか可能でないのは、部分信頼で実行できる機能に関する妥当性が厳密に検証されているためです。WPF の機能セットは、次の 4 つのカテゴリに分かれています。

  1. 部分信頼で実行可能な機能 (ボタンなど)

  2. 部分信頼で実行可能で、安全上の理由から動作に多少の変更が加えられる機能 (ポップアップ コントロールなど)

  3. 設計によって部分信頼での実行が不可能な機能 (Window.DragMove メソッドや、アンマネージ コードを使って相互運用を可能にするメソッドなど)

  4. 現在は部分信頼で実行できないが、将来のリリースで追加される可能性がある機能

設計によって部分信頼で実行できない機能は、特定のアクセス許可を明示的に要求します。たとえば、ウィンドウ上で DragMove メソッドを呼び出すと、UIPermission.AllWindows が要求されます。このような動作については、ドキュメントでも説明されています。

現在は実行できないが、今後、使用可能になる可能性がある機能は、通常、セキュリティ例外をスローします。このような API について、現在のドキュメントでは、部分信頼で実行できない、または特別な権限が必要であるとは記載していません。

Windows Presentation Foundation は、まだ開発プロセスが進行中です。部分信頼で動作すべき機能に対して要求が表示される場合は、バグである可能性があります。マイクロソフトの開発チームにご連絡ください (電子メール アドレス : wpfsec@microsoft.com)。

部分信頼で実行可能な機能

 全般

  • ブラウザ ウィンドウ

  • 供給元サイトへのアクセス

  • 分離された記憶領域ファイルの入出力

  • ファイル オープン ダイアログ

  • UIAutomation プロバイダ

  • Cicero IME

  • コマンド命令

  • タブレット PC のスタイラス/インク

 Web 統合

  • IE ダウンロード ダイアログ

  • 最上位レベルのユーザー主導ナビゲーション

  • フレームまたはナビゲーション ウィンドウ内でホストされる HTML

  • mailto: リンク

  • URI (コマンド行) 引数

  • ASMX Web サービス

  • HTML IFrame でホストされる XBAP

 XPS ドキュメント

  • XPS ドキュメント ビューア

 視覚効果

  • 2D

  • 3D

  • アニメーション

メディア

(およびクロスドメイン レンダリング) 

  • イメージ

  • オーディオ

  • 映像

 フロー ドキュメント

  • ページ編集

  • テキスト フロー

  • 最適パラグラフ

  • ハイフネーション

テキスト 

  • 埋め込みフォントとシステム フォント

  • Adobe CFF

  • グリフ

 編集

  • テキスト ボックス

  • リッチ テキスト ボックス

  • プレーンテキストとインク クリップボード

  • プログラムによる切り取り/コピー

  • ユーザー主導の貼り付け (Ctrl + V など)

コントロール 

  • ボタン

  • スライダ

  • スクロール ビューア

  • ポップアップ コントロール (ウィンドウ内に制限)

  • ポップアップ ベースのコントロール (メニューなど)

  • 基本コントロール

設計によってバージョン 1 では使用できない機能

 全般

  • スタンドアロン ウィンドウ

  • 新しいウィンドウの開始

  • アプリケーションで定義されたダイアログ

  • アプリケーションで起動された保存ダイアログ

  • UIAutomation クライアント

Web 統合 

  • Windows Communication Foundation Web サービス

 統合全般

  • HwndHost

  • 音声認識の完全なサポート

メディア 

  • ビットマップ効果

編集 

  • リッチ (RTF、XAML) クリップボード

  • スペル チェック

使用する機能に関する考慮事項

ここでは、各機能を部分信頼で実行可能にするための決定事項について説明します。

Windows、スプーフィング、フィッシング

UI スプーフィングとフィッシングは、信頼されたアプリケーションの UI を信頼度の低いアプリケーションが模倣するセキュリティ攻撃手法を表します。たとえば、Windows のログオン UI にそっくりなウィンドウを作成することは、一種のスプーフィングに当たります。Windows XP SP2 で提供されている Internet Explorer では、スプーフィングに対する HTML の脆弱性を軽減させる機能が導入されています。ここでは、XAML ブラウザ アプリケーションがスプーフィング対策として採用しているモデルを紹介します。

ブラウザ ウィンドウ

既定では、XAML ブラウザ アプリケーションのコンテンツは、ブラウザのメイン ウィンドウにインプレース表示されます。スプーフィングに対する脆弱性は、ブラウザ標準の信頼された UI (アドレス バー、ステータス バー、ウィンドウ アイコン、ブラウザ クロムなど) によって軽減されます。さらに、標準の WPF ウィンドウで使用可能なプログラミング モデルのうち、ブラウザで使用できるものは、一部に限られています (たとえば、ブラウザのウィンドウのアイコンを変更しようとすると、InvalidOperationException がスローされます)。

ウィンドウ

インターネット サンドボックスでは、XAML ブラウザ アプリケーションで WPF ウィンドウを作成することはできません。ウィンドウ (または、HwndSource のような相当するクラス) を作成しようとすると、UIPermission.AllWindows が要求されます。これは、上記のスプーフィングによるリスクを軽減するための措置ですが、開発できるアプリケーションの種類も制限されることになります。WPF の将来のリリースでは、この制限をなくすための対策を講じる予定ですが、当面の対策について以下に説明します。

ポップアップ コントロール (およびそのサブクラス) をインターネット ゾーンでインスタンス化できます。部分信頼のポップアップ コントロールは、常にブラウザ ウィンドウのコンテンツ領域内に限定されているため、スプーフィングの可能性が低くなります。

MessageBox クラスが部分信頼で使用できます。MessageBox によって作成される UI は、制約があるため、システム ダイアログをそっくり模倣することや、ユーザーの入力を取得することは不可能です。

アプリケーションでダイアログ ボックスや 2 つ目のウィンドウを表示する必要がある場合は、次のような対策を講じることができます。

  • インターネット上のアプリケーションの多く (電子商取引サイトなど) は、ダイアログ ボックスを使用していません。その代わりに、Web サイト式のモデルを使ってステータス メッセージやエラー メッセージをページ上に “インプレース" 表示しています。開発中のアプリケーションでも、ダイアログ ボックスの代わりに “インプレース” UI モデルが適していないかどうか、検討してください。

  • ステータス メッセージを表示する必要があるアプリケーションでは、ポップアップ コントロールを使用できます。

  • アプリケーションでステータスまたは警告を表示する場合は、System.Windows.MessageBox を使用します。

  • ダイアログ ボックスや 2 つ目のウィンドウを表示する必要のあるアプリケーションには、System.Windows.Forms.Form クラスを使用できます。これには、次のような制約があります。

    • ウィンドウに、コンテンツがインターネットから取得されたことを示す信頼バルーンが表示されます。

    • ダイアログ ボックス内では、System.Windows.Forms コントロールだけをホストできます。

    • System.Windows.Forms を使うことで追加のワーキング セットが必要になります。

グラフィック操作

グラフィック (3D とアニメーションを含む) の操作は、すべてトップレベルのブラウザ ウィンドウに限定され、部分信頼で実行できます。

画像とデコーダ

イメージ要素を使った画像の表示は、部分信頼で実行可能です。画像は、アプリケーションに埋め込んだリソースや、アプリケーションの供給元サイトの画像、他の Web サイトの画像などを参照する URI を使って表示できます。ただし、URI が別の Web サイト上の画像を参照している場合は、イメージ要素からプログラムによってメタデータにアクセスすることはできません (詳細については「ネットワーク セクション」を参照)。WPF プラットフォームでは、既定でさまざまな画像形式がサポートされています (.jpg、.gif、.tiff、.png、.bmp など)。

画像デコーダは、Web プラットフォームにおける脆弱性の原因の 1 つであることが判明しています。そのため、WPF プラットフォームで使用できるデコーダ/エンコーダの種類を拡張するための一般的なメカニズムはありますが、部分信頼で使用できるのは、署名されたコーデックに限られています。マイクロソフトでは、厳しいテストと検討プロセスを通過したコーデックだけを、部分信頼で実行可能にすることを推奨しています。

BitmapCodecInfo クラスによって公開される情報には、インストールされたコーデックに関する情報が含まれるため、情報開示リスクが生じます。そのため、部分信頼でこのクラスのプロパティにアクセスすることはできません。

編集

Web アプリケーションでクリップボードへのアクセスを可能にすることは、セキュリティおよびプライバシー上、問題があります。Web アプリケーションがクリップボードにアクセスできると、重要なデータが取得される恐れがあります。一方で、アプリケーション間での切り取り/貼り付け操作は、エンド ユーザーが当然できるものと考えている基本的な操作の 1 つです。WPF では、この問題の解決策として、コピー操作と、ユーザー主導の貼り付け操作だけを許可する方法を採用しています。

具体的に説明すると、貼り付けコマンドを呼び出すには、ユーザーが貼り付け操作に割り当てられているキーの組み合わせ (日本語のロケールなら CTRL + V) を使用するか、ブラウザの [編集] メニューを使用する必要があります。しかし、プログラムによって (たとえば、DataObject クラスで直接) 貼り付けコマンドを呼び出そうとすると、セキュリティ例外がスローされ、失敗します。このモデルでは、ユーザーが期待している操作を実行できる一方、悪質なアプリケーションによってエンド ユーザーの重要なデータが取得されるのを防ぐことができます。

現在は、クリップボードの形式のうち、一部だけが部分信頼で実行可能です (たとえば、CF_TEXT)。部分的に信頼されているアプリケーションと完全に信頼されているアプリケーションの間で権限の悪用が昇格されるのを防ぐため、CF_XAML など、よりリッチな形式は、現時点では使用できません。この制限は、WPF の将来のリリースで解決される予定です。ドラッグ アンド ドロップの使用については、悪質な手段で利用されるケースが頻繁に発生しています。そのため、PDC 2005 では、部分信頼でドラッグ アンド ドロップ操作を実行することはできません。

ナビゲーション

ナビゲーションは、Web アプリケーションに固有な要素の 1 つです。部分信頼では、アプリケーションが次の 3 つの場所のコンテンツへナビゲートできます。

  1. アプリケーションにリソースまたはコンテンツ ファイルとして組み込まれているコンテンツ

  2. 供給元サイトのサーバーに掲示されたコンテンツ

  3. 他のサイトにホストされているコンテンツ

他のサイトのコンテンツにナビゲートするためには、ユーザーによるアクションが必要です。つまり、ナビゲーションは、ユーザーがハイパーリンクをクリックした結果として起こらなければなりません。

ドメイン間でのナビゲーションにユーザーのアクションが必要な理由は、ユーザー エクスペリエンスを Windows XP SP2 で導入されたセキュリティ措置と一致させるためです。Internet Explorer では、プログラムによって実行ファイルなどの安全でない種類のファイルにナビゲートしようとすると、ブラウザの上部に情報バーが表示されます。このような Windows XP SP2 でのセキュリティ対策の詳細については、Windows XP Service Pack 2 Overview (英語) を参照してください。ユーザーが開始するナビゲーションだけをサポートすることは、ドメイン間共通のサーバーにある安全でない種類のファイルが持つリスクからユーザーを守るための、より制限的な対策です。

http: プロトコル、mailto: プロトコル、pack: プロトコルへのナビゲーションは、部分信頼でサポートされています。しかし、HTML Web ページで使用できるその他のプロトコル (javascript:、mks:、res: など) は、すべてが .NET Framework アプリケーションで使用できるわけではありません。これは、.NET Framework が現時点ですべてのプロトコルをネイティブでサポートしていないためであり、厳密な意味でのセキュリティ対策ではありません。

HTML へのサブフレーム ナビゲーション

フレームを HTML コンテンツにナビゲートすることは、部分信頼で可能です。ただし、フレームの場合、アプリケーションの供給元サイトのコンテンツだけが許可されています。WPF Beta 2 では、フレームを HTML コンテンツにナビゲートする機能が WebBrowserPermission によって制御されます。

ネットワーク アクセス

既定では、インターネット ゾーンでは、アプリケーションの供給元サイトへの Web 要求しか実行できません。これは、インターネット上のページがアクセスできるのが、同じドメインにあるページのドキュメント オブジェクト モデル (DOM) だけであるという、既存の Web ドメイン間セキュリティ モデルに従っています。WPF プラットフォームでは、これらの制約を超えて、イメージ要素やビデオ要素が、供給元以外のドメインのコンテンツを表示することを許可しています。ただし、外部サイトからデコードされたビットを読み取ることは許可されていません。たとえば、外部サイトから取得した画像に対して BitmapSource.CopyPixels メソッドを呼び出すと、WebPermission が要求されます。

理由は、画像と映像の表示が安全な操作とみなされているためです。しかし、外部サイトからの生データにアクセスすると、開発者が外部サイトのデータを取得できることになるため、既定の WebPermission が回避されてしまいます。

印刷

WPF の PDC 2005 より後のリリースでは、WPF コンテンツの印刷を部分信頼で実行できるようになる予定です。部分信頼で印刷機能を使用するときに、印刷ダイアログ ボックスを表示してユーザーの同意を得ることを必須とするモデルの採用が検討されています。印刷要求にユーザーからの明示的な同意が必要であれば、サービス拒否 (Denial-of-Service、DoS) 攻撃と情報開示攻撃を防ぐことができます。

コントロールとレイアウト

WPF の一部であるコントロールとレイアウトは、部分信頼で使用可能です (たとえば、DockPanelGridButton など)。このドキュメントの「ウィンドウ」セクションで説明されているとおり、System.Windows.Controls.Primitives.Popup クラスは、常に部分信頼でブラウザのウィンドウ内に収まるようクリップされます。ポップアップ クラスから派生するすべての要素 (メニュー など) も、このクリップ動作に従います。

相互運用性

アンマネージ コードで相互運用性を実現するメソッドやプロパティは、部分信頼では使用できません (WindowInteropHelper など)。これらのクラスの使用は、部分信頼で想定されていないためです。

入力

これまでに説明したセキュリティ機能のいくつか (貼り付けコマンド、ナビゲーション) では、操作がユーザーによって開始されたかどうかの特定が必要です。その結果、プログラムによる入力イベントの生成は、信頼された操作とみなされます。入力イベントの生成に使用可能なフックが用意されているメソッドは、部分信頼で使用できず、UIPermisison.Unrestricted を要求します。たとえば、InputManager クラスに関連するプロパティ、メソッド、イベントのほとんどは、部分信頼で使用できません。

その他の機能

画像効果

画像効果は、部分信頼で実行できません。

ActiveX コントロール

WPF は、現時点では XAML に直接埋め込んだ ActiveX コントロールをサポートしていません。アプリケーションで ActiveX コントロールをホストしたい場合は、WPF フレームがActiveX コントロールをホストしている HTML コンテンツを指すようにします。HTML ページで ActiveX コントロールを使用する場合と同じ制限が適用されます。

徹底的な防御

安全なシステムを構築するには、多数の防御層が必要です。城の例を取ってみても、堀があるだけでなく、城壁、跳ね橋、内壁などが城を囲んでいます。そのうちの 1 つが破られた場合でも、他の防御層が内部の市民たちを保護する仕組みです。

このドキュメントでは、コード アクセス セキュリティの使用に適用されるセキュリティ対策と設計上の考慮事項について説明してきました。城の例と同じく、WPF プラットフォームにも、多数の防御層が装備されています。ここでは、このような徹底的な防御手段について、概要を説明します。詳細については、Windows Presentation Foundation Security Whitepaper<1-- /a --> (英語) を参照してください。

プロセスのセキュリティ

ユーザーの多くが Administrator 権限を使ってコンピュータを実行している状況は、そのコンピュータで実行される不正なコードに包括的な権限が与えられてしまう事態を招いています。この問題に対処するため、Windows Vista のユーザー アカウント保護 (UAP) 機能では、コンピュータを Administrators グループに属するアカウントで実行した場合でもアプリケーションの権限が制限されるようになっています。

Windows Vista のユーザーであれば、この新しい措置によって保護されることになりますが、WinFX ラインタイムは、Windows XP SP2 と Windows Server 2003 でも使用可能です。これらのオペレーティング システムを使用しているユーザーを保護するために、XBAP は、すべて Administrator とパワーユーザーのトークンが除外されたプロセスで実行されます。その結果、上記のセクションで説明した CAS セキュリティ メカニズムに欠陥があった場合でも、不正なコードはコンピュータ上で Administrator 権限を持ちません。

クリティカルでトランスペアレントなアセンブリ

WPF では、.NET Framework の新機能であるクリティカルでトランスペアレントなコードを使用しています。この機能により、WPF アセンブリの中でセキュリティ面で最も重要なコードの属性にメタデータが使用されます。その後、静的コード分析ツールにより、検討が必要な危険なパターンが検出されます (さらに、セキュリティ面で最も重要なコードが明示的に識別されるため、コード ベース全体のセキュリティ上の監査が簡単になります)。

サンドボックスの無効化と制御

マイクロソフトでは、WPF プラットフォームを安全にするために最大の努力を払ってきました。それでも、管理者がエンド ユーザーのコンピュータ上で WPF の機能を制限したいと考える状況は想定できます。

  • 管理者がゾーンに基づいて機能を制限します。たとえば、会社で、ユーザーのコンピュータ上でインターネットからの XBAP が実行されることを禁止し、イントラネット XBAP の実行だけを許可したい場合などが考えられます。

  • 管理者が、ゾーンで使用可能なアクセス権を制御します (たとえば、イントラネット アプリケーションにアクセス権を多く与え、インターネット アプリケーションの権限を制限するなど)。

  • セキュリティ上、重大な脆弱性が見つかった場合に、修正プログラムを入手するまでの間、管理者は、スイッチを使って機能をオフにすることができます。

WPF には、機能セットのオンとオフを切り替える "大スイッチ" (たとえば、XBAP をオフにする、XPS ドキュメントをオフにするなど) と、個別の機能に適用する "小スイッチ" が用意されています。“大スイッチ” は、ゾーンごとに変更できる [インターネット オプション] パネルのスイッチに対応し、”小スイッチ” は、コード アクセス許可に対応しています。

[インターネット オプション] パネルでの制御

Internet Explorer 7 では、WPF 固有の機能を制御するためのセキュリティ設定が新しく追加されています (Internet Explorer のセキュリティ設定をカスタマイズするには、[インターネット オプション] パネルの [セキュリティ] タブにある [カスタム] をクリックします)。[インターネット オプションl] パネルに表示される他のセキュリティ設定と同じく、WPF の設定もゾーン別に分かれています。ダイアログを表示するか、WPF コンテンツを有効または無効にすることができます。管理者は、たとえば、コンピュータでインターネット XBAP は実行されず、インターネット XPS ドキュメントは、ダイアログの表示後に実行されるように設定できます。

スイッチを使って設定できる機能は、次のとおりです。

  • XPS ドキュメント

  • XAML ブラウザ アプリケーション (XBAP)

  • XAML ページ

管理者は、IEAK の使用や、グループ ポリシーによる変更の展開などのメカニズムを通じて設定を変更できます。これらのメカニズムについては、これまでにも頻繁に解説されてきました。

レジストリ キーを使用した制御

WPF のユーザー全員が Internet Explorer 7 を使用するとは限りません。Internet Explorer 7 を使用していないユーザーのために、どのような環境でも機能をオフにすることができるレジストリ キーが用意されています。

CAS ポリシーを使用した制御

コード アクセス セキュリティは、Caspol というコマンドライン ツールで設定できます。管理者は、Caspol を使って指定のアクセス許可セットに含まれるアクセス許可を変更します (たとえば、インターネット ゾーンで使用できるアクセス許可を変更するなど)。セキュリティ ポリシーの管理方法の詳細については、セキュリティ ポリシーの管理 を参照してください。

この文書の「インターネットのアクセス許可セット」で説明されているとおり、WPF には、インターネット ゾーンに追加できる新しい既定のアクセス権が用意されています。管理者は、WebBrowserPermission または MediaPermission を設定することで、広範囲に影響するこれらの機能を細かく調整することができます。

まとめ

十分な機能を備え、同時に既定の状態で安全性の高いインターネット向けプラットフォームを作成するのは、とても難しい作業です。この文書では、XAML ブラウザ アプリケーション用のサンドボックスを作成する上で必要な設計上の考慮事項について、概要を説明しました。開発者は、XBAP を使って構築できるアプリケーションの種類を把握し、その制約を理解する必要があります。XBAP サンドボックスは、開発者にとって便利なツールであり、サンドボックス内で実行されるアプリケーションは、すべて既定の状態で安全であるという大きな利点があります。

この情報は役に立ちましたか。
(残り 1500 文字)