IIS 7.0 での機能の委任の概要

発行日 : 2007 年 11 月 23 日 (作業者 : saad(英語))
更新日 : 2008 年 3 月 19 日 (作業者 : saad(英語))

はじめに

次のいずれかに該当する場合、IIS 7.0 の機能の委任に興味をお持ちになるでしょう。

  • サーバー管理者であるが、サーバーにコンテンツを提供する主たるユーザーでない場合。
  • 開発者であり、サーバー管理者からアプリケーションの IIS 7.0 構成の管理権限がより多く付与されることを望む場合。

この記事には次のような内容が含まれています。

  • 構成セクションのロック (appcmd)
  • 構成セクションのロック (IIS マネージャー)
  • IIS マネージャー - サイトおよびアプリケーションの管理者の作成
  • IIS マネージャー - サイトおよびアプリケーションの管理者による接続の有効化
  • テスト 

IIS 7.0 の既定の構成では、開発者/サイト所有者は、既定のドキュメント、ディレクトリ参照、HTTP 応答ヘッダー、HTTP リダイレクト、ハンドラーおよびモジュールの構成を、自分の web.config ファイルに入れることができます。これはサーバー管理者にとっても便利です。これにより開発者は、サーバー管理者の作業を必要とせずに、"start.aspx" を既定のドキュメントとして構成したり、www.contoso.com/techcareers/ に対するすべての要求が www.contoso.com/careers/technical/ にリダイレクトされるようにサイトの URL 構造を変更したりすることができます。

これは、より多くの構成をロック解除することで実現されます。たとえば、カスタム エラー構成をロック解除できます。これにより開発者は、すべての 404 が www.contoso.com/NotFound.aspx にリダイレクトされるように指定することが可能になります。また、失敗した要求のトレース構成をロック解除すると、開発者は、*.axd ページがステータス 500 を返す場合に、その 500 要求をトレースすることが可能になります。

IIS 7.0 の新しい構成では、開発者やサイト所有者はメタベースを変更する必要がありません。構成の変更は、ASP.NET の構成と同じく web.config 内に直接記述することができます。これにより、さまざまな問題を解決できます。たとえば、IIS 7.0 のカスタム構成を変更するためのアプリケーションの MSI を記述する必要がなくなったり、アプリケーション設定用のマニュアル手順を作成する必要がなくなったり、1 年前に運用サーバーで構成したアプリケーションの詳細構成を思い出す必要がなくなります。
IIS 7.0 の機能の委任により、以下を管理できます。

  • web.config で設定可能な構成を制御するための構成セクションのロック (通常、1 つの IIS 7.0 構成セクションは 1 つの IIS モジュールに相当します)。
  • 構成を表示し、ロックされていない構成セクションを持つ機能に対して構成を設定する、IIS 7.0 マネージャーの使用を許可されたサイト ユーザーとアプリケーション ユーザー。

構成セクションのロック (appcmd)

: この記事では、"構成ロック" という語は構成セクションの overrideMode を指します。また、構成ロックだけでは構成システムをセキュリティで保護できないため、ACL 構成ファイルを適切に設定する必要があります。ロックと ACL ファイルの設定を併用することで、構成セキュリティ計画は完全なものになります。

構成ロックは、IIS 7.0 マネージャーまたは appcmd を使用して管理できます。まず appcmd を使用する方法を説明します。appcmd を使用する場合、まずコマンド プロンプトで inetsrv ディレクトリを path に追加して、どこからでも appcmd を使用できるようにします。

: ビルトイン Administrator アカウントで実行していない場合は、管理者特権のコマンド ウィンドウで以下のコマンドを実行します。

set path=%path%;%windir%\system32\inetsrv

appcmd ではロックを操作できるだけで、構成セクションの現在のロック状態は表示されません (それには IIS 7.0 マネージャーを使用する必要があります)。すべてのサイトに対してカスタム エラー構成をロック解除する方法を以下に示します。

appcmd unlock config –section:httpErrors

IIS 7.0 を初めて使用するユーザーは、カスタム エラーの構成セクションが httpErrors であることをどうやって知るのかと疑問に思うかもしれません。次に、%windir%\system32\inetsrv\config\schema\IIS_schema.xml ですべての IIS 7.0 構成を検索します。

このスキーマ ファイルをメモ帳で開き、Ctrl + F キーを押して、既知の構成プロパティまたはその機能に関連する語を入力して検索します。まず「customerror」を試します。何も見つからない場合は、次に「errors」を試します。3 つめにセクション "system.webServer\httpErrors" が見つかります。

すべてのサイトではなく 1 つのサイトに対してのみカスタム エラー構成をロック解除する場合、以下の appcmd コマンドを使用します。以下の例では、構成のロック解除の対象として "Default Web Site" を指定していします。

appcmd unlock config "Default Web Site" –section:httpErrors

