IIS 7 の構成システム
作成者: Walter Oliver
概要
IIS 7 では、新しい管理関連機能すべての中核となる、まったく新しい構成システムが導入されています。 この構成システムは、Web サーバー プラットフォーム全体 (IIS および ASP.NET や、FTP 7.5 など他のコンポーネントを含む) の構成設定を保持する、クリアテキストの分散 XML ファイルに基づきます。これは、そのレベルでロック解除される場合には、必要に応じて Webコンテンツと共にコンテンツ ディレクトリに設定することもできます。 FTP 6.0 の構成セットはメタベースに格納されることに注意してください。
構成階層のさまざまなレベルが、コンピューター管理者によって、サイト所有者やアプリケーション開発者など他のユーザーに委任される場合があります。 セキュリティ保護された既定値とすぐに使用できるロックダウンにより、構成設定への書き込みアクセスはコンピューター管理者のみに制限されます (DefaultDocument などサイト固有のいくつかの設定が例外です)。ただし、洗練された詳細なロック機能のおかげで、安全にロック解除したり、特定の構成設定の管理を Web 名前空間のスコープに応じてより多くのユーザーに委任したりすることが可能です。 システムは、以前のバージョンの IIS と API レベルで下位互換性があります (メタベース互換性レイヤーのインストール後)。
ルート (すなわちグローバル) レベルには、2 つの異なるファイルがあります。
- system32\inetsrv\config\applicationHost.config: Web サーバー (IIS) 設定のグローバル既定値を保持します。
- \Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config: .NET フレームワーク設定のグローバル既定値 (および ASP.NET のいくつかの既定値) を保持します (その他の設定は同じフォルダー内の web.config にあり、これは ルート web.config と呼ばれることもあります)。
2 つの異なるファイルが存在する理由は、2 つのテクノロジのバージョンが異なるためです (スケジュール別および製品別)。 IIS は Windows に含まれますが、.NET Framework は個別にバージョン管理されています。
Web コンテンツ ディレクトリに、階層レベルと下位の動作を制御するオプションの web.config ファイルが存在する場合があります。 これらはローカルにすることもリモートにすることもできます (たとえば、コンテンツ ディレクトリが UNC 共有にある場合)。 これらに IIS、ASP.NET、またはそのレベルで指定できるその他の .NET Framework 構成設定を含めることができます。 既定では、web.config ファイルはありません。
階層
継承階層の観点では、次の図に示すように、ルート ファイルは machine.config、次が同一ディレクトリ内の web.config (ルート web.config と呼ばれる)、次が applicationHost.config、次が名前空間を伴うオプションの web.config ファイルです。
セクション
構成ファイル内で、設定は "セクション" という単位に基づいて構造化された方法で編成されます。 構成のセクションは、まとめて展開したり、まとめてシステムから登録解除したりできる、論理的に関連する設定のグループであり、通常は 1 つのサーバー モジュールで使用されます。
言い換えると、ワーカー プロセスで実行されるほぼすべてのランタイム モジュールには、対応する構成セクションがあります。 構成セクションは拡張の単位でもあります。構成スキーマに新しい設定を追加するには、既存のセクションを拡張するか、1 つ以上のセクションを追加します。
セクションは、"セクション グループ" と呼ばれる論理的に関連するコレクションにさらにグループ化されます。 セクション グループは、展開、登録、またはその他の重要な操作 (ロック、暗号化など) の単位ではありません。 これらには設定は含まれません。 その目的は、設定の編成をさらに構造化し、構成セクションが平面的な長い一覧にならないようにすることです。 これらは設定の階層を構築するために使用されるため、それぞれの間にリレーションシップ (親/子) が存在します。
つまり、セクション グループは入れ子にすることができます。 特定のセクションは常に 1 つのセクション グループにのみ属し、他のセクション (またはセクション グループ) を含むことはできません。 特定のセクション グループは、1 つの親セクション グループに属す場合があり、0 個以上の子セクション グループを含む場合があります。 これは通常は複数のセクションを含みますが、そうでない場合は、そもそもそれが存在することに正当な理由があります (ただし、お客様は、理由にかかわらず、1 セクションのみを含む独自のセクション グループを作成してスキーマを拡張できます)。
セクションとセクション グループについて説明するための例を次に示します。
<!-- section group for web server configuration -->
<system.webServer>
<!-- section group for web server security configuration -->
<security>
<!-- section group for web server authentication configuration -->
<authentication>
<!-- three sections for authentication -->
<basicAuthentication ... />
<windowsAutnentication ... />
<anonymousAuthentication ... />
</authentication>
</security>
</system.webServer>
すべてのセクションには名前があります。 短い名前はセクション自体の名前で、長い名前は、含んでいるすべてのセクション グループからなるフルネームです。 たとえば、"windowsAuthentication" のフルネームは "system.webServer/security/authentication/windowsAuthentication" です。 このような階層構造により、異なるセクション グループ内にあれば、将来のセクション (およびセクション グループ) に同じ名前を使用できます。
URL 名前空間のすべてのレベルに、関連付けられた構成を含めることができます。 特定のレベルの構成は、子レベルによって特にオーバーライドされない限り、子レベルに継承されます。 URL による構成を実現する簡単な方法は、仮想パスにマップされている物理ファイル システム フォルダー内の web.config ファイルを使用することです。 ルート レベル (コンピューター レベル) では、構成セクション グループに応じて個別のファイルを使用する必要があります (これはドキュメントの後半で定義しますが、現時点では、構成を含む XML 要素の名前として考えてください)。
セクション グループ | 説明 | ルート ファイル |
---|---|---|
system.applicationHost | Windows ライセンス認証システム: プロセス モデル | System32\inetsrv\config\applicationHost.config |
system.webServer | IIS: Web サーバー | System32\inetsrv\config\applicationHost.config |
system.web | ASP.NET | Windows\microsoft.net\framework\v2.0.50727\config\web.config |
System.* | その他の .NET Framework | Windows\microsoft.net\framework\v2.0.50727\config\machine.config |
[Microsoft other] | Microsoft その他 | Windows\microsoft.net\framework\v2.0.50727\config\machine.config |
[custom] | サード パーティ | machine.config またはルート web.config または applicationHost.config (サードパーティ/顧客による) |
構成の永続化形式は XML です。そのため、わかりやすいように構成の編成単位と XML 用語の対応について説明します。 セクション グループとセクションは XML 要素です。 セクション内で、設定は XML 用語と密接に対応する小さな単位に編成されます。
構成単位 | XML 用語 | 説明 |
---|---|---|
構成要素 | XML 要素 | 他の子ユニットを含みます。値はありません。 |
構成コレクション | XML 要素 | 要素のプライベート ケース: add/remove/clear の形式で要素のグループを含みます。 |
構成プロパティ | XML 属性 | 値のみを含みます。子ユニットを含みません。 |
構成システムは、その中核である宣言型スキーマから始まります。 構成スキーマは、system32\inetsrv\config\schema というよく知られた場所にある複数のファイルにまたがっています。 既定では、コンピューター管理者のみがこのフォルダーにアクセスできます。 お客様またはサードパーティは、カスタム セクション用のスキーマ ファイルをそのディレクトリにコピーして追加できます。 構成システムによって、起動時に、構成への呼び出し元のプロセスでそれらが自動的に取得されます。 構成システムが既に実行されている場合、スキーマ ファイルに対する変更内容または新しいファイルは取得されません。
このディレクトリにインストールされている、IIS またはその他のスキーマ ファイルを編集しないでください。エラーが発生してスキーマが破損したり、サーバーが起動できなくなったりする場合があります。
Note
従来のファイル アクセス API および XML 解析/編集を除いて、スキーマ ファイルの取得と設定のための高度なプログラマティック インターフェイスはありません。 変更を加える前のスキーマ フォルダーなど、影響を受けやすい状態をバックアップすることを常にお勧めします。
Web サーバー プラットフォームの統合スキーマは、次の 3 つのファイルで構成されます。
- IIS_schema.xml: Windows ライセンス認証システムおよび IIS Web サーバーの設定とセクション グループに対応します。
- ASPNET_schema.xml: セクション グループの ASP.NET 設定に対応します。
- FX_schema.xml: さまざまなセクション グループのその他の .NET Framework 設定に対応します。
IIS 7 FTP 機能をインストールした場合には、FTP_schema.xml もあります。