連載
|
![]() |
|
|
|
信頼された発行元か?
次にClickOnceアプリが信頼された発行元かをチェックする。信頼された発行元かどうかの判定は、「信頼できる組織が発行したデジタル証明書で、そのClickOnceアプリが署名されているかどうか」によって決まる。信頼できる組織とは、主にVeriSignなどの第三者機関である(証明書による署名について詳しくは後述する)。
発行元が完全に信頼できる場合、アプリケーションはそのまま実行される。「完全に信頼できる」とは、ユーザーごとにWindowsにより管理されている「信頼されたルート証明機関」と「信頼された発行元」にその証明書が登録(=インストール)されている状態である(なおVeriSignが発行した証明書はデフォルトで「信頼されたルート証明機関」に登録されているので、実質的には「信頼された発行元」にだけ登録すればよい)。従って、単にClickOnceアプリを証明書で署名しただけでは、そのまま起動されずに、以降のセキュリティ検証処理は行われるので注意してほしい。
なお、証明書の登録方法については、「ClickOnce! オンライン・デモ ― 警告メッセージを表示せずに直接実行するには?」で説明しているので本稿では割愛する。
ゾーンごとのCAS制限を超えたアクセス許可は要求しないか?
その次に、ClickOnceアプリが要求する権限(以降、ClickOnceアプリの権限要求)が、ゾーンごとに設定されているコード・アクセス・セキュリティ(以降、CAS)の制限(以降、ゾーンごとのCAS制限)を超えていないかどうかが検証される。
|
【コラム】コード・アクセス・セキュリティ(CAS)とは?
.NET FrameworkのCLR上で動作するアプリケーションは“サンドボックス”(sandbox)内で実行される。サンドボックスとは、すなわち「砂場の中でしか子供を遊ばせない」のと同じように、プログラムの実行を保護された領域内でのみ許可することで、外の世界へ悪影響が及ぶのを防ぐセキュリティ・モデルのことである。 CASはまさにこのセキュリティ・サンドボックスを実現する機能で、.NET FrameworkのCLRに標準搭載されているものだ。CASのおかげで、.NETアプリケーションが(外部リソースなどを操作する)コードにアクセスする権限(つまりコードの実行権限。以降、アクセス許可)を細かく管理できるようになっている。例えば「自分のプログラムから、レジストリを操作するメソッド(コード)を許可できるようにするか、できないようにするか」というレジストリ操作コードへのアクセス許可を管理できるわけだ。 .NET FrameworkのCASによるアクセス許可セット(=アプリケーションが実行できる機能)は、起動元(もしくはダウンロード元)のURLが所属するゾーン(インターネット、イントラネット、ローカル・コンピュータ、信頼済みサイトなど)に基づいて自動的に決定される。例えばClickOnceアプリが、インターネット上から実行/インストールされた場合は「インターネット・ゾーン」、共有フォルダ上から実行/インストールされた場合は「イントラネット・ゾーン」となる。 |
実行しているアプリケーションが「ネットワーク上から起動するモード」(以降、オンライン・モード)の場合、もしClickOnceアプリの権限要求がゾーンごとのCAS制限を下回っている(CAS制限の範囲内)なら、何も表示せずにClickOnceアプリが起動される。一方、「ローカル環境へインストールするモード」(以降、インストール・モード)の場合は、そのように下回っているときでも、以降の処理に進むので注意が必要だ。
なおClickOnceアプリの権限要求には、次の2つのモードが用意されている。
- 完全信頼(Full Trust)
- 部分信頼(Partial Trust)
完全信頼の場合は(基本的に)すべてのアクセス許可を要求するので、必然的にゾーンごとのCAS制限を超えてしまう。従って、ほぼ必ず次の処理に進むことになる。部分信頼の場合は、ゾーンごとのCAS制限を超えるか下回るかは、権限要求の設定(詳細後述)によって変わってくる。
セキュリティ警告をユーザーに表示。「権限の昇格」が承認されたか?
検証処理の最後には、「ゾーンごとのCAS制限で認められていない権限を要求するClickOnceアプリを実行してもよいかどうか」をユーザーに問い合わせる、次のようなダイアログが表示される。
![]() |
| アプリケーションの実行をユーザーに問い合わせるダイアログ |
| [アプリケーションのインストール − セキュリティの警告]ダイアログが表示されているところ。詳しくは「第1回 ClickOnceの基本動作を見てみよう」を参照されたい。 深刻な警告を通知する場合には、左下の盾マークが赤色 |
ここで[インストール]ボタンや[実行]ボタンをクリックすると、そのClickOnceアプリの権限要求を認めることになる。このことを「権限の昇格」と呼ぶ。
赤色の盾
マークは「深刻な警告メッセージ」を意味し、それが表示された場合は、プログラムをインストールもしくは実行しないように、エンド・ユーザーに徹底しておいた方がよい。また「軽度の警告メッセージ」を意味する黄色の盾
マークが表示された場合は、比較的安心できるアプリケーションといえる。
表示される警告メッセージの種類は、
-
インストール・モードかオンライン・モードか、
-
ClickOnceアプリの権限要求がCAS制限を越えるか以下か、
-
ClickOnceアプリを署名している証明書はユーザーのクライアント・コンピュータに登録済みかどうか(厳密にいうと、まずは「信頼されたルート証明機関」、次に「信頼された発行元」に登録されているか)
によって、変わってくる。それをまとめたのが次の表だ。
| モード | 権限要求 | 信頼されていない証明書 | 信頼されたルート証明機関に登録済み証明書 | 信頼されたルート証明機関に登録済みで、信頼された発行元にも登録済みの証明書 |
| インストール | CAS制限超越 | 発行元に関する警告+権限の昇格に関する警告 |
権限の昇格に関する警告 |
直接起動 |
| CAS制限以下 | 発行元に関する警告+権限の昇格に関する警告 |
権限の昇格に関する警告 |
直接起動 | |
| オンライン | CAS制限超越 | 発行元に関する警告+権限の昇格に関する警告 |
権限の昇格に関する警告 |
直接起動 |
| CAS制限以下 | 直接起動 | 直接起動 | 直接起動 | |
| 表示される警告メッセージの種類 | ||||
| 表示される警告メッセージの内容をまとめた。「直接起動」とは警告メッセージを表示せずに起動するモードのことで、権限の昇格が自動的に行われることに注意してほしい。 以下は表中にある用語と実際のメッセージの対応付け。 ・発行元に関する警告:発行元を確認できません。 ・権限の昇格に関する警告:インストール・モードの場合「このアプリケーションをインストールしますか?」。オンライン・モードでは「このアプリケーションを実行しますか?」。 |
||||
この表を見ると分かるように、警告メッセージを表示しないようにするには、(先ほどの証明書のチェックでも述べたように)「信頼されたルート証明機関」と「信頼された発行元」の両方に証明書を登録しなければならない。さらにオンライン・モードのClickOnceアプリでは、ClickOnceの権限要求がゾーンごとのCASの制限を下回っていれば、警告メッセージが表示されない。
逆に、ClickOnceアプリを署名した証明書が「信頼されたルート証明機関」にさえも登録されておらず、さらにClickOnceの権限要求がゾーンごとのCASの制限を上回っていれば、常に赤い盾
マークの深刻な警告メッセージが表示されてしまうので、このようなClickOnceアプリの配置は避けたい。
以上が一連のセキュリティの流れだ。このような仕組みによってClickOnceは、信用できないサイト上のハイパーリンクをクリックしてClickOnceアプリを起動しようとした際には、(セキュリティの危険性をユーザーに知らせないまま)そのリンク先のClickOnceアプリが即座に実行されるのをブロックしてくれる(例えば「Yahoo!」と書いたハイパーリンクの先が悪意を持ったアプリケーションに結びつけられたしても直接実行されることはない)。
次にセキュリティの実践的な内容として、証明書による署名方法とClickOnceの権限要求の設定方法について説明しよう。
| INDEX | ||
| ClickOnceの真実 | ||
| 第7回 ClickOnceが持つセキュリティ機構とは? | ||
| 1.セキュリティの仕組み(1) | ||
| 2.セキュリティの仕組み(2) | ||
| 3.ClickOnceセキュリティの設定方法 | ||
| 4.ClickOnceの将来展望 | ||
| 「ClickOnceの真実」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
は.NET開発者中心に生まれ変わりました
スポンサーからのお知らせ
.NET開発者中心コーナー
- - PR -
イベントカレンダー
- - PR -



