IIS 7 の構成システム

公開日: 2007 年 12 月 22 日 (作業者: iisteam (英語))

更新日: 2007 年 12 月 22 日 (作業者: iisteam (英語))

概要

IIS 7 では、新しい管理関連機能の中核として最新の構成システムが導入されています。この構成システムは、クリア テキストの分散 XML ファイルをベースとしており、分散 XML ファイルには (IIS や ASP.NET、および FTP 7.0 などのコンポーネントを含む) Web サーバー プラットフォーム全体の構成設定が保存されています。また、分散 XML ファイルは、コンテンツ ディレクトリ内に Web コンテンツといっしょに配置できます (ただし、該当レベルでロックが解除されている必要があります)。FTP 6.0 の構成設定はメタベースに保存される点に注意してください。

コンピューターの管理者は、構成階層の各レベルを、サイトの所有者やアプリケーション開発者など他のユーザーに委任することができます。セキュアな既定の設定や標準ロックダウンを使用すると、構成設定に書き込みできるユーザーがコンピューターの管理者に制限されます (既定のドキュメントなど、一部のサイト固有の設定は除く)。ただし、各々の Web 名前空間では、高度かつ詳細なロック機能を使って、安全にロックの解除を行ったり、より多くのユーザーに対して一部の構成設定の管理を委任したりすることができます。このシステムは、API レベルで IIS の旧バージョンと下位互換性があります (メタベース互換性レイヤーがインストール済みの場合)。

ルート (あるいはグローバル) レベルには、次の 2 つのファイルがあります。

  • system32\inetsrv\config\applicationHost.config: Web サーバー (IIS) の設定のグローバル既定値を保持します。
  • \windows\microsoft.net\framework\v2.0.50727\config\machine.config: .NET Framework の設定のグローバル既定値を保持します。一部の ASP.NET 設定も保持します (その他の ASP.NET 設定は、同じフォルダー内の web.config (ルート web.config とも呼ばれる) に保存されます)。   

このように 2 つの別々のファイルが存在するのは、上記の 2 つのテクノロジーの (スケジュールおよび製品に関する) バージョンが異なるためです。IIS は Windows の一部ですが、.NET Framework は単独でバージョン設定される場合があります。

Web コンテンツ ディレクトリでは、任意で web.config ファイルを作成して、その階層レベルおよび配下のディレクトリの動作を制御することが可能です。このファイルは、ローカルでも (たとえば、コンテンツ ディレクトリが UNC 共有にある場合は) リモートでも機能します。web.config ファイルには、その階層レベルに対して指定する IIS、ASP.NET、その他の .NET Framework 構成設定を含めることができます。既定では、web.config ファイルは存在しません。

階層

継承の階層については、最上位のファイルは machine.config、続いて同じディレクトリの web.config ("ルート web.config")、そして applicationHost.config、最後に、任意で作成する名前空間を持った web.config ファイルという順になります (下図を参照)。Ff454047.iis config files(ja-jp,TechNet.10).jpg

セクション

構成ファイル内は、設定は "セクション" と呼ばれる単位を基に構造化されています。構成セクションは論理的に関連のある設定のグループであり、そのセクション全体を展開したり、システムから登録解除したりすることができます。セクションは通常 1 つのサーバー モジュールによって使用されます。

つまり、ワーカー プロセスで実行されるランタイム モジュールのほとんどが、対応する構成セクションを持っています。構成セクションは拡張の単位でもあります。構成スキーマに新しい設定を追加するには、既存のセクションを拡張するか、1 つまたは複数のセクションを追加します。

セクションはさらに "セクション グループ" と呼ばれる論理的に関連のあるコレクションにグループ化されます。ただし、セクション グループを単位として展開、登録、その他の重要な操作 (ロック、暗号化など) を実行することはできません。また、セクション グループには設定を格納できません。セクション グループの目的は、設定を構造化して、構成セクションが長々しいフラットな一覧になることを防ぐことです。セクション グループによって設定が階層化され、グループ間の親子関係が定義されます。

セクション グループはネストされます。セクションは常に単一のセクション グループに所属し、他のセクション (あるいはセクション グループ) をネストすることはできません。一方、セクション グループは上位セクション グループに含めたり、下位セクション グループを含めたりすることができます。一般に、セクション グループには複数のセクションが格納されます。単一のセクションしか格納しないのであれば、そもそもセクション グループを作成する意味がありません (ただし、ユーザーは目的は何であれ、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 -->
      <basicAuthentcation .../>
      <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]

その他のマイクロソフト

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 やその他のスキーマ ファイルを編集しないでください。誤った操作により、スキーマが破損し、サーバーを起動できなくなるおそれがあります。

メモ: 従来のファイル アクセス 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 にもスキーマが格納されます。