IIS と .NET Framework のセキュリティ

Microsoft AppFabric 1.1 for Windows Server では、IIS および .NET Framework Version 4 の堅牢なセキュリティ機能を使用して、Windows プロセス アクティブ化サービス (WAS) でホストされる .NET Framework 4 サービスをセキュリティ保護します。AppFabric 内でクライアント対サービスのセキュリティを正しく構成する方法を理解するには、IIS および .NET Framework 内のセキュリティ オプションを理解することが重要です。

一般に、セキュリティ オプションには利用できる層が多数あるため、展開に最も適切なオプションを利用する必要があります。各セキュリティ層では、特定のリソースをセキュリティ保護する機能が提供されています。たとえば、IIS 内のツールではサイトやアプリケーションなど、IIS アイテムをセキュリティ保護する手段が提供されている一方で、.NET Framework 4 セキュリティ設定はサービス、エンドポイント、操作など、WCF/WF サービスの概念に適用できます。

セキュリティの詳細については、Windows Communication Foundation Security に関するページ (http://go.microsoft.com/fwlink/?LinkId=183157) およびIIS セキュリティに関するページ (http://go.microsoft.com/fwlink/?LinkId=183159) を参照してください。

IIS セキュリティと AppFabric

IIS は呼び出しクライアント側からのアプリケーションのセキュリティに影響し、.NET Framework サービスが監視および永続化データ ストアにアクセスするときにも影響します。IIS は、以下に関する AppFabric セキュリティに影響します。

  • IIS_IUSRS。 既定の IIS インストールでのファイルおよびフォルダーへの実行時アクセスの管理に使用される Windows セキュリティ グループ。

    securityセキュリティ 注意
    Windows セキュリティ グループ IIS_IUSRS と SQL Server ログイン名 IIS_IUSRS を混同しないようにしてください。関連はありますが、別々のエンティティです。

  • アプリケーション プール ID。 IIS は、実行時にすべてのアプリケーション プール ID を IIS_IUSRS グループに動的に挿入します。このセキュリティ グループは、必要なデータ ストア、特に永続化データ ストアへのアクセス許可を付与されています。詳細については、「SQL Server のセキュリティ」を参照してください。

AppFabric 用の .NET Framework のセキュリティ

AppFabric で構成された .NET Framework サービス用のセキュリティについて説明する場合、実際は WCF について言及しています。WCF では、WCF クライアントと .NET Framework (WCF または WF) サービスとの通信に使用するトランスポート プロトコルが定義されます。これは .NET Framework の一部で、Web とエンタープライズで通信するサービス指向アプリケーションをすばやく構築する統一プログラミング モデルを提供します。WCF は、既存のセキュリティ インフラストラクチャを統合するだけでなく、SOAP メッセージを使用して、Windows 限定ドメインを超えて分散型セキュリティを拡張します。詳細については、Windows Communication Foundation Security に関するページ (http://go.microsoft.com/fwlink/?LinkId=183157) および セキュリティ アーキテクチャに関するページ (http://go.microsoft.com/fwlink/?LinkId=183160) を参照してください。

IIS と .NET Framework のセキュリティを組み合わせる

アプリケーションの整合性には、サービスに送信されるメッセージが転送処理中に表示されたり変更されないことが重要です。これを行うには、暗号化や署名を使用します。ただし、呼び出し側のクライアント アプリケーションの ID を完全な確実性で検証または認証できない限り、メッセージの転送が完全にセキュリティ保護されているとは言えません。AppFabric では、IIS と WCF がどう連携して完全なセキュリティ保護が提供されるのかを理解することが重要です。

Web Services Security に関するパターンおよびプラクティスの詳細については、パターンおよびプラクティス:Web Services Security 向上のためのガイドに関するページ (http://go.microsoft.com/fwlink/?LinkId=183161) を参照してください。

AppFabric での IIS 認証

Windows での WCF トランスポート セキュリティ機構は、バインドとそれ以降に使用されるトランスポートによって異なります。たとえば、WSHttpBinding クラスを使用する場合、トランスポートは HTTP で、トランスポートのセキュリティ保護用の主な機構は、通常 HTTPS と呼ばれる HTTP 上の SSL (Secure Sockets Layer) です。メッセージ セキュリティでは、WS-Security 仕様を使用してメッセージ レベルでメッセージのセキュリティを保護します。これには、SOAP メッセージに対して、機密性、整合性、および SOAP メッセージレベル (トランスポート レベルではなく) での認証を確保する拡張機能が必要です。

ホストされるサービス モード

ホストされるサービスは、次の 2 つのモードで実行できます。混在トランスポート モードまたは ASP.NET 互換性モードモードは、アプリケーション レベルの構成フラグ aspNetCompatibilityEnabled によって制御されます。このフラグは、実行時に静的プロパティ ServiceHostingEnvironment.AspNetCompatibilityEnabled からも取得できます。aspNetCompatibilityEnabled フラグは、既定では false です。このため、この設定を明示的に変更しない限り、サービスは混在トランスポート モードで実行されます。

<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="false"/>
</system.serviceModel>

混在トランスポート モード

混在トランスポート モードでは、HTTP モジュールが次のパイプラインの初期の段階で要求を傍受します。BeginRequest。要求を受信すると、HTTP モジュールは HttpContext.Current を NULL に設定し、スレッドが偽装されている場合は偽装を復元します。クライアント要求がこの初期の段階で傍受されているため、他の HTTP 機能は自動的に無効にされます。このため、混在トランスポート モードで実行されている場合、サービスには次の ASP.NET HTTP 固有の機能へのアクセスはありません。

  • HttpContext.Current。 これはこのモードでは、常に NULL になります。WCF ではこの機能の対になる、次の機能が提供されています。OperationContext.Current。

  • ファイル/URL 承認。 このトランスポート層承認機能は、通常、ASMX サービス用 Web.config ファイルの <system.web/authorization> セクション経由で有効にされます。WCF では、混在モードでのトランスポートの承認は無効にされています。ファイル/URL 承認を行うための唯一のオプションは、WCF で実装されているメッセージレベルの承認を使用することです。

  • 偽装。 偽装ではサーバー上での動作の実行中に、サービスにクライアントとして機能することを許可します。ASP.NET 偽装機能は、通常、ASMX サービス用 Web.config ファイルの <system.web/identity> セクション経由で有効にされます。混在モードの WCF トランスポート層では使用できません。

  • セッションの状態。 ASP.NET のセッションの状態は、混在モードではサポートされていません。WCF には、独自の信頼できるセッション実装で柔軟なセッションの状態の管理が提供されています。WCF での最大の問題は、アプリケーションのリサイクルを行うとセッションの状態が残らないため、Web ガーデンや Web ファームでは機能しないことです。これは (無効化されている) ASP.NET 状態サービスとは異なり、アプリケーションまたはプロセス間で状態を共有する機構が存在しないためです。

  • その他の HTTP 機能。 その他の HTTP 機能は、HttpContext.Current に依存しており、混在モードではサポートされていません。たとえば、ConfigurationManager.AppSettings から正しい結果を受信することは期待できません。<system.web/globalization> を経由したグローバリゼーション機能は使用できません。

混在トランスポート モードで実行されている場合、IIS 認証は、.NET Framework サービスへの WCF 呼び出しでは無視されます。このため、WCF クライアントと .NET Framework サービスとの間のメッセージ転送の認証とセキュリティ保護では、WCF セキュリティが主な機構のままになります。混在トランスポート モードでは、すべてのトランスポートが同じに扱われます。サービスには、複数の WCF エンドポイントを設定して、HTTP、net.tcp、net.pipe、net.msmq などの同じまたは異なったトランスポートでリッスンすることができます。ただし、混在トランスポート モードで実行されている、ホストされるサービスは、ホスティング環境、アプリケーション構成、および展開の提供を ASP.NET および IIS に依存します。

ASP.NET 互換性モード

AppFabric でホストされるアプリケーションを含めて、WAS でホストされるアプリケーションで IIS 認証を使用するには、ASP 互換性モードと WCF トランスポート セキュリティを使用する必要があります。ASP 互換性モードを使用する場合のみ、次の IIS セキュリティ機能を利用できます。

  • IIS マネージャーを使用したサイトまたはアプリケーション ホスティング サービスに、どの Windows ユーザーと Windows グループのメンバーによる接続を許可するかをコントロールする。

  • Web サイトを IIS 仮想ディレクトリに変換し、2 つの方法で仮想ディレクトリの物理パスへのセキュリティ設定を設定する。仮想ディレクトリの物理パスにアクセスする場合に、認証されたユーザーの資格情報を Windows ファイル システムに渡すようにパススルー認証から IIS に指示する。または、.NET Framework サービスをホストするプロセス用に特定のユーザー ID を指定して、指定された物理パスですべてのコンテンツにアクセスすることもできます。

  • 適切な IIS 認証方法 (匿名、基本、フォーム、ダイジェスト、Windows 認証、または ASP.NET フォーム偽装) を選択して、Web サイトに関連付けられたサービスの呼び出しに関するセキュリティをコントロールする。

ASP 互換性モードが有効化されているかに関係なく、次の IIS セキュリティ機能を利用できます。

  • SSL 設定を使用して 64 ビットまたは 128 ビット暗号化を構成し、着信要求用のクライアント証明書の処理方法を構成する。

  • 承認規則を作成して、Web サイトまたはアプリケーションへのユーザー アクセスを許可または拒否する。

  • IIS ログ機能を使用して、着信要求のセキュリティ監査ログを作成する。

  • 監視データベースおよび永続化データベースへの接続文字列に関するセキュリティを編集する。

  • クライアントのサービス呼び出し用のバインド設定を管理する。

  • 含まれる Web サイト、または含まれるサービス アプリケーションに対してファイルレベルの実行許可 (フル コントロール、読み取りと実行、ファイルの内容のリスト、書き込みなど) を構成する。

  • カスタム アプリケーション プールの既定の NetworkService ID を実行可能な特定の ID に変更する。SQL Server に統合セキュリティを使用している場合は、SQL Server への呼び出しに使用する ID になります。

詳細については、WCF Services および ASP.NET に関するページ (http://go.microsoft.com/fwlink/?LinkId=183163) を参照してください。

認証に関するガイダンス

アプリケーションの IIS 認証を有効にするには

  • ASP 互換性モードを使用する。

  • トランスポート セキュリティ モード (basicHttpBinding、wsHttpBinding、および wsFederationHttpBinding) をサポートする HTTP ベースの WCF バインドを使用する。

これらの要件が満たされたら、IIS およびホストされた .NET Framework サービスを構成し、互換性のある IIS および WCF セキュリティ設定を使用します。アプリケーションのさまざまなセキュリティ設定を構成して、すべてのサービスのセキュリティおよびバインドに一致させます。異なった設定を指定すると、WCF サービス ライセンス認証エラーが発生します。WCF のセキュリティ モード (この場合は、トランスポート セキュリティ モード) は、バインド要素で指定されます。認証をサポートする必要があるため、選択したWCF セキュリティ設定に IIS 設定と互換性があることを確認してください。トランスポートは、バインド用に構成された WCF 認証モードにマップされます。サービスはバインド構成で認証モードを決定するため、WCF クライアントは構成ファイルでこれに準拠する必要があります。クライアントはサービスによって提供される認証設定をサポートするクライアント資格情報の正しいフォームを提供するように構成される必要があります。AppFabric ではこの種の変更を行う UI 要素が提供されていないため、適切な Web.config ファイルを使用して手動で変更する必要があります。

securityセキュリティ 注意
wsDualHttpBinding は、メッセージベースのセキュリティしかサポートしていないため、サービスで IIS 認証を使用している場合は使用できません。

  2012-03-05