Windows Server AppFabric のセキュリティ モデル

認証を受けたサービスとデータだけにユーザーがアクセスできるよう、Windows Server AppFabric が管理する .NET Framework アプリケーションを保護しなければなりません。アプリケーションを保護するには、ユーザーを識別し、そのユーザーが名乗っているとおりの人物であることを確認し、そのユーザーが情報を閲覧したり、要求されたタスクを実行したりする権限を持っているかを判別する必要があります。クライアントとサーバーの間のメッセージ交換は、プライベートな情報転送を確実にするため安全なチャネル経由で行う必要があります。AppFabric をサポートする Microsoft テクノロジは、企業が安全に接続してアプリケーションを使用できるようにする統合サービスを提供します。AppFabric の管理者は、複数のユーザー データベース セットを保守する必要がなく、文字どおり数百のイントラネット サーバーを対象とするサービスのすべてを単一のグラフィカル ツールによって容易に管理することができます。Microsoft セキュリティ テクノロジおよび AppFabric をサポートする製品の統合により、アプリケーション実行に必要なすべてのリソースへのアクセスをユーザーに割り当てることが可能となります。

AppFabric セキュリティの主要部分

AppFabric セキュリティ モデルの主要な目標は、AppFabric ユーザーの大多数を対象に、シンプルでありながら効果的なメカニズムを提供することです。このセキュリティ モデルと、既存の Windows、.NET Framework、IIS、および SQL Server のセキュリティ モデルが統合されているため、ユーザーはこれまでのセキュリティに関する知識と技能を活かして AppFabric セキュリティ モデルを利用することができます。特にこのセキュリティ モデルは、Windows、.NET Framework、IIS、および SQL Server のセキュリティ概念を用い、管理対象の WCF アプリケーションおよび WF アプリケーションにさまざまなレベルのセキュリティを適用します。AppFabric は、既に堅牢な、統合された Microsoft セキュリティ モデルにわずかな拡張機能を追加するだけであるため、このセキュリティ モデルは Microsoft のセキュリティ概念に関する知識の豊富な管理者にとってなじみ深いものです。この結果、AppFabric の顧客にとっての長期的な TCO (Total Cost of Ownership) が低減されます。これらの製品やテクノロジに既に精通している場合は、「セキュリティと保護」セクションのガイドに従うことで、簡単にアプリケーションをセキュリティ保護できます。

AppFabric は以下に示す既存のセキュリティ概念を利用しています。

  • Windows セキュリティ。 AppFabric は Windows グループおよびファイル システム セキュリティを利用しています。Windows の堅牢なセキュリティ アーキテクチャは、アプリケーションのあらゆるコンポーネントに対し、一貫して使用され、AppFabric リソースへの管理されたアクセスに結び付く認証機能を備えています。詳細については、「Windows セキュリティ」を参照してください。

  • .NET Framework セキュリティ。 AppFabric は、WCF サービスおよび WF サービスについて、Windows Communication Foundation を活用しています。WCF は、SOAP メッセージベースの分散プログラミング プラットフォームであり、クライアントとサービスの間のメッセージをセキュリティで保護することは、データを保護する上で不可欠です。WCF は、既存のセキュリティ インフラストラクチャおよび既に認知されている SOAP メッセージ向けセキュリティ標準の両方に基づいて安全にメッセージを交換するための、多用途で相互運用可能なプラットフォームを提供します。WCF は、HTTPS、Windows 統合セキュリティ、ユーザー名とパスワードによるユーザー認証などの既存のテクノロジによって、安全な分散アプリケーションを構築する場合と似た概念を用いています。詳細については、「IIS と .NET Framework のセキュリティ」を参照してください。

  • IIS セキュリティ。 AppFabric は、サービスが Windows プロセス アクティブ化サービス (WAS) にホストされるため IIS セキュリティ機能のサブセットを利用しており、管理ツールは IIS マネージャーに表示されます。IIS は Windows オペレーティング システムと緊密に統合されており、アプリケーションとデータに対して最高水準のセキュリティを提供します。IIS は、Windows NT セキュリティ モデル、およびファイル システムやディレクトリなどのオペレーティング システム サービスに統合されています。AppFabric ワークフロー サービスが実行時に永続化データベースにアクセスする必要がある場合、AppFabric ではアプリケーション プールの概念を利用します。IIS は、他のすべての Windows サービスと同じ、Windows NT Server Access Control List (ACL) を使用します。IIS は Windows NT Server ユーザー データベースを使用するため、AppFabric の管理者は、Web サーバーごとに別々のユーザー アカウントを作成する必要がなく、イントラネット ユーザーによるネットワークへのログオンは 1 度だけしか必要ありません。詳細については、「IIS と .NET Framework のセキュリティ」を参照してください。

  • SQL Server セキュリティ。 AppFabric では、SQL Server データベース ロールを作成し、永続化データベースと監視データベースへのアクセスを制御します。AppFabric は、SQL Server データベースへのアクセスについて、Windows 統合認証を使用します。統合セキュリティは、呼び出しスレッドについて確立された最新の Windows ID を使用して SQL Server データベースにアクセスします。さらに、Windows ID を AppFabric SQL Server データベースと権限にマップすることができます。詳細については、「SQL Server のセキュリティ」を参照してください。

