プロセスによる分離

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

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

ワーカー プロセス モデルを使用した H T T P アプリケーションのアーキテクチャを示す図。

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

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