エンタープライズ:特集 | 2003/07/09 11:00:00 更新 |
ノータッチ・デプロイメントによるシームレスなアプリケーションの作成 (1/2)
「ノータッチ・デプロイメント」とは、開発したアプリケーションをInternet Information Services(IIS)の仮想ディレクトリ上に配置し、そこからアプリケーションを配布する方法だ。「.NET Framework」がインストールされ、ネットワーク接続が可能なクライアントからならば、どこからでもそのアプリケーションをインストールしたり、実行することができる。ここでは、同配布方法とそのセキュリティに関して解説していこう。
ノータッチ・デプロイメントとは
最近ではWebアプリケーションが普及し、ローカル環境で実行されるアプリケーションの地位を脅かしつつあるようだ。開発者や利用者の視点から見た場合の、Webアプリケーションの利点とは、
- Webアプリケーションはローカルマシンへのインストールが不要
- アプリケーションの実行環境への影響が少ない(インストール後にPCが起動しなくなったなど)
- 基本的に、その動作条件が実行環境に依存しない
といったところだろうか。一方、ローカル環境で実行されるアプリケーション(以下、ローカル・アプリケーション)はというと、とくに業務アプリケーションにおいては、上記利点がそのままその欠点へと繋がっている。ローカル・アプリケーションの場合は、
- インストールが必要
- 実行環境への影響を与える可能性がある(インストール後に別のアプリケーションが起動しないなど)
- 動作条件が実行環境に依存する場合がある(特定バージョンのDLLに依存する“DLL-Hell”の存在など)
などが欠点となる。
.NET Frameworkや「.NETマネージドコード」を活用することによって、上記ローカル・アプリケーションの問題を解決、もしくは緩和し、Webアプリケーションと同様にインストール、実行する環境を提供する配布方法がノータッチ・デプロイメント(以下NTD)である。
部分信頼とゾーン
.NETマネージドコードは部分信頼状態で実行される。これは、実行されるアプリケーションによる、
- ネットワーク・アクセス
- ディスク・アクセス
- レジストリ・アクセス
- プリンタへのアクセス
- クリップボードへのアクセス
- 保護されたリソースへのアクセス
を制限するものである。これらの制限は以下のゾーンによって異なるものが設定されている(表1)。
表1■ゾーンごとの実行権限設定ゾーン | 説明 | 制限 |
Internet | インターネットからダウンロードされた場合 | 全てのリソースへのアクセス禁止 |
Intranet | イントラネット内からダウンロードされた場合 | ディスク、レジストリへのアクセス禁止 |
MyComputer | ローカル環境からダウンロードされた場合 | 制限なし |
Trusted | 信頼されたWebサイト(インターネット、イントラネット含む)からダウンロードされた場合 | Internetゾーンより緩和された制限が課せられる |
Untrusted | 信頼されていない(Untrustedと指定された)サイトからダウンロードされた場合 |
実行不可 |
この設定がどのようなものなのか確認してみよう。.NET Frameworkがインストールされている場合は、スタートメニューにある「プログラム」−「管理ツール」(Windows XPなら「コントロールパネル」−「パフォーマンスとメンテナンス」−「管理ツール」)にある「Microsoft .NET Framework 1.1 ウィザード」をクリックすると、《画面1》が表示される。ここで「.NET セキュリティの変更」をクリックすると画面2が表示され、ウィザード形式でセキュリティポリシーを設定していくわけだ。セキュリティポリシーを変更したときに影響する範囲は、画面上で説明されている通りだ。まずここでは、「現在のユーザーへの変更のみ行う」を選択しよう。「次へ」をクリックすると《画面3》が表示される。
ここで各ゾーンを選択し、信頼レベルを変更することになる。ただし、ここではあらかじめセキュリティレベルの上限が決められており、「信頼されないサイト」に対して「完全な信頼」を与えるといったような、セキュリティ上問題のあるような設定は行えないようになっている。
ここで設定を行い、「次へ」をクリックすると《画面4》のような確認画面が表示され、設定が反映されることとなる。
それでは、実際にリソースが使用できるかどうかを実際のプログラムから確認してみよう。
サンプルプログラムで見るノータッチ・デプロイメントの実際
では、簡単なプログラムを作成して、ノータッチ・デプロイメントの機能を把握していこう。今回は次の機能を持つプログラム(NoTouch.exe)を利用する。
- 動作マシン上の全ドライブを取得、表示する。
- 動作マシン上のレジストリHKEY_LOCAL_MACHINEを取得、表示する。
- ZDNetのindex.htmlを取得、コードを表示する。
それぞれの動作は読み込みのみだが、ディスク、レジストリ、ネットワーク(Webサイト)へのアクセスを実行し、その結果を観察することによってその動作を確認するのが狙いだ。
まず素直にローカル環境から、その実行ファイルまでのパスを入力することによって起動させてみる。スタートメニューにある「ファイル名を指定して実行」にプログラムまでのフルパスを記述する(《画面5》)。まず実行画面が表示され(《画面6》)、「OK」ボタンをクリックすることにより処理が開始される。また、このときのタスクマネージャの画面(《画面7》)から、プロセスのイメージ名に「NoTouch.exe」が表示されていることが確認できる。個々での実行結果は《画面8》の通りである。それぞれの機能が取得した情報がすべて表示されていることが確認できる。
[YMz,ITmedia]