もう 1 つ基本的なことを説明します。すべてのサイトに対してカスタム エラー構成をロック解除し、ただし例外として "UntrustedSite" というサイトにはロック解除を適用したくない場合を考えます。この場合、すべてのサイトのコンテンツ発行者は web.config ファイルにカスタム エラー構成を記述することができますが、UntrustedSite の発行者はそこから除外されます。そのためには、次のコマンドを使用します。

appcmd unlock config –section:httpErrors

appcmd lock config "UntrustedSite" –section:httpErrors

これで、appcmd を使用した構成セクションのロックおよびロック解除は完了です。

構成セクションのロック (IIS マネージャー)

次に、IIS 7.0 マネージャーで同じ作業を実行します。

1.  IIS 7.0 マネージャーを開き ([スタート][ファイル名を指定して実行] の順にクリックして**「inetmgr」と入力**)、左側のツリー ビューでローカル サーバーへの接続をクリックします。機能の一覧を下にスクロールして [機能の委任] を見つけ、ダブルクリックして開きます。 Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 1(ja-jp,TechNet.10).jpg

 

2.[機能の委任] ページに、すべての機能、およびすべてのサイトに対する既定の委任状態が表示されます ("機能" とは、ホーム ページの機能リストに表示されるすべての項目を指します)。委任ごとにグループ化します。

Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 2(ja-jp,TechNet.10).jpg

3.  Windows 認証、IPv4 アドレスおよびドメインの制限など、IIS 7.0 のほとんどの機能は読み取り専用に設定されています。一方、フォーム認証、コンピューター キー、セッション状態などの ASP.NET の構成は読み取り/書き込みに設定されています。

注 : Windows 認証、圧縮、IP およびドメインの制限などの機能は、インストールされている場合に限り表示されます。

4.  機能をクリックすると、右の操作ウィンドウに委任オプションが表示されます。

Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 3(ja-jp,TechNet.10).jpg

エラー ページは読み取り/書き込みに設定できます。

  • 読み取り/書き込みとは、機能の構成セクションがロック解除されていて、web.config で構成できることを示します。

  • 読み取り専用と委任の削除は両方とも、機能の構成セクションがロックされていて、ランタイム エラーなしに web.config で構成できないことを示します。

ここでは、前述の appcmd と同じ作業を実行します。委任状態を変更すると、すべてのサイトに対する既定の委任が変更されます。

 5.  1 つのサイトのみの委任を構成する場合は、作業ウィンドウ上部にある [カスタム サイト委任] リンクをクリックします。 Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 4(ja-jp,TechNet.10).jpg

[カスタム サイト委任] ページが表示されます。ここでは、1 つのサイトに対して委任をカスタマイズできます。このページは、上部のドロップダウンで委任を構成するサイトを選択できる点を除き、[機能の委任] ページとほぼ同じです。このページではサイト間で委任をコピーできるため、新規サイトに適用する委任と同じ委任を持つサイトが既にある場合、時間を節約できます。

Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 5(ja-jp,TechNet.10).jpg  

IIS マネージャー - サイトおよびアプリケーションの管理者の作成

ここまでは、開発者 (またはコンテンツ プロバイダーやサイト所有者) が web.config ファイル内に「何を」構成できるかを制御する方法について説明してきましたが、ロック解除された後、「どのように」構成を設定するかについてはまだ説明していません。ASP.NET および他のフレームワークの構成には Visual Studio が便利であり、特に IntelliSense は大変役に立ちます。残念なことに、IIS 7.0 の構成セクション用には IntelliSense は使用できません (近い将来、この機能が搭載されることを期待します)。メモ帳を使用できますが、メモ帳にはこのような便利な機能は搭載されておらず、ユーザーの記憶力やタイピング スキルが頼りです。

IIS 7.0 では、サーバー管理者は IIS 7.0 マネージャーを構成して、管理者以外のユーザーがサイトまたはアプリケーションに接続し、それぞれの web.config ファイルで構成を設定することを許可できます。これを行なうには、次の 2 つの手順を実行します。

  1. サイトまたはアプリケーションに接続できるユーザーを指定します。
  2. ユーザーがローカルでない場合は、Web 管理サービス (WMSVC) を起動してリモート接続を有効にします。

サイトおよびアプリケーションの管理者の作成を開始します。

1.[Default Web Site] に移動して [IIS マネージャーのアクセス許可] を見つけ、ダブルクリックして開きます。Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 6(ja-jp,TechNet.10).jpg

2.作業ウィンドウで [ユーザーの許可] をクリックし、既定の Web サイトに新規ユーザーを追加します。Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 7(ja-jp,TechNet.10).jpg

3.  Windows のユーザーまたはグループ、IIS 7.0 マネージャー ユーザーの 2 つのオプションがあります。

