Isolamento do processo

A API do Servidor HTTP versão 2.0 fornece a capacidade de criar um serviço mais seguro e confiável isolando processos de trabalho que estão atendendo solicitações na fila de solicitações. A fila de solicitações é criada e administrada por um processo de controlador ou criador que controla estritamente o acesso a ela. O processo do controlador inicia um ou mais processos de trabalho separados que executam E/S na fila de solicitação. O processo do controlador é executado com privilégio administrativo e configura a fila de solicitações, enquanto o trabalho de privilégios inferiores processa o acesso e as solicitações de serviço da fila de solicitações. Essa arquitetura dá suporte à política de aplicativos em execução sob "privilégios mínimos" e reduz a possibilidade de vulnerabilidades de segurança introduzidas por código de terceiros que podem estar em execução em processos de trabalho.

O acesso à fila de solicitações é concedido quando o processo do controlador cria a fila de solicitações com um nome e uma ACL (lista de Controle de Acesso). Os aplicativos Web incluídos na ACL podem abrir uma fila de solicitações existente por nome. O processo do criador também pode ser um processo de trabalho na fila de solicitações. Para obter mais informações, consulte o tópico Fila de Solicitações Nomeadas . O diagrama a seguir mostra a arquitetura de um aplicativo HTTP típico em execução com o modelo de processo de trabalho:

Diagrama que mostra a arquitetura de um aplicativo H T TP usando o modelo de processo de trabalho.

Os processos de trabalho individuais dentro do aplicativo são isolados de outros processos de trabalho e a integridade de cada um dos processos de trabalho pode ser monitorada pelo processo do controlador. O processo do controlador é isolado dos processos de trabalho. Os componentes da arquitetura HTTP são descritos abaixo:

  • Processo do criador ou controlador: o processo do controlador pode ser executado com ou sem privilégios administrativos para monitorar a integridade e configurar o serviço. O processo do controlador normalmente cria uma única sessão de servidor para o serviço e define os grupos de URL na sessão do servidor. O grupo de URLs ao qual uma URL específica está associada determina a quais serviços de fila de solicitação o namespace indicado pela URL específica. O processo do controlador também cria a fila de solicitações e inicia os processos de trabalho que podem acessar a fila de solicitações.
  • Processo de trabalho: os processos de trabalho, iniciados pelo processo do controlador, executam E/S na fila de solicitação associada às URLs que eles servem. O aplicativo Web recebe acesso à fila de solicitações pelo processo do controlador na ACL quando a fila de solicitação é criada. A menos que o aplicativo Web também seja o processo do criador, ele não gerencia o serviço nem configura a fila de solicitações. O processo do controlador comunica o nome da fila de solicitações para o processo de trabalho e o processo de trabalho abre a fila de solicitações por nome. Os processos de trabalho podem carregar aplicativos Web de terceiros sem introduzir vulnerabilidades de segurança em outras partes do aplicativo.
  • Fila de Solicitações: a fila de solicitações é criada e configurada pelo processo do controlador. O controlador especifica os processos que têm permissão de acesso à fila de solicitação na ACL quando a fila de solicitação é criada.
  • Sessão do Servidor: o processo do controlador normalmente cria e configura uma única sessão de servidor para o aplicativo. A sessão do servidor mantém as propriedades de configuração de todo o aplicativo. Os grupos de URL são criados na sessão do servidor pelo processo do controlador.
  • Grupo de URLs: o processo do controlador cria os grupos de URLs na sessão do servidor e configura o grupo de URLs independentemente da sessão do servidor. As URLs são adicionadas ao grupo pelo processo do controlador. As solicitações são roteados para a fila de solicitações à qual o grupo de URL está associado.