Шаблон привратника

Выделенный узел Azure

Защита приложений и служб с помощью выделенного экземпляра узла для брокера запросов между клиентами и приложением или службой. Брокер проверяет и очищает запросы и может обеспечить дополнительный уровень безопасности и ограничить область атаки системы.

Контекст и проблема

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

Если злоумышленник компрометирует систему и получает доступ к среде размещения приложения, его механизмы безопасности и доступ к данным и другим службам предоставляются. В результате злоумышленник может получить неограниченный доступ к учетным данным, ключам хранилища, конфиденциальной информации и другим службам.

Решение

Одним из решений этой проблемы является разделение кода, реализующего общедоступные конечные точки, от кода, обрабатывающего запросы и доступ к хранилищу. Вы можете добиться разъединения с помощью фасада или выделенной задачи, которая взаимодействует с клиентами, а затем передает запрос (возможно, через несогласованный интерфейс) к узлам или задачам, обрабатывающим запрос. На этом рисунке представлен общий обзор этого шаблона.

Общие сведения о шаблоне

Шаблон воротника можно использовать для защиты хранилища или его можно использовать в качестве более комплексного фасада для защиты всех функций приложения. Используя эту модель, важно учитывать следующее:

  • Контролируемая проверка. Вратарь проверяет все запросы и отклоняет запросы, которые не соответствуют требованиям проверки.
  • Ограничение риска и уязвимости. У привратника нет доступа к учетным данным или ключам, которые доверенный узел использует, чтобы обращаться к хранилищу и службам. Скомпрометировав привратник, злоумышленник не получит доступ к учетным данным или ключам.
  • Обеспечение безопасности. Привратник работает в режиме ограниченных прав, а остальная часть приложения — в режиме полного доверия, необходимом для обеспечения доступа к хранилищу и службам. Даже в случае компрометации привратник не сможет обратиться к службам или данным приложения напрямую.

Этот шаблон действует как брандмауэр в классической сетевой топографии. Он позволяет вратарю проверять запросы и принимать решение о том, следует ли передавать запрос на доверенный узел, выполняющий необходимые задачи. Обычно, если привратник принимает решение передать запрос доверенному узлу, он предварительно проверяет и очищает содержимое запроса.

Проблемы и рекомендации

При принятии решения о реализации этого шаблона необходимо учитывать следующие моменты.

  • Убедитесь, что доверенные узлы предоставляют только внутренние или защищенные конечные точки, используемые только привратником. У доверенных узлов не должно быть внешних конечных точек и (или) интерфейсов.
  • Вратарь должен работать в ограниченном режиме привилегий, который обычно требует запуска шлюза и доверенного узла в отдельных размещенных службах или виртуальных машинах.
  • Вратарь не должен выполнять обработку, связанную с приложением или службами, или получить доступ к любым данным. Его единственная функция — проверка и очистка запросов. Доверенным узлам может потребоваться выполнить дополнительную проверку запросов, но привратник должен выполнить основную проверку.
  • Используйте безопасный канал связи (HTTPS, SSL или TLS) между шлюзом и доверенными узлами или задачами, где это возможно. Некоторые среды размещения не поддерживают HTTPS для внутренних конечных точек.
  • Добавление дополнительного слоя для реализации шаблона вратаря, скорее всего, влияет на производительность из-за дополнительной обработки и сетевого взаимодействия.
  • Экземпляр привратника может стать единой точкой отказа. Чтобы свести к минимуму влияние сбоя, рассмотрите возможность развертывания избыточных экземпляров и использования механизма автомасштабирования для обеспечения доступности емкости.

Когда следует использовать этот шаблон

Этот шаблон полезен для приложений, которые:

  • обработка конфиденциальной информации
  • предоставление служб, требующих высокой степени защиты от вредоносных атак
  • выполнение критически важных операций, которые не могут быть нарушены.
  • требуется, чтобы проверка запросов выполнялась отдельно от основных задач, а также для централизовать эту проверку, чтобы упростить обслуживание и администрирование.

Проектирование рабочей нагрузки

Архитектор должен оценить, как шаблон Gatekeeper можно использовать в проектировании рабочей нагрузки для решения целей и принципов, описанных в основных принципах Платформы Azure Well-Architected Framework. Например:

Принцип Как этот шаблон поддерживает цели основных компонентов
Решения по проектированию безопасности помогают обеспечить конфиденциальность, целостность и доступность данных и систем рабочей нагрузки. Добавление шлюза в поток запросов позволяет централизовать функции безопасности, такие как брандмауэры веб-приложения, защита от атак DDoS, обнаружение ботов, обработка запросов, запуск проверки подлинности и проверки авторизации.

- Сетевые элементы управления SE:06
- SE:10 Мониторинг и обнаружение угроз
Эффективность производительности помогает рабочей нагрузке эффективно соответствовать требованиям путем оптимизации масштабирования, данных, кода. Этот шаблон заключается в том, как можно реализовать регулирование на уровне шлюза, а не реализовать проверки скорости на уровне узла. Состояние скорости координации между всеми узлами по сути не выполняется.

- PE:03 Выбор служб

Как и любое решение по проектированию, рассмотрите любые компромиссы по целям других столпов, которые могут быть представлены с этим шаблоном.

Пример

В сценарии, размещенном в облаке, этот шаблон можно реализовать, разобщая роль воротника или виртуальную машину от доверенных ролей и служб в приложении. Реализация может использовать внутреннюю конечную точку, очередь или хранилище в качестве промежуточного механизма обмена данными. На схеме представлен пример с использованием внутренней конечной точки.

Пример шаблона с использованием веб-роли и рабочей роли облачных служб

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