IIS 7.0 マネージャー ユーザーとは、%windir%\system32\inetsrv\config\administration.config に格納されているユーザー名とパスワードです。ほとんどの場合、Windows ユーザーを選択する必要があります。たとえば、ファイル共有または FTP を介してコンテンツを Web サーバーに直接発行する開発者は、既にコンテンツ フォルダーへの読み取り/書き込みアクセス許可を持っています。構成変更を行う際、IIS 7.0 マネージャーはこのユーザーを偽装するため、Windows ユーザー アカウントには、web.config ファイルが書き込まれるコンテンツ フォルダーに対する読み取り/書き込みアクセス権が必要です。

他方、コンテンツ プロバイダーはステージング サーバーに発行し、コンテンツはステージング サーバーからサーバー ファームに複製されることがあります。この場合、コンテンツ プロバイダーは運用サーバーへのアクセス権を持っていません。つまり、追加するべき Windows アカウントが存在しません。この場合は、IIS 7.0 マネージャー ユーザーを作成します (サイト管理者としてのユーザー名/パスワードを追加します)。これにより、このエンド ユーザーがサーバー上の Windows ユーザーでなくても、アプリケーション構成の表示を許可することができます。

既定の Web サイトに対して、Windows ユーザー (非管理者) をサイト管理者として追加します。これでサイト管理者が作成されました。ただし、このサイト管理者はまだサーバーに接続できません。これについては、以降で説明します。

IIS マネージャー - サイトおよびアプリケーションの管理者による接続の有効化

最初に、Web 管理サービス (WMSVC) をインストールします。

1.  サーバー マネージャーを開き ([コンピューター] を右クリックして [管理] をクリック)、Web サーバーの役割を選択して、[管理ツール] ノードから [管理サービス] コンポーネントをインストールします。Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 8(ja-jp,TechNet.10).jpg

Web 管理サービス (WMSVC) は、簡素なスタンドアロンの Web サーバーです。インストールして起動すると、WMSVC はポート 8172 でリッスンします。ユーザーが操作する際は、ボタンやテキスト ボックスの UI を備えた IIS 7.0 マネージャーをクライアントとして使用します。このクライアントは HTTP によって通信し、Web サービスを介して WMSVC を呼び出します。WMSVC は、構成プロパティの設定や Web サイトの停止などの操作を実装するロジックをホストします。

2.  サーバーのホーム ページに移動して [管理サービス] ページを開きます。[管理サービス] を見つけて、ダブルクリックして開きます。

Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 9(ja-jp,TechNet.10).jpg

a. リモート管理を有効にして、WMSVC がローカル サーバーで生成された要求だけでなく、すべての要求を処理できるようにします。WMSVC の実行中は構成できないため、HTTPS バインドと IP およびドメインの制限を確認し、他の変更が必要かどうかを決定します。

b. 操作ウィンドウで [開始] をクリックして WMSVC を開始します。WMSVC は、既定では未割り当てのすべての IP アドレスをリッスンします。Web サーバーに複数のネットワーク カード (NIC) がある場合、WMSVC に特定の 1 つの NIC でリッスンさせるには、そのように明示的に構成する必要があります。

Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 10(ja-jp,TechNet.10).jpg

この時点で、WMSVC はポート 8172 でリッスンして、管理要求を待機しています。

D:\>netstat -a | findstr 8172

  TCP    172.30.188.74:8172              alexise-fs:0           LISTENING

テスト 

構成がすべて完了したので、機能するかどうかテストします。ローカル サイトおよびアプリケーション管理者の操作は WMSVC を介してルーティングされるため、まずローカル サーバーで正常性チェックを実行します。

正しく機能したら、次にリモート コンピューターから接続します。

1.  ツリー ビュー最上部の [接続] アイコンの横にあるドロップダウン矢印をクリックして、[サイトに接続] を選択します。Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 11(ja-jp,TechNet.10).jpg

2.  2 番目のページで、サーバー名として**「localhost」、サイト名として「Default Web Site」**と入力します。
3.  資格情報のページで、前にサイト管理者として追加した Windows ユーザーの資格情報を入力します。接続に成功したら、ウィザードの最終ページで、接続に名前を付けることができます。

新しい接続は、以下のスクリーン ショットのようになります。ツールの右下隅に、ポート 8172 で Alexis として localhost に接続されていることが示されています。ロック アイコンは接続が SSL 経由であることを示しています。ツリー ビューの接続名の後ろのカッコ内にユーザー名が表示されます。

作業ウィンドウにはいくつかのサイト タスクが表示されていません。これは、サイトおよびアプリケーションの管理者は、管理操作 (applicationHost.config ファイルに格納されているサイト バインドの管理など) の実行を許可されていないためです。

Ee175735.An Overview of Feature Delegation in IIS 7.0 - Figure 12(ja-jp,TechNet.10).jpg