ClickOnce アプリケーションのコード アクセス セキュリティ
更新 : 2007 年 11 月
ClickOnce アプリケーションは .NET Framework に基づいており、コード アクセス セキュリティの制約を受けます。このため、コード アクセス セキュリティの影響を理解し、それに応じて ClickOnce アプリケーションを作成することが重要です。
コード アクセス セキュリティとは、保護されているリソースや操作に対して、コードが持つアクセス権を制限できるようにするための .NET Framework の機構です。常に、アプリケーションに必要なアクセス許可だけを含むように、ClickOnce アプリケーションのコード アクセス セキュリティ アクセス許可を設定する必要があります。Visual Studio には、アプリケーションのアクセス許可セットを決定および設定するために必要なツールが用意されています。
ClickOnce の既定のコード アクセス セキュリティ
既定では、ClickOnce アプリケーションはクライアント コンピュータでのインストール時または実行時に完全信頼のアクセス許可を付与されます。完全信頼のアクセス許可が実際に必要な場合もありますが、通常、完全信頼のアクセス許可を付与することは次の 2 つの理由でお勧めできません。
完全信頼のアクセス許可が設定されたアプリケーションは、ファイル システムやレジストリなどのリソースに無制限にアクセスできます。このため、アプリケーション (およびエンド ユーザーのシステム) が悪意のあるコードに攻略されるおそれがあります。
アプリケーションが完全信頼のアクセス許可を必要とするときは、エンド ユーザーはアプリケーションにアクセス許可を付与するように要求されます。これでは、アプリケーションが真の ClickOnce エクスペリエンスを提供していることにならず、あまり経験のないユーザーは混乱するおそれがあります。
メモ : CD-ROM などのリムーバブル メディアからアプリケーションをインストールする場合は、ユーザーに対してプロンプトは表示されません。また、ネットワーク管理者は、信頼できるソースからアプリケーションをインストールするユーザーにはプロンプトが表示されないようにネットワーク ポリシーを設定できます。詳細については、「信頼されたアプリケーションの配置の概要」を参照してください。
これらの理由から、アプリケーションのコード アクセス セキュリティ アクセス許可を、常にアプリケーションが必要とするアクセス許可だけが含まれるように変更する必要があります。
セキュリティ アクセス許可の設定
常に、実際に必要なコード アクセス セキュリティ アクセス許可だけを要求するように ClickOnce アプリケーションを設定する必要があります。セキュリティ アクセス許可は、プロジェクト デザイナの [セキュリティ] ページで設定できます。
プロジェクト デザイナの [セキュリティ] ページには、[ClickOnce セキュリティ設定を有効にする] チェック ボックスがあります。このチェック ボックスをオンにすると、アプリケーションの配置マニフェストにセキュリティ アクセス許可の要求が追加されます。インストール時に、この要求アクセス許可がアプリケーション配置元ゾーンの既定のアクセス許可を上回っていれば、アクセス許可を付与するようユーザーにプロンプトが出されます。詳細については、「方法 : ClickOnce のセキュリティ設定を有効にする」を参照してください。
アプリケーションの配置元が異なれば、付与されるアクセス許可のレベルも異なり、それに関してプロンプトは表示されません。たとえばインターネットからアプリケーションが配置される場合、かなり制限されたアクセス許可セットがアプリケーションに付与されます。ローカル イントラネットからインストールされる場合は付与されるアクセス許可が拡大し、CD-ROM からインストールされる場合は完全信頼のアクセス許可が付与されます。
アクセス許可を設定する開始点として、[セキュリティ] ページの [ゾーン] のリストからセキュリティ ゾーンを選択できます。アプリケーションが複数のゾーンから配置される可能性がある場合は、アクセス許可が最も少ないゾーンを選択します。あらかじめ設定されたアクセス許可を使わずに開始し、アプリケーションに必要なアクセス許可を一つずつ追加していく場合は、[(カスタム)] ゾーンを選択します。
ゾーンを選択すると、[アクセス許可] リストが更新されてそのゾーンの既定のアクセス許可が表示され、含められるアクセス許可には緑色のチェックが付けられます。詳細については、「方法 : ClickOnce アプリケーションのセキュリティ ゾーンを設定する」を参照してください。
アクセス許可をさらに制限するには、アクセス許可セットを選択してプロパティを変更します。たとえばアプリケーションが [ファイルを開く] ダイアログ ボックスを表示する必要がある場合、ダイアログ ボックスを表示する権限を FileDialogPermission セットが付与します。既定では、このアクセス許可セットは、[ファイルを開く] と [ファイルの保存] の両方のダイアログ ボックスを使用可能にします。これを変更するには、[FileDialogPermission] セットをクリックし、[プロパティ] をクリックして [アクセス許可の設定] ダイアログ ボックスを開きます。次に [[ファイルを開く] ダイアログ ボックス] にアクセス許可を設定します。詳細については、「方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する」を参照してください。
メモ : |
---|
設定できるプロパティはアクセス許可セットによって異なります。すべてのアクセス許可セットが設定できるプロパティを持つわけではありません。 |
不要なアクセス許可セットを除外したり、ゾーンの既定に含まれないアクセス許可を有効にしたりすることもできます。その場合は、アクセス許可セットの [設定] リストから値を選びます。変更されたアクセス許可は太字で表示されます。ゾーンの既定に含まれないアクセス許可を有効にした場合、[含まれるアクセス許可] チェック マークの横に情報アイコンが追加されます。
メモ : |
---|
ゾーンの既定に含まれないアクセス許可を有効にすると、前述のようにエンド ユーザーに対してプロンプトが表示されます。追加のアクセス許可を有効にするときは、常に、実際に必要なアクセス許可だけを含むようにアクセス許可セットを変更する必要があります。 |
アプリケーションに必要なアクセス許可の決定
セキュリティ アクセス許可を効果的に設定するためには、アプリケーションが必要とするアクセス許可を正確に知っておくと役立ちます。[セキュリティ] ページからアクセス許可の検出ツールを使用することにより、コードを分析してアプリケーションに必要なアクセス許可を正確に判断できます。
メモ : |
---|
アクセス許可の検出ツールには、いくつかの制限があります。このツールはコードの静的分析を実行するので、遅延バインディング コードや動的に読み込まれるアセンブリに必要なアクセス許可をこのツールで確認することはできません。また、アクセス許可の少ない環境で実行されるときはアクセス許可要求を動的に変更するようにアプリケーションが設計されている場合、このツールは最大限の必要アクセス許可を報告します。 |
このツールがアプリケーションの分析を完了すると、必要なすべてのアクセス許可セットが [有効] に設定されて太字で表示されます。有効に設定されたアクセス許可がゾーンの既定に含まれない場合、そのアクセス許可はさらに警告アイコンでマークされます。エンド ユーザーに対してプロンプトが表示されないようにするには、これらの分析結果を検討して、アクセス許可が不要になるようにコードを変更する方法があるかどうかを判断します。
詳細については、「方法 : ClickOnce アプリケーションのアクセス許可を調べる」を参照してください。
制限されたアクセス許可を持つアプリケーションのデバッグ
多くの場合、開発者は完全信頼のアクセス許可で開発用コンピュータを動作させます。そのため、アクセス許可が制限されたアプリケーションを実行するユーザーに表示されることがあるセキュリティ例外を、アプリケーションのデバッグ時に見ることはありません。
これらの例外をキャッチするには、エンド ユーザーと同じアクセス許可を使用してアプリケーションをデバッグする必要があります。制限されたアクセス許可を使用したデバッグは、プロジェクト デザイナの [セキュリティ] ページで有効にできます。
制限されたアクセス許可を使用してアプリケーションをデバッグすると、[セキュリティ] ページで有効にされていないコード セキュリティ要求に対して例外が発生します。例外ヘルパーが表示され、例外が発生しないようにするためのコードの変更案が示されます。
また、コードの作成時に、設定済みのセキュリティ アクセス許可に含まれないメンバは、コード エディタの IntelliSense 機能により淡色表示されます。
詳細については、「方法 : アクセス許可が制限された ClickOnce アプリケーションをデバッグする」を参照してください。
ブラウザによってホストされるアプリケーションのセキュリティ アクセス許可
Visual Studio では、Windows Presentation Foundation (WPF) アプリケーションとして次のプロジェクトの種類を使用できます。
WPF Windows アプリケーション
WPF Web ブラウザ アプリケーション
WPF カスタム コントロール ライブラリ
WPF サービス ライブラリ
これらのプロジェクトの種類のうち、WPF Web ブラウザ アプリケーションだけが Web ブラウザでホストされます。したがって、WPF Web ブラウザ アプリケーションは、配置とセキュリティに関して特別な設定を必要とします。この種類のアプリケーションの既定のセキュリティ設定は、次のとおりです。
[ClickOnce セキュリティ設定を有効にする]
[これは部分的に信頼するアプリケーションです]
[インターネット] ゾーン (WPF Web ブラウザ アプリケーションの既定のアクセス許可セットが選択された状態)
[セキュリティの詳細設定] ダイアログ ボックスの [このアプリケーションを選択されたアクセス許可のセットでデバッグする] チェック ボックスはオンになっていて使用不可です。ブラウザによってホストされるアプリケーションの場合は、[ゾーン内でデバッグ] をオフにできないからです。
ClickOnce を使用して配置される WPF Web ブラウザ アプリケーションは、appname.exe マニフェスト ファイルに格納された特定のアクセス許可セットを要求します。これは、他の 2 つのアクセス許可とは別の、インターネット ゾーンのコード アクセス セキュリティ アクセス許可セット用の既定のアクセス許可です。
既定以外のアクセス許可を設定すると、既定以外のアクセス許可を要求するようアプリケーションが設定されたという警告が Visual Studio から出されます。セキュリティ ポリシーをターゲット コンピュータにプッシュしておかなければ、インストールは失敗します。
参照
処理手順
方法 : ClickOnce のセキュリティ設定を有効にする
方法 : ClickOnce アプリケーションのセキュリティ ゾーンを設定する
方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する
方法 : ClickOnce アプリケーションのアクセス許可を調べる
方法 : アクセス許可が制限された ClickOnce アプリケーションをデバッグする