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

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

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

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

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

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