プロセスの分離

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

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

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

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

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