ホスティングと永続化のセキュリティ保護

永続化ストアは Windows Server AppFabric アーキテクチャの重要な部分です。このストアは、Windows Workflow Foundation (WF) インスタンスが実行のさまざまな状態に移行するときにその持続性をサポートします。AppFabric の管理ツールを使用して、永続化されたワークフロー サービス インスタンスを操作できます。永続化ストアの読み取りと書き込みを行うため、管理ツールを実行する AppFabric ユーザーおよび実行時のアプリケーションに永続化ストアへのアクセス許可を与える必要があります。また、管理スコープとアプリケーション スコープの両方のレベルで永続化ストアへのアクセスを制御する必要があります。

セキュリティ上、アプリケーションのホスティングを行う場所には特に考慮する必要があります。アプリケーションの分離によって、データは他のアプリケーションによる表示やアクセスから保護されます。さらに、リソースのダウンストリーム アクセスに対してアプリケーションの ID を制御することは AppFabric セキュリティ モデルの重要な部分です。この ID は、アプリケーションで永続化ストアへのアクセスを試行するときに使用するセキュリティ プリンシパルに影響します。

ホスティングと永続化はどちらもアプリケーション スコープと管理スコープ内で行われ、各領域内で違った形でセキュリティ保護する必要があります。さまざまなセキュリティ グループに組み込むことによって、特定のアクセス許可を指定します。アプリケーション セキュリティ スコープは、実行時にアプリケーションにあるアクセス許可に影響を与え、アプリケーション サーバー ユーザーという概念的役割にマップされます。管理セキュリティ スコープは、管理者とシステム サービスが実行できるツールと関連操作に影響を与えます。これらのアクセス許可は、アプリケーション サーバー管理者およびアプリケーション サーバー オペレーターという概念的役割にマップされます。

永続化データのセキュリティ保護

サービスのインスタンスが永続化されると、そのシステム状態は永続化ストアに保存されます。アプリケーションは個人の識別が可能な情報やその他の機密データを収集し転送することがあります。サービスの永続化時にそのデータがアプリケーションの状態に含まれている場合、そのデータは永続化ストアに保存されます。複数のサーバー、サイト、およびアプリケーションが 1 つの永続化ストアを共有することがあります。サービスのインスタンス数が数千になる可能性がある大規模な環境でそのアクティビティ状態の管理を簡単にするため、設計上、永続化データはストアを共有するサーバーとサイト間で集約されます。そのため、サービスのインスタンスは 1 つの AppFabric サーバーで実行中には永続化し、負荷分散条件で必要な場合には別のサーバーで再開することができます。

永続化ストアにデータが保存された後、このデータは AS_Administrators データベース ロールのすべてのメンバー、および SQL Server の sysadmin ロールと dbo ロールのすべてのメンバーから可視になります。永続化データは不注意や故意により露出されやすいため、アクセス許可を正しく管理して、慎重にリスクを減らす必要があります。

永続化ストアのデータは次の方法でセキュリティ保護できます。

  • 異なる永続化ストアを使用する。 同じサーバーか異なるサーバーに代替永続化ストアを作成して構成できます。それには、AppFabric コマンドレットを使用して代替永続化ストアを作成し、AppFabric の [永続化データベース構成] ページを使用して構成します。その後、特定のアプリケーションでそのストアのみ使用するよう構成することができます。これにより、指定したアプリケーションに、他のアプリケーションからはアクセスできない専用の永続化データ ストアが提供されます。

  • 永続化ストアと監視ストアを 2 つの異なるストアに分離する。 既定では、永続化ストアと監視ストアのテーブルとエンティティはインストール時に DefaultApplicationServerExtensions ストアに作成されます。一方のストアを永続化専用にし、他方のストアを監視専用にすることができます。この場合、管理スコープとアプリケーション スコープのアプリケーションとユーザーは 1 つのデュアル ストアにアクセスできなくなるため、永続化と監視に関するすべてのテーブルにアクセスできなくなります。

  • Windows グループと SQL Server ロールを使用する。 SQL Server 永続化ストアへのアクセスは SQL Server データベース ロールを介して実装されます。インスタンス ストアの初期化時に管理者は Instance Store Users、Instance Store Readers、Instance Store Administrators の SQL ロールに Windows グループを挿入できます。Windows グループと SQL Server ロールを使用した永続化ストア データのセキュリティ保護の詳細については、「永続化ストアのセキュリティ構成」を参照してください。

  • 永続化機能を操作する。 AppFabric により IIS マネージャーに追加された拡張機能を使用して、特定のワークフロー サービス、アプリケーションのすべてのワークフロー サービス、Web サイトのすべてのアプリケーション、またはサーバーのすべての Web サイトの永続化機能を有効または無効にできます。上位レベルに永続化ポリシーを定義し、IIS と WAS 階層のすべての下位レベルにポリシー設定を継承させることができます。

  • 異なるアプリケーション プール ID を使用する。 IIS アプリケーション プールに異なる ID を使用することで、永続化ストア全体または永続化ストア内の個々のエンティティに対して SQL Server のアクセス許可を制限するか拡張することができます。これは IIS と SQL Server のレベルで行う詳細なセキュリティ方法であり、AppFabric ツールで直接はサポートされていません。

ホスティングのセキュリティ保護

プロセス分離を使用して、権限の低いアプリケーション スコープのアプリケーション ワーカー プロセスから、イベント コレクション サービス、ワークフロー管理サービスなど、権限の高い AppFabric 管理スコープ サービスを分離します。AppFabric サービスは管理スコープ内で実行され、それぞれの監視ストアと永続化ストアに完全にアクセスできます。すべてのアプリケーション ワーカー プロセスとユーザーは、アプリケーション スコープで、通常はアプリケーション プール ID のコンテキストにおいて実行されます。

アプリケーション スコープでさらにホスティングを分離すると、より詳細にセキュリティを設定できます。アプリケーションには、すべて同じプロセスで実行される 1 つ以上の .NET Framework サービスが含まれています。これらの .NET Framework サービスは互いのサービスからセキュリティ保護するため、異なる AppDomains のコンテキストで実行できます。.NET Framework プロセスには 1 つ以上の .NET Framework AppDomains が含まれており、それぞれはアプリケーションが実行される分離された環境です。IIS アプリケーション プール内では、1 つ以上のアプリケーションを同時に実行できます (アプリケーション プールを共有するよう構成されている場合)。したがって、AppDomains は別のプロセスとそのすべてのリソースのオーバーヘッドなしに、実行の分離を実現できる負担の軽い方法です。

さらに分離されたホスティング ソリューションが必要な場合、各アプリケーションが独自の ID を使用して独自のアプリケーション プールで実行されるように構成します。この方法では、アプリケーションが永続化ストアにアクセスするときに異なる ID が与えられます。IIS では、実行時にこれらの ID をすべて IIS_IUSRS Windows セキュリティ グループに入れます。セキュリティの観点からすると、個別のプロセス空間で実行することは個別のアプリケーション ドメインで実行することとほぼ同じです。この場合、他のアプリケーションからは特定のアプリケーションのコードやデータにアクセスできません。プロセスを追加すると、オペレーティング システム リソースの使用増加とプロセッサのコンテキストの切り替え (各プロセスでは CPU の独自の部分があるため) のオーバーヘッドが生じることに注意してください。

  2011-12-05