Изоляция процессов

API HTTP-сервера версии 2.0 позволяет создавать более безопасную и надежную службу, изолируя рабочие процессы, обслуживающие запросы в очереди запросов. Очередь запросов создается и администрируется процессом контроллера или создателя, который строго управляет доступом к ней. Процесс контроллера запускает один или несколько отдельных рабочих процессов, которые выполняют операции ввода-вывода в очереди запросов. Процесс контроллера выполняется с правами администратора и настраивает очередь запросов, а рабочая роль с низким уровнем привилегий обрабатывает запросы на доступ и обслуживание из очереди запросов. Эта архитектура поддерживает политику приложений, работающих с минимальными привилегиями, и снижает вероятность уязвимостей системы безопасности, вводимых сторонним кодом, которые могут выполняться в рабочих процессах.

Доступ к очереди запросов предоставляется, когда процесс контроллера создает очередь запросов с именем и списком контроль доступа (ACL). Веб-приложения, включенные в список управления доступом, могут открывать существующую очередь запросов по имени. Процесс создания также может быть рабочим процессом в очереди запросов. Дополнительные сведения см. в разделе Именованной очереди запросов . На следующей схеме показана архитектура типичного приложения HTTP, работающего с моделью рабочего процесса:

Схема, показывающая архитектуру приложения H T T P с использованием модели рабочего процесса.

Отдельные рабочие процессы в приложении изолированы от других рабочих процессов, и процесс контроллера может отслеживать работоспособность каждого рабочего процесса. Процесс контроллера изолирован от рабочих процессов. Ниже описаны компоненты архитектуры HTTP.

  • Процесс создателя или контроллера. Процесс контроллера может выполняться с правами администратора или без нее для мониторинга работоспособности и настройки службы. Процесс контроллера обычно создает один сеанс сервера для службы и определяет группы URL-адресов в сеансе сервера. Группа URL-адресов, с которой связан определенный URL-адрес, определяет, какая очередь запросов обслуживает пространство имен, обозначенное конкретным URL-адресом. Процесс контроллера также создает очередь запросов и запускает рабочие процессы, которые могут получить доступ к очереди запросов.
  • Рабочий процесс. Рабочие процессы, запущенные процессом контроллера, выполняют операции ввода-вывода в очереди запросов, связанной с обслуживаемыми URL-адресами. Веб-приложению предоставляется доступ к очереди запросов процессом контроллера в ACL при создании очереди запросов. Если веб-приложение не является процессом создателя, оно не управляет службой и не настраивает очередь запросов. Процесс контроллера передает имя очереди запросов рабочему процессу, и рабочий процесс открывает очередь запросов по имени. Рабочие процессы могут загружать сторонние веб-приложения без уязвимостей системы безопасности в других частях приложения.
  • Очередь запросов. Очередь запросов создается и настраивается процессом контроллера. Контроллер указывает процессы, которым разрешен доступ к очереди запросов в ACL при создании очереди запросов.
  • Сеанс сервера. Процесс контроллера обычно создает и настраивает один сеанс сервера для приложения. Сеанс сервера поддерживает свойства конфигурации для всего приложения. Группы URL-адресов создаются в сеансе сервера процессом контроллера.
  • Группа URL-адресов. Процесс контроллера создает группы URL-адресов в сеансе сервера и настраивает группу URL-адресов независимо от сеанса сервера. URL-адреса добавляются в группу процессом контроллера. Запросы направляются в очередь запросов, с которым связана группа URL-адресов.