AppFabric の概念的なセキュリティ ロール

AppFabric のセキュリティ モデルを理解するには、3 つの AppFabric セキュリティ ロールの属性を理解することが有用です。これらのロールは純粋に概念的なものであり、セキュリティ モデルの中でこれらの名前の付いた実体があるわけではありません。ただし、概念的なロールは、実際の Windows セキュリティ グループおよび SQL Server データベース ロールに対応付けられて具現化されています。セキュリティ ソリューションにおいては、これらのロールに対し以下のようにユーザーと権限を割り当てます。

  • アプリケーション サーバー オブザーバー。 この管理ロールは、アプリケーションの永続性データおよび監視データをすべて閲覧できます。Application Server Observers は以下が可能です。

    • アプリケーションおよびサービスの列挙

    • アプリケーションおよびサービス構成の表示

    • 監視データの表示

    • 保持されたインスタンスの確認

  • アプリケーション サーバー管理者。 この管理ロールは、アプリケーションの構成、監視、永続化のすべてを制御できます。Application Server Administrators は、Application Server Observers グループが実行できるすべてのタスクに加え、以下のタスクを実行できます。

    • 保持されているインスタンスの中断、再開、終了、キャンセルおよび削除

    • イベント ソースおよびイベント コレクターの作成および削除

    • 監視データの表示、削除およびアーカイブ

  • アプリケーション サーバー ユーザー。 このランタイム ロールは、IIS が実行時に使用し、アプリケーションをホストするすべての IIS アプリケーション プールの ID を割り当てます。これにより、アプリケーションに含まれるサービスに対し、永続化データベースとシステム サービスへの共有アクセスが提供されます。

AppFabric ユーザーとして知っておく必要があるのは、これらのロールは、セキュリティ ソリューションをデザインするときに使用する、3 つの概念的な AppFabric ロールであるということだけです。Windows NT のグループとアカウント、IIS アプリケーション プール、および SQL Server ログインとデータベース ロールに対して、この文書の内容に基づいて適切なユーザーと権限を割り当てます。AppFabric ロールの使用、これらロールと Windows セキュリティ グループと SQL Server データベース ロールとの対応関係に関する詳細およびセキュリティ上の指針については、「Windows セキュリティ」、「IIS と .NET Framework のセキュリティ」および「SQL Server のセキュリティ」を参照してください。

AppFabric セキュリティのスコープ

AppFabric は、Windows セキュリティ アカウントおよび SQL Server ログインとデータベース ロールを使用して、永続化データベース、タイマー データ、監視データ、構成ファイルなどのシステム リソースに対して、ユーザーまたはアプリケーションがアクセス権を持っているかどうかを判断します。これらリソースへのアクセスは、アプリケーション レベルと管理レベルの両方で発生します。そして、この 2 種類のアクセスが AppFabric セキュリティ モデルに関連する論理スコープの 2 つの領域となります。アプリケーション スコープは、IIS アプリケーションとしてホストされる AppFabric サービスを実行するプロセスを対象としています。管理スコープは、管理の立場から見た AppFabric の管理が関連します。3 つの AppFabric セキュリティ ロールの使い方を詳しく理解するため、アプリケーション スコープと管理スコープのコンテキストにおける使用方法を調べてみましょう。

アプリケーション スコープ

