IIS 7の組み込みユーザーとグループアカウントの理解
IISの以前のバージョンでは、IUSR_MachineNameというローカルアカウントがインストール時に作成されました。匿名認証が有効になっている場合、IISはデフォルトでこのIUSR_MachineNameアカウントを使用していました。これはFTPおよびHTTPサービスの両方で使用されていました。
また、IIS_WPGというグループがあり、これはすべてのアプリケーションプールIDを格納するコンテナとして使用されていました。IISのセットアップ中に、システム上の適切なリソースに対してIIS_WPGグループに正しいユーザー権限が付与されたため、新しいアプリケーションプールアカウントを作成する際に、管理者はIDをこのグループに追加するだけで済みました。
このモデルはうまく機能しましたが、欠点もありました:IUSR_MachineNameアカウントとIIS_WPGグループは、作成されたシステムにローカルでした。Windows内のすべてのアカウントとグループには、それを他のアカウントと区別する一意の番号であるセキュリティ識別子(SID)が割り当てられています。ACLが作成される際にはSIDのみが使用されます。IISの以前のバージョンの設計の一部として、IUSR_MachineNameはmetabase.xmlファイルに含まれていたため、metabase.xmlをあるコンピュータから別のコンピュータにコピーしようとすると、機能しませんでした。別のコンピュータのアカウントには異なる名前が付いていたからです。
さらに、コンピュータ間で'xcopy /o'でACLをコピーできませんでした。なぜなら、コンピュータごとにSIDが異なっていたからです。回避策の1つはドメインアカウントを使用することでしたが、それにはインフラストラクチャにActive Directoryを追加する必要がありました。IIS_WPGグループもユーザー権限に関して同様の問題がありました。あるコンピュータのファイルシステムでIIS_WPGにACLを設定し、それを別のコンピュータに'xcopy /o'でコピーしようとすると、失敗しました。この経験はIIS 7以降で改善され、組み込みのアカウントとグループを使用することで向上しました。
組み込みのアカウントとグループは、オペレーティングシステムによって一意のSIDを持つことが保証されています。IIS 7以降では、さらに、新しいアカウントとグループで使用される実際の名前がローカライズされないことが保証されています。たとえば、インストールするWindowsの言語に関係なく、IISアカウント名は常にIUSRで、グループ名はIIS_IUSRSになります。
要約すると、IIS 7以降では次のようになっています:
- IUSR組み込みアカウントがIUSR_MachineNameアカウントに取って代わります。
- IIS_IUSRS組み込みグループがIIS_WPGグループに取って代わります。
IUSRアカウントは、組み込みアカウントであるため、パスワードを必要としません。論理的には、NETWORKSERVICEまたはLOCALSERVICEアカウントと同じものと考えることができます。新しいIUSRアカウントとIIS_IUSRSグループの両方が以下のセクションで詳しく説明されています。
新しいIUSRアカウントの理解
IUSRアカウントは、IIS 7以降でIUSR_MachineNameアカウントに取って代わります。IUSR_MachineNameアカウントは、Windows Server 2008に含まれているFTP 6互換サーバーをインストールした場合に引き続き作成され、使用されます。Windows Server 2008に含まれているFTPサーバーをインストールしない場合、このアカウントは作成されません。
この組み込みアカウントはパスワードを必要とせず、匿名認証が有効になっている場合に使用されるデフォルトのIDになります。applicationHost.configファイルを確認すると、次の定義が表示されます:
<anonymousAuthentication enabled="true" userName="IUSR" defaultLogonDomain="" />
これは、IISがすべての匿名認証リクエストに新しい組み込みアカウントを使用するように指示します。最大の利点は、次のことができることです:
- Windows Explorerまたは多くのコマンドラインツールを使用して、IUSRアカウントにファイルシステムの権限を設定できます。
- このアカウントのパスワードの有効期限について心配する必要がなくなります。
- ファイルを異なるコンピュータにシームレスにコピーする際に、所有権とACL情報を含めて'xcopy /o'を使用できます。
注: IUSRアカウントは、ネットワーク上で匿名として動作する点でLOCALSERVICEと類似しています。NETWORKSERVICEとLOCALSYSTEMアカウントはマシンIDとして動作できますが、IUSRアカウントはユーザー権限の昇格を必要とするため、できません。匿名アカウントにネットワーク上の権限が必要な場合は、新しいユーザーアカウントを作成し、ユーザー名とパスワードを手動で設定する必要があります。これは、過去の匿名認証で行った方法と同じです。
IIS Managerを使用して匿名アカウントにネットワーク権限を付与するには:
- 「スタート」をクリックし、「INetMgr.exe」と入力してEnterキーを押します。プロンプトが表示されたら、「続行」をクリックして権限を昇格させます。
- 「接続」セクションで、コンピュータ名の隣の「+」ボタンをクリックします。
- IIS Managerで、管理するサイトをダブルクリックします。
- 機能ビューで、「認証」をダブルクリックします。
- 「匿名認証」を選択し、「アクション」ペインで「編集」をクリックします。
- 「匿名認証資格情報の編集」ダイアログボックスで、「特定のユーザー」オプションをクリックし、次に「設定」をクリックします。
- 「資格情報の設定」ダイアログボックスで、希望するユーザー名とパスワードを入力し、OKをクリックします。
新しいIIS_IUSRSグループの理解
IIS_IUSRSグループはIIS_WPGグループに取って代わります。この組み込みグループは、アカウントがこのグループに追加された場合に、アプリケーションプールIDとしてシームレスに動作できるようにするために必要なすべてのファイルおよびシステムリソースへのアクセス権を持っています。
組み込みアカウントと同様に、この組み込みグループはいくつかのxcopy展開の障害を解決します。IIS 6.0システムで利用可能だったIIS_WPGグループのファイルに権限を設定し、それらのファイルを別のWindowsコンピュータにコピーしようとすると、グループのSIDがコンピュータ間で異なるため、サイトの構成が破損します。
IIS 7以降では、グループSIDがWindows Server 2008を実行しているすべてのシステムで同じであるため、ファイルをコンピュータ間で移動する際に、'xcopy /o'を使用してACLと所有権情報を保持できます。これにより、xcopy展開が簡単になります。
IIS 7以降では、アプリケーションプールIDの構成と必要なすべての変更を簡単に行うプロセスも改善されています。IISがワーカープロセスを開始すると、プロセスが使用するトークンを作成する必要があります。このトークンが作成されると、IISは実行時にワーカープロセスのトークンにIIS_IUSRSメンバーシップを自動的に追加します。'アプリケーションプールID'として実行されるアカウントは、IIS_IUSRSグループの明示的なメンバーである必要がなくなりました。この変更により、システムをより少ない障害で設定でき、全体的な経験がより良いものになります。
この機能を無効にして、手動でアカウントをIIS_IUSRSグループに追加したい場合は、manualGroupMembership値をtrueに設定してこの新しい機能を無効にします。次の例は、defaultAppPoolに対してこれがどのように行われるかを示しています:
<applicationPools>
<add name="DefaultAppPool">
<processModel manualGroupMembership="true" />
</add>
</applicationPools>