ClickOnce アプリケーションのコード アクセス セキュリティ
ClickOnce アプリケーションは .NET Framework に基づいており、コード アクセス セキュリティの制約を受けます。このため、コード アクセス セキュリティの影響を理解し、それに応じて ClickOnce アプリケーションを作成することが重要です。
コード アクセス セキュリティとは、保護されているリソースや操作に対して、コードが持つアクセス権を制限できるようにするための .NET Framework の機構です。アプリケーション インストーラーの場所として適切なゾーンを使用するように、ClickOnce アプリケーションのコード アクセス セキュリティ アクセス許可を設定する必要があります。また、ほとんどの場合、制限されたアクセス許可セットには [インターネット] ゾーン、または大きいアクセス許可セットには [ローカル イントラネット] ゾーンを選択できます。
ClickOnce の既定のコード アクセス セキュリティ
既定では、ClickOnce アプリケーションはクライアント コンピューターでのインストール時または実行時に完全信頼のアクセス許可を付与されます。
完全信頼のアクセス許可が設定されたアプリケーションは、ファイル システムやレジストリなどのリソースに無制限にアクセスできます。このため、アプリケーション (およびエンド ユーザーのシステム) が悪意のあるコードに攻略されるおそれがあります。
アプリケーションが完全な信頼のアクセス許可を必要とするときは、エンド ユーザーはアプリケーションにアクセス許可を付与するように要求される場合があります。これでは、アプリケーションが真の ClickOnce エクスペリエンスを提供していることにならず、あまり経験のないユーザーは混乱するおそれがあります。
[!メモ]
CD-ROM などのリムーバブル メディアからアプリケーションをインストールする場合は、ユーザーに対してプロンプトは表示されません。また、ネットワーク管理者は、信頼できるソースからアプリケーションをインストールするユーザーにはプロンプトが表示されないようにネットワーク ポリシーを設定できます。詳細については、「信頼されたアプリケーションの配置の概要」を参照してください。
ClickOnce アプリケーションのアクセス許可を制限するには、アプリケーションのコード アクセス セキュリティ アクセス許可を変更して、アプリケーションが必要とするアクセス許可に最適なゾーンを要求するようにします。ほとんどの場合、アプリケーションが配置されているゾーンを選択できます。たとえば、アプリケーションがエンタープライズ アプリケーションの場合は、[ローカル イントラネット] ゾーンを使用できます。アプリケーションがインターネット アプリケーションの場合は、[インターネット] ゾーンを使用できます。
セキュリティ アクセス許可の設定
常に、コード アクセス セキュリティ アクセス許可を制限する適切なゾーンを要求するように ClickOnce アプリケーションを設定する必要があります。セキュリティ アクセス許可は、プロジェクト デザイナーの [セキュリティ] ページで設定できます。
プロジェクト デザイナーの [セキュリティ] ページには、[ClickOnce セキュリティ設定を有効にする] チェック ボックスがあります。このチェック ボックスをオンにすると、アプリケーションの配置マニフェストにセキュリティ アクセス許可の要求が追加されます。インストール時に、この要求アクセス許可がアプリケーション配置元ゾーンの既定のアクセス許可を上回っていれば、アクセス許可を付与するようユーザーにプロンプトが出されます。詳細については、「方法 : ClickOnce のセキュリティ設定を有効にする」を参照してください。
アプリケーションの配置元が異なれば、付与されるアクセス許可のレベルも異なり、それに関してプロンプトは表示されません。たとえばインターネットからアプリケーションが配置される場合、かなり制限されたアクセス許可セットがアプリケーションに付与されます。ローカル イントラネットからインストールされる場合は付与されるアクセス許可が拡大し、CD-ROM からインストールされる場合は完全信頼のアクセス許可が付与されます。
アクセス許可を設定する開始点として、[セキュリティ] ページの [ゾーン] のリストからセキュリティ ゾーンを選択できます。アプリケーションが複数のゾーンから配置される可能性がある場合は、アクセス許可が最も少ないゾーンを選択します。詳細については、「方法 : ClickOnce アプリケーションのセキュリティ ゾーンを設定する」を参照してください。
設定できるプロパティはアクセス許可セットによって異なります。すべてのアクセス許可セットが設定できるプロパティを持つわけではありません。アプリケーションで要求できるアクセス許可の一覧の詳細については、「System.Security.Permissions」を参照してください。カスタム ゾーンのアクセス許可を設定する方法の詳細については、「方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する」を参照してください。
制限されたアクセス許可を持つアプリケーションのデバッグ
多くの場合、開発者は完全信頼のアクセス許可で開発用コンピューターを動作させます。そのため、アクセス許可が制限されたアプリケーションを実行するユーザーに表示されることがあるセキュリティ例外を、アプリケーションのデバッグ時に見ることはありません。
これらの例外をキャッチするには、エンド ユーザーと同じアクセス許可を使用してアプリケーションをデバッグする必要があります。制限されたアクセス許可を使用したデバッグは、プロジェクト デザイナーの [セキュリティ] ページで有効にできます。
制限されたアクセス許可を使用してアプリケーションをデバッグすると、[セキュリティ] ページで有効にされていないコード セキュリティ要求に対して例外が発生します。例外ヘルパーが表示され、例外が発生しないようにするためのコードの変更案が示されます。
また、コードの作成時に、設定済みのセキュリティ アクセス許可に含まれないメンバーは、コード エディターの IntelliSense 機能により無効にされます。
詳細については、「方法 : アクセス許可が制限された ClickOnce アプリケーションをデバッグする」を参照してください。
ブラウザーによってホストされるアプリケーションのセキュリティ アクセス許可
Visual Studio では、Windows Presentation Foundation (WPF) アプリケーションとして次のプロジェクトの種類を使用できます。
WPF Windows アプリケーション
WPF Web ブラウザー アプリケーション
WPF カスタム コントロール ライブラリ
WPF サービス ライブラリ
これらのプロジェクトの種類のうち、WPF Web ブラウザー アプリケーションだけが Web ブラウザーでホストされます。したがって、WPF Web ブラウザー アプリケーションは、配置とセキュリティに関して特別な設定を必要とします。この種類のアプリケーションの既定のセキュリティ設定は、次のとおりです。
[ClickOnce セキュリティ設定を有効にする]
[これは部分的に信頼するアプリケーションです]
[インターネット] ゾーン (WPF Web ブラウザー アプリケーションの既定のアクセス許可セットが選択された状態)
[セキュリティの詳細設定] ダイアログ ボックスの [このアプリケーションを選択されたアクセス許可のセットでデバッグする] チェック ボックスはオンになっていて使用不可です。ブラウザーによってホストされるアプリケーションの場合は、[ゾーン内でデバッグ] をオフにできないからです。詳細については、「WPF XAML ブラウザー アプリケーションの概要」を参照してください。
参照
処理手順
方法 : ClickOnce のセキュリティ設定を有効にする
方法 : ClickOnce アプリケーションのセキュリティ ゾーンを設定する
方法 : ClickOnce アプリケーションのカスタム アクセス許可を設定する
方法 : アクセス許可が制限された ClickOnce アプリケーションをデバッグする