プロセスによる分離

HTTP Server バージョン 2.0 API は、要求キューで要求を処理するワーカー プロセスを分離することで、より安全で信頼性の高いサービスを構築する機能を提供します。 要求キューは、それに対するアクセスを厳密に制御するコントローラーまたは作成者プロセスによって作成および管理されます。 コントローラー プロセスは、要求キューで I/O を実行する 1 つ以上の個別のワーカー プロセスを起動します。 コントローラー プロセスは管理特権で実行され、要求キューを構成しますが、低い特権のワーカーは要求キューからのアクセス要求とサービス要求を処理します。 このアーキテクチャでは、"最小限の特権" で実行されているアプリケーションのポリシーがサポートされ、ワーカー プロセスで実行されている可能性があるサードパーティのコードによって発生するセキュリティの脆弱性の可能性が軽減されます。

コントローラー プロセスが名前と Access Control リスト (ACL) を使用して要求キューを作成すると、要求キューへのアクセスが許可されます。 ACL に含まれる Web アプリケーションは、名前によって既存の要求キューを開くことができます。 作成者プロセスは、要求キューのワーカー プロセスである場合もあります。 詳細については、「 名前付き要求キュー 」トピックを参照してください。 次の図は、ワーカー プロセス モデルで実行される一般的な HTTP アプリケーションのアーキテクチャを示しています。

Diagram that shows the architecture of an H T T P application using the worker process model.

アプリケーション内の個々のワーカー プロセスは他のワーカー プロセスから分離され、各ワーカー プロセスの正常性はコントローラー プロセスによって監視できます。 コントローラー プロセスはワーカー プロセスから分離されます。 HTTP アーキテクチャのコンポーネントを以下に示します。

  • 作成者またはコントローラー プロセス: コントローラー プロセスは、正常性を監視し、サービスを構成するための管理特権を使用して実行できます。 通常、コントローラー プロセスはサービスの単一のサーバー セッションを作成し、サーバー セッションの下で URL グループを定義します。 特定の URL が関連付けられている URL グループによって、特定の URL で示される名前空間をサービスする要求キューが決まります。 コントローラー プロセスでは、要求キューも作成され、要求キューにアクセスできるワーカー プロセスが起動されます。
  • ワーカー プロセス: コントローラー プロセスによって起動されたワーカー プロセスは、サービスする URL に関連付けられている要求キューで IO を実行します。 Web アプリケーションには、要求キューの作成時に ACL のコントローラー プロセスによって要求キューへのアクセスが許可されます。 Web アプリケーションが作成者プロセスでもある場合を除き、サービスを管理したり、要求キューを構成したりすることはありません。 コントローラー プロセスは要求キューの名前をワーカー プロセスに伝え、ワーカー プロセスは名前で要求キューを開きます。 ワーカー プロセスは、アプリケーションの他の部分にセキュリティの脆弱性を導入することなく、サードパーティの Web アプリケーションを読み込むことができます。
  • 要求キュー: 要求キューは、コントローラー プロセスによって作成および構成されます。 コントローラーは、要求キューの作成時に ACL 内の要求キューへのアクセスを許可されるプロセスを指定します。
  • サーバー セッション: コントローラー プロセスは通常、アプリケーションの単一のサーバー セッションを作成して構成します。 サーバー セッションでは、アプリケーション全体の構成プロパティが保持されます。 URL グループは、コントローラー プロセスによってサーバー セッションの下に作成されます。
  • URL グループ: コントローラー プロセスは、サーバー セッションの下に URL グループを作成し、サーバー セッションとは無関係に URL グループを構成します。 URL は、コントローラー プロセスによってグループに追加されます。 要求は、URL グループが関連付けられている要求キューにルーティングされます。