アプリケーション スコープは、AppFabric で構成される、IIS の WAS プロセス空間でホストされる .NET Framework サービスの実際の実行を定義します。管理やツールの使用は対象ではなく、これらは管理スコープに分類されます。アプリケーション スコープの概念は、概念的な AppFabric Application Server Users セキュリティ ロールに適用されます。このロールは IIS_IUSRS Windows グループにマップされます。このグループは、IIS サービス アカウントに使用される Windows セキュリティ グループです。詳細については、「Windows セキュリティ」、「IIS と .NET Framework のセキュリティ」、および「SQL Server のセキュリティ」を参照してください。

各アプリケーションは、1 個のアプリケーション プール内で実行されます。このプールは既定のアプリケーション プールの場合と、ユーザーが作成、構成可能な独自のアプリケーション プールの場合があります (アプリケーション プールの作成と構成は、以下の「管理スコープ」のセクションで取り上げる、管理機能です)。アプリケーション プールは、アプリケーションとサービスをグループ化して同一のワーカー プロセス空間にまとめるために使用するもので、構成の設定および他のオペレーティング システム エンティティを共有します。各ワーカー プロセスは、実行可能なワーカー プロセス (W3WP.EXE) の独立したインスタンスとして動作するため、あるアプリケーション プールに対してサービスするワーカー プロセスは、別のアプリケーション プールにサービスするワーカー プロセスとは独立しています。これにより、自ら作成したアプリケーション プールでアプリケーションをホストする場合、アプリケーションの分離が可能となります。アプリケーションの分離により、Web アプリケーションでエラーが発生しても、別のアプリケーション プールで実行されているアプリケーションには影響が及ばなくなります。

アプリケーション分離のもう 1 つの利点は、セキュリティの分離をカスタマイズできることです。これにより、SQL Server などのダウンストリーム リソースにアクセスする場合に、アプリケーション プール (AppFabric.NET Framework サービスを格納) をホストするワーカー プロセスに対する、構成済みのセキュリティ プリンシパルが確実に使用されます。既定のアプリケーション プール ID は、Network_Service アカウントです。アプリケーション プールが IIS で構成されている場合は、独自のカスタム Windows アカウント ID を割り当て可能です。実行時に、WAS はアプリケーション プール キューからの着信メッセージを、IIS メタベースで指定された Web アプリケーション バインドを使用することで、正しい W3WP.EXE ワーカー プロセスに転送します。これが、WCF のエンドポイントとサービスに対して、HTTP 以外のプロトコルを使用するアクティベーションを AppFabric が許可するしくみです。IIS は、アプリケーション プールのすべての Windows アカウントを動的に取得し、それらアカウントをローカルの BUILTIN\IIS_IUSRS Windows セキュリティ グループに追加します。つまり、アプリケーションのために独自のアプリケーション プールを作成すると、そのアプリケーション プールの ID は IIS_IUsers Windows グループに自動的に追加されます。

複数のアプリケーション プールを別々のセキュリティ ID で使用することにより、実行時における AppFabric の永続化データベースと監視データベースの両方へのアクセスに関して、アプリケーションの分離が可能となります。既定では、これらのデータベースは、ホストするアプリケーション プールが使用する、すべての認証済み AppFabric ID によって完全に共有されます。分離を使用した、より高レベルのセキュリティが必要な場合は、特定の IIS アプリケーション プールが使用する特定の ID に対し、具体的なデータベース リソースに対する権限をより細かく割り当てることができます。さらに、特定のアプリケーション専用のデータベースを作成し、特定の ID のために専用データベースへの接続が行われるようにすることで、実行時にセキュリティを制御することもできます。その他、アプリケーション単位では、監視データベースからアプリケーションを分離して、永続化データベースだけにアクセスできるようにすることができます。

アプリケーション スコープは、AppFabric がインストールして使用するシステム サービスに対しても適用されます。

  • イベント コレクション サービス。 AppFabric およびホスト対象のアプリケーションがソースとなるイベントをコレクトします。

  • ワークフロー管理サービス。 ワークフロー制御コマンドの処理、期限タイマー付きワークフロー インスタンスのアクティブ化、および破棄されたワークフロー サービスの再起動を行います。

どのサービスも NTAuthority\LocalService アカウントとして実行されます。LocalService アカウントには、追跡イベントを生成する権限に加え、永続化されたインスタンスの操作 (終了、中断、再開) を行う権限があります。

