Insider's EyeWindows .NET Serverを支えるIIS 6.0(2)
|
|
Michael Cherry 2002/07/26 Copyright(C) 2002, Redmond Communications Inc. and Mediaselect Inc. |
新しいIISアーキテクチャ
MicrosoftはIIS 6.0のコンポーネント化を慎重に進め、アプリケーションレベルのコードの信頼性およびパフォーマンスの改善と、Webサーバのコアタスク(HTTPリクエストの処理)のパフォーマンス向上を図った。IIS 5.0は比較的モノリシックな(一体化された)プログラムで、大多数のHTTPリクエストと管理プロセスをWebサーバのコンポーネント内で処理する仕組みだった(新アーキテクチャについては次の図を参照)。
IIS 6.0の主要なサービスとプロセスは以下の通り。
■HTTP Listener
IIS 6.0 HTTPドライバ(HTTP.sys)はHTTPリクエスト(Webページや画像のリクエストなど)を受け取り、しかるべきWebアプリケーションに渡す。HTTP.sysはカーネルモード・ドライバだ。つまり、Windows
.NET Serverエグゼクティブ(メモリ、I/O、オブジェクトマネジャーなど、カーネル・コンポーネントの集合)の一部として動作する。
カーネルモードで動作することで、HTTP.sysは隔離され、パフォーマンスが向上し、ユーザーが記述したリクエスト処理用アプリケーションコードのエラーから守られる。
HTTPリクエストを処理するサービスを別に持つメリットの1つは、IISから切り離すことでほかのOSサービスやサーバ・アプリケーションから利用しやすくなることだ。
■ワーカープロセス
IIS 6.0はWebアプリケーション・プールごとに個別の“ワーカー”プロセス(W3WP.EXE)を起動して、ユーザー記述のアプリケーションコードをさらに隔離する。例えば、2つの異なるASP.NET
Webアプリケーションが動作している場合、両者はそれぞれ独自にASP.NETエンジン(Internet Server Application Programming
Interface[ISAPI]エクステンション)と、独自のCommon Language Runtime(CLR)、ユーザー記述の任意のアプリケーションコードで構成されるワーカープロセスを備えている。
IIS 5.0ではアプリケーションコードをメインのIISプロセス(INETINFO.EXE)と一緒に実行したり、アプリケーションの一部を別のプロセス(DLLHOST.EXE)に分離したりすることは可能だが、Webアプリケーション同士を完全に隔離することはできなかった。
IIS 6.0では、特定のアプリケーション専用に複数のワーカープロセスのグループも作成できる。こうした“Webガーデン”の各プロセスは、個別のプロセッサで実行でき、アプリケーションはマルチプロセッサ・サーバの能力をフルに活用することができる。
IIS 6.0サーバ上のアプリケーションやWebサイトを独自のプロセスでホスティングすれば、サイト管理者はアプリケーションに割り当てられたリソースを細かくコントロールすることができる。また、なんらかの問題があって不具合を起こしたアプリケーションやWebサイトを再起動する場合も、ほかのワーカープロセスに影響が及ぶことはない。
■Web Administration Service
IIS 6.0には、サーバとワーカープロセスのコンフィギュレーションに用いる新しいWeb Administration Service(WAS)が用意されている。WASはコンフィギュレーションを管理するほか、Webアプリケーションに対するリクエストが発生するまで、ワーカープロセスを起動しないように管理し、リソースの消費を抑える。WASはワーカープロセスの状態を監視して、メモリリークなどの問題を起こした場合、ユーザーに影響を及ぼさないよう自動的に再起動させる。
■XMLメタベース
Webサイトとアプリケーションのコンフィギュレーション情報を格納するメタベースは、IIS 6.0ではXMLファイル形式を採用している。従来のIISメタベースは、プロプライエタリな(独自の)バイナリ形式を使用していた。管理者やほかのプログラム(Application
Centerなど)にとって、XML形式の方がメタベースの変更やバージョンの管理、バックアップ、リストア、メタベースのエクスポート(追加されたIISサーバのコンフィギュレーションや導入のため)が容易になる。
パフォーマンスや信頼性の向上を実現するために、(複数台のWebサーバを使う)冗長なWebサーバ“ファーム”を利用している組織にとって、この点は特に重要だ。XMLメタベースファイルは、ファームの全メンバーが簡単に複製できる。
■IIS Admin Service
IIS 6.0では、Webサーバとワーカープロセスに対するIIS Admin Service(INETINFO.EXE)の重要性は低い。しかし、それでもMicrosoft
Management Console(MMC)やコマンドラインスクリプト、サードパーティ製のツールなどで、IISサーバの管理を容易にする一連のIIS Administration
Base Objects(ABO)を用意している。このサービスは、File Transfer
Protocol(FTP)、Simple Mail Transfer Protocol(SMTP)、ニュースグループのNetwork
News Transfer Protocol(NNTP)の各サービスもホストする。
セキュリティの強化
IISの安全性に対する懸念を払拭するため、Microsoftは“Trustworthy Computing”(Directions on Microsoft日本語版 2002年3月15日号「セキュリティ開発のためWindows .NET Serverの開発を一時中断」を参照)の一環としてコードを見直すとともに、デフォルトでサーバをロックダウンし、IISを(やはりデフォルトで)特権の少ないアカウントとして実行するなど、セキュリティ強化を図るいくつかの処置を講じた。
サーバのロックダウンは、管理者が必ず認識する最大の変更点だ。従来、IISのデフォルトの設定では、ASPやインターネット・プリンティングなどのサービスは、たとえユーザーが使用しない可能性があってもオンになっていた。おかげでこれらのサービスは発見しやすく、簡単に選択できたが、管理者の不注意でオンのままに放置しておくと、邪悪なコードの侵入を許す危険性があった。
新方式では、デフォルトでIISをWindows .NET Serverにインストールしない。インストール時には機能を“ロックダウン”、つまりオフにして、管理者がASPやASP.NET、FrontPage Server Extensionsなどのサービスを追加するまでは、サーバが比較的安全な静的Webページしか提供できないようにしている。
管理者はWeb Services Extension(旧称Lockdown Wizard)を用いて、簡単にIIS機能を有効にできる(概要については次の画面を参照)。
Web Services Extension |
IIS Web Services Extension(Lockdown Wizard)では、IIS 6.0サーバの機能を選択的に有効にすることができる。例えば、WebサイトでASP.NETや .NET開発プラットフォームをベースにページを構築、提供する場合、管理者はASP.NETなどのプログラミング・インターフェースを有効にしなければならない。 |
セキュリティ関連のもう1つの大きな変更は、個々のIISワーカープロセスを“NetworkService”として動作させることだ。NetworkServiceは新たに設定された特権の非常に少ないビルトイン・アカウントで、特権が少ないため、セキュリティ侵犯が発生した場合の影響を最小限に抑制できる。例えば、不正侵入したハッカーがサーバの管理特権を入手するのを防止することが可能だ。
管理者はIISの機能を選択的にオンにしなければならず、またIISは最低限の特権で動作するため、脆弱性があらわになる可能性は大幅に減少する。
互換性と成熟の問題
IIS 6.0の再設計によって生じる最大の欠点は、アーキテクチャの変更が既存アプリケーションに打撃を与える可能性があることだ。例えば、2002年2月にリリースされたばかりのASP.NET向けアプリケーションさえ影響を受けかねない。製品に占める新規コードの量から、安定性に関する疑問も浮上している。
INDEX | ||
Insider's Eye | ||
Windows .NET Serverを支えるIIS 6.0(1) | ||
Windows .NET Serverを支えるIIS 6.0(2) | ||
Windows .NET Serverを支えるIIS 6.0(3) | ||
「Insider's Eye」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|