セキュリティ管理を強化すると、通常、パフォーマンスが低下します。アプリケーションの分離は、セキュリティ能力を高める一方、複数プロセスが存在するため、使用するメモリおよびプロセス リソースも増加します。リソースを大事に使うため、独立したプロセスを使用する代わりに .NET Framework appDomain モデルを使用することでアプリケーションを分離することもできます。2 つ以上のアプリケーションは、appDomain が異なる同一プロセスと安全に共存することができ、お互いの仮想メモリとデータ値を侵さずに済みます。

管理スコープ

管理スコープは、アプリケーション管理に関する管理内容とツール使用を定義します。AppFabric で構成される .NET Framework サービスの実際の実行は対象ではなく、これはアプリケーション スコープの対象となります。管理スコープの概念は、AppFabric の概念的な Application Server Administrators セキュリティ ロールおよび Application Server Observers セキュリティ ロールに適用されます。

管理スコープは、管理とシステム サービスの観点から見た、AppFabric およびそのサポート テクノロジの管理が関連します。.NET Framework アプリケーションを AppFabric に展開して、構成するなど、アプリケーションの実行前に管理操作を実行できます。ワークフローの状態が永続化され、次の手順を AppFabric ユーザー インターフェイスを通じて処理する必要のある場合は、実行中に管理操作を行うこともできます。たとえば、中断したワークフローを再開する必要のある場合が該当します。AppFabric で構成された .NET Framework サービスの設定と実行を管理するセキュリティ権限は、特定の Windows セキュリティ グループ内のメンバーシップに基づいています。管理スコープは、イベント コレクション サービスおよび ワークフロー管理サービスにも適用されますが、この場合は、アプリケーションの観点からではなく、管理と制御の観点から適用されます。

概念的な Application Server Administrators セキュリティ ロールおよび Application Server Observers セキュリティ ロールはそれぞれ、ローカルの AS_Administrators セキュリティ グループおよび AS_Observers Windows NT セキュリティ グループにマップされます。AS_Administrators グループは ワークフロー管理サービス および イベント コレクション サービスのサービス ID (SID) を格納しています。サービスをサービス コントロール マネージャーに登録した後も SID は変化しません。これは、イベント コレクション サービスおよび ワークフロー管理サービス が、どの ID で実行されているかに関係なく、AS_Administrators のメンバーとなることを意味します。この ID は通常、NTAuthority\LocalService です。そのため、サービス アイデンティティの代わりに SID を使用することで、NTAuthority\LocalService というアイデンティティの下で実行される他のプロセスやサービスは AS_Administrators のメンバーになることができなくなります。AppFabric の概念的なセキュリティ ロールおよびこれらロールの使用方法の詳細については、「Windows セキュリティ」、「IIS と .NET Framework のセキュリティ」、および「SQL Server のセキュリティ」を参照してください。

AppFabric は、インストール時に管理スコープをセキュリティで保護します。Windows PowerShell コマンドレットがセットアップ時に監視データベースと永続化データベースを作成する場合、適切な SQL Server データベース ロールが、対応する概念的な AppFabric セキュリティ ロールに基づいて作成されます。たとえば、AS_Observers について SQL Server で作成されるロールはすべてリーダー ロール (監視用の MonitoringDbReader ロールおよび永続化用の System.Activities.DurableInstancing.InstanceStoreObservers) です。AS_Administrators ログオン アカウントについて定義される SQL Server データベース ロールには、AS_Observers ログオン アカウントにリンクされるデータベース ロール、および管理の立場からデータベース エンティティを作成、修正するための追加ロールのすべてが含まれています。

既定では、AppFabric セットアップにより、セットアップ プロセス時に AppFabric コマンドレットの一部が実行されます。AppFabric では、AppFabric の単一サーバー インストールに必要となる、ローカルの Windows セキュリティ グループとアカウントがすべて作成されます。複数のサーバー上で AppFabric を使用する場合は、手動で Windows ドメイン グループを作成し、リモートから AppFabric を管理するため、作成したドメイン グループをサーバーに適した Windows セキュリティ グループに割り当てる必要があります。管理者としては、概念的な Application Server Administrators セキュリティ ロールおよび Application Server Observers セキュリティ ロール (つまり、DOMAIN\MyAppFabricAdmins および DOMAIN\MyAppFabricObservers) を物理的に表すものとしてドメイン グループを作成します。作成したドメイン アカウントは、ドメイン内のすべての AppFabric コンピューター上の LOCAL\AS_Administrators グループおよび LOCAL\AS_Observers グループに割り当てることができます。

カスタム Windows PowerShell スクリプトおよび AppFabric コマンドレットのセキュリティ モデル

AppFabric は、カスタム Windows PowerShell スクリプト、および AppFabric リリースに含まれる多くの Windows PowerShell コマンドレットのための新たなセキュリティ モデルは提供していません。セキュリティ モデルの他の面については、AppFabric はサポートするテクノロジに含まれる既存のセキュリティ モデルを利用します。この場合、AppFabric は Windows PowerShell セキュリティ モデルを使用して、カスタム スクリプトおよびパッケージ化済み AppFabric コマンドレットをセキュリティで保護します。

AppFabric Windows PowerShell スクリプトを実行するときは、ホストするプロセスの ID を使用して実行します。つまり、コマンドレットを実行するユーザーのセキュリティ プリンシパルはプロセス ID として渡されます。ホストするプロセスを実行するユーザーのセキュリティ コンテキスト以外のセキュリティ コンテキストでは、コマンドレット実行の偽装を使用する方法はありません。

既定では Windows PowerShell コマンドを対話的に実行できますが、Windows PowerShell スクリプトの実行はセキュリティ上の理由から最初は無効になっています。スクリプトを実行できるようにするには、Windows PowerShell Script Execution グループを通じてスクリプトの実行を有効にする必要があります。

AppFabric に付属の Windows PowerShell スクリプトは、証明機関 (CA) から取得した証明書によってデジタル署名されています。CA のデジタル証明書でエンティティに署名することで、パッケージの整合性を保護します。一方向のハッシュおよび公開キーによる暗号化アルゴリズムを使用した署名プロセスによって、作成者の署名後にパッケージに加えられた変更が検出され、その結果、スクリプトの実行がブロックされます。さらに、デジタル署名を使用することで、署名されたエンティティが、作成を主張する当事者によって実際に作成されたことを確認することもできます。CA を使用する代わりの、簡単でコストのかからない方法として、ローカルの CA と Microsoft Certificate Server を使用して自己署名付き証明書を生成する方法があります。自己署名付き証明書は、秘密キーによる暗号化を使用してさらに保護することができます。

securityセキュリティ 注意
ローカルの CA を使用して Windows PowerShell スクリプト パッケージに署名することは、信頼ポリシーにおいて最低限必要です。ローカルで署名されたパッケージはローカル システム上では信頼されますが、外部のシステム上で実行される場合は信頼されません。

フェデレーション ID 管理およびシングル サインオン (SSO)

フェデレーション認証システムは、Web シングル サインオン (SSO) システムとしても知られています。フェデレーション システムは組織の境界を越えて動作し、異なるテクノロジや ID ストレージ、セキュリティ手法、プログラミング モデルを使用するプロセスを接続します。Active Directory フェデレーション サービス (ADFS) により、ある企業内のユーザーは自身が持つ既存の Active Directory アカウントを使用して、別の企業がホストするサーバーにアクセスすることができます。さらに ADFS は、2 つの企業間の信頼関係を確立し、シームレスなワンタイム ログオン (SSO) 体験をエンド ユーザーに提供します。ADFS によって、組織はユーザーの ID 情報を安全に共有できるようになります。

AppFabric が管理する HTTP ベースのアプリケーションは、多くの点で単純に IIS アプリケーションであるといえます。フェデレーション ID 管理と Web SSO 認証をアプリケーションに統合する必要のある場合は、IIS アプリケーションに対する場合と同じように ADFS を使用することができます。ADFS は、アプリケーションにアクセスするログイン アカウントをドメイン アカウントにマップし、そのドメイン アカウントを使用して IIS に対する認証を行います。

.NET Framework 4 は、管理対象サービスとクライアントの間の通信に対して WCF とそのセキュリティ モデルを使用するため、HTTP ベース アプリケーションだけをサポートする従来の IIS モデルが HTTP の範囲を超えて拡張されます。トランスポート認証なしで HTTP を使用する場合、または HTTP 以外のアプリケーションで HTTP を使用する場合、サービス内でプログラム的なインターフェイスを使用して、ID 要求処理を実装します。要求に対応するアプリケーションは、ADFS セキュリティ トークン内に存在する要求を使用して認証の判断を行い、追加のアプリケーション個人設定を行います。ADFS については、要求処理をアプリケーションに統合するため、IIS アプリケーションとの ID 要求処理がどのように行われるかを理解する必要があります。

このセクションの内容

関連項目

その他のリソース

WF セキュリティ パック CTP

  2011-12-05