Предоставление Azure Spring Apps через обратный прокси-сервер

Azure Spring Apps
Шлюз приложений Azure
Azure Front Door

При размещении приложений или микрослужб в Azure Spring Apps вам не всегда требуется публиковать их непосредственно в Интернете. Вместо этого может потребоваться предоставить их через обратный прокси-сервер. Такой подход позволяет разместить службу перед приложениями. Служба может определять перекрестные функции, такие как возможности брандмауэра веб-приложения (WAF), чтобы защитить приложения, балансировку нагрузки, маршрутизацию, фильтрацию запросов и ограничение скорости.

При развертывании обычной службы обратного прокси-сервера, например Шлюз приложений Azure или Azure Front Door перед Azure Spring Apps, необходимо убедиться, что приложения можно получить только через обратный прокси-сервер. Эта защита помогает предотвратить попытку вредоносных пользователей обойти ограничения регулирования WAF или обойти их.

Защита от атак DDoS Azure в сочетании с рекомендациями по проектированию приложений предоставляет расширенные функции защиты от атак DDoS. Необходимо включить защиту от атак DDOS Azure в любой виртуальной сети периметра.

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

  • Разверните Azure Spring Apps в виртуальной сети и частный доступ к приложениям из сети.

    • У вас есть контроль над виртуальной сетью, в которой выполняются приложения. Используйте собственные сетевые функции Azure, такие как группы безопасности сети (NSG), чтобы заблокировать доступ, чтобы разрешить только обратный прокси-сервер.

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

    • Вы не можете использовать Azure Front Door напрямую, так как он не может связаться с экземпляром Azure Spring Apps в частной виртуальной сети. Azure Front Door может подключаться к серверным службам только через общедоступный IP-адрес или через службы, использующие частную конечную точку. Если у вас есть развертывание Azure Spring Apps с несколькими регионами и требуется глобальная балансировка нагрузки, вы по-прежнему можете предоставлять экземпляры Azure Spring Apps через Шлюз приложений. Чтобы достичь этого сценария, вы размещаете Azure Front Door перед Шлюз приложений. Этот подход описан в сценарии 2 далее в этой статье.

  • Разверните Azure Spring Apps за пределами виртуальной сети и опубликуйте приложения в Интернете напрямую, если назначить им конечную точку.

    • Вы не управляете сетью и не можете использовать группы безопасности сети для ограничения доступа. Для доступа к приложениям требуется только обратный прокси-сервер в Azure Spring Apps.

    • Так как ваши приложения общедоступны, вы можете использовать Шлюз приложений или Azure Front Door в качестве обратного прокси-сервера. Подход Шлюз приложений описан в сценарии 3 далее в этой статье. Подход Azure Front Door описан в сценарии 4 далее в этой статье.

    • При необходимости можно использовать сочетание обоих подходов. Если вы используете оба Шлюз приложений и Azure Front Door, используйте одинаковые ограничения доступа между двумя обратными прокси-серверами, которые используются в сценарии 2.

Примечание.

Вы можете использовать другие службы обратного прокси-сервера вместо Шлюз приложений или Azure Front Door. Для региональных служб, базирующихся в виртуальной сети Azure, таких как Azure Управление API, руководство аналогично руководству по Шлюз приложений. Если вы используете службы, отличные от Azure, руководство аналогично руководству по Azure Front Door.

Сравнение сценариев

В следующей таблице представлено краткое сравнение четырех сценариев конфигурации обратного прокси-сервера для Azure Spring Apps. Полные сведения о каждом сценарии см. в соответствующем разделе этой статьи.

Сценарий Развертывание Службы Настройка
1 Внутри виртуальной сети Шлюз приложений — Для каждого приложения, которое вы хотите предоставить, назначьте ей конечную точку и сопоставите соответствующий личный домен или домены с этим приложением.
— Для внутреннего пула в Шлюз приложений используйте назначенную конечную точку каждого приложения.
— В подсети среды выполнения службы добавьте группу безопасности сети, чтобы разрешить трафик только из подсети Шлюз приложений, подсети приложений и подсистемы балансировки нагрузки Azure. Блокировать весь остальной трафик.
2 Внутри виртуальной сети Azure Front Door и Шлюз приложений — Ограничить доступ между Шлюз приложений и Azure Spring Apps с помощью того же подхода, как описано в сценарии 1.
— В подсети Шлюз приложений создайте группу безопасности сети, чтобы разрешить только трафик с тегом AzureFrontDoor.Backend службы.
— Создайте пользовательское правило WAF в Шлюз приложений для проверки заголовка HTTP, содержащего идентификатор конкретного X-Azure-FDID экземпляра Azure Front Door.
3 Вне виртуальной сети Шлюз приложений с помощью Spring Cloud Gateway — Используйте Spring Cloud Gateway для предоставления внутренних приложений. Для приложения Spring Cloud Gateway требуется назначенная конечная точка. Пользовательские домены всех внутренних приложений должны быть сопоставлены с этим одним приложением Spring Cloud Gateway.
— Для внутреннего пула в Шлюз приложений используйте назначенную конечную точку приложения Spring Cloud Gateway.
— В Spring Cloud Gateway задайте XForwarded Remote Addr предикат маршрута общедоступным IP-адресом Шлюз приложений.
— При необходимости в приложениях Spring Framework задайте server.forward-headers-strategy для FRAMEWORKсвойства приложения значение .
4 Вне виртуальной сети Azure Front Door с Spring Cloud Gateway — Используйте Spring Cloud Gateway для предоставления внутренних приложений. Для приложения Spring Cloud Gateway требуется назначенная конечная точка. Пользовательские домены всех внутренних приложений должны быть сопоставлены с этим одним приложением Spring Cloud Gateway.
— Для внутреннего пула или источника в Azure Front Door используйте назначенную конечную точку приложения Spring Cloud Gateway.
— В Spring Cloud Gateway задайте XForwarded Remote Addr предикат маршрута для всех исходящих ДИАПАЗОНов IP-адресов Azure Front Door и сохраните этот параметр в актуальном состоянии. Header Задайте предикат маршрута, чтобы убедиться, что X-Azure-FDID заголовок HTTP содержит уникальный идентификатор Azure Front Door.
— При необходимости в приложениях Spring Framework задайте server.forward-headers-strategy для FRAMEWORKсвойства приложения значение .

Примечание.

После настройки конфигурации рассмотрите возможность использования Политика Azure или блокировки ресурсов, чтобы предотвратить случайные или вредоносные изменения, которые могут позволить обходу обратного прокси-сервера и напрямую предоставлять приложение. Эта защита применяется только к ресурсам Azure (в частности, группы безопасности сети), так как конфигурация в Azure Spring Apps не отображается в плоскости управления Azure.

Развертывание в виртуальной сети

При развертывании Azure Spring Apps в виртуальной сети используется две подсети:

  • Подсеть среды выполнения службы, содержащая соответствующие сетевые ресурсы
  • Подсеть приложений, в которую размещается код

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

Внимание

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

Каждое приложение, которое вы хотите предоставить через обратный прокси-сервер, должно иметь назначенную конечную точку, чтобы обратный прокси-сервер смог связаться с приложением в виртуальной сети. Для каждого приложения также следует сопоставить пользовательские домены , которые он использует, чтобы избежать переопределения заголовка HTTP Host в обратном прокси-сервере и сохранить исходное имя узла нетронутым. Этот метод позволяет избежать таких проблем, как неработающие файлы cookie или URL-адреса перенаправления, которые не работают должным образом. Дополнительные сведения см. в разделе "Сохранение имени узла".

Примечание.

Кроме того, (или для защиты, возможно, в дополнение к NSG) вы можете следовать инструкциям, если у вас есть Azure Spring Apps, развернутые за пределами виртуальной сети. В этом разделе объясняется, как обычно достигается ограничение доступа с помощью Spring Cloud Gateway, который также влияет на внутренние приложения, так как они больше не нуждаются в назначенной конечной точке или пользовательском домене.

Сценарий 1. Использование Шлюз приложений в качестве обратного прокси-сервера

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

На следующей схеме показана архитектура сценария 1:

Схема использования Шлюз приложений Azure с Azure Spring Apps в виртуальной сети.

Скачайте файл Visio для этой архитектуры.

Когда Шлюз приложений находится перед экземпляром Azure Spring Apps, вы используете назначенную конечную точку приложения Spring Cloud Gateway в качестве внутреннего пула. Пример конечной точки: myspringcloudservice-myapp.private.azuremicroservices.io. Конечная точка разрешает частный IP-адрес в подсети среды выполнения службы. Таким образом, чтобы ограничить доступ, вы можете разместить группу безопасности сети в подсети среды выполнения службы со следующими правилами безопасности для входящего трафика (предоставляя правило запрета наименьшим приоритетом):

Действие Тип источника Исходное значение Протокол Диапазоны портов назначения
Разрешить IP-адреса Диапазон частных IP-адресов подсети Шлюз приложений (например, 10.1.2.0/24). TCP 80, 443 (или другие порты по мере необходимости)
Разрешить IP-адреса Диапазон частных IP-адресов подсети приложений в Azure Spring Apps (например, 10.1.1.0/24). TCP *
Разрешить Тег службы AzureLoadBalancer Any *
Запретить Тег службы Any Any *

Конфигурация сценария 1 гарантирует, что подсеть среды выполнения службы разрешает трафик только из следующих источников:

  • Выделенная подсеть Шлюз приложений
  • Подсеть приложений (двунаправленное взаимодействие между двумя подсетями Azure Spring Apps требуется.)
  • Подсистема балансировки нагрузки Azure (которая является общим требованием к платформе Azure)

Все остальные трафик заблокированы.

Сценарий 2. Использование Azure Front Door и Шлюз приложений в качестве обратного прокси-сервера

Как упоминалось ранее, вы не можете разместить Azure Front Door непосредственно перед Azure Spring Apps, так как он не может связаться с частной виртуальной сетью. (Azure Front Door Standard или Premium может подключаться к частным конечным точкам в виртуальной сети, но Azure Spring Apps в настоящее время не предлагает поддержку частных конечных точек.) Если вы по-прежнему хотите использовать Azure Front Door, например для глобальной балансировки нагрузки между несколькими экземплярами Azure Spring Apps в разных регионах Azure, вы можете по-прежнему предоставлять приложения через Шлюз приложений. Чтобы достичь этого сценария, вы размещаете Azure Front Door перед Шлюз приложений.

На следующей схеме показана архитектура сценария 2:

Схема использования Azure Front Door и Шлюз приложений Azure с Azure Spring Apps в виртуальной сети.

Скачайте файл Visio для этой архитектуры.

Конфигурация 2 сценария 2 реализует ограничения доступа между Шлюз приложений и Azure Spring Apps таким же образом, как и сценарий 1. Группа безопасности сети размещается в подсети среды выполнения службы с соответствующими правилами.

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

Развертывание за пределами виртуальной сети

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

Использование Spring Cloud Gateway для предоставления и защиты приложений

Чтобы удалить ответственность за управление доступом от разработчиков отдельных приложений, можно применить перекрестные ограничения с помощью Spring Cloud Gateway. Spring Cloud Gateway — это часто используемый проект Spring, который можно развернуть в Azure Spring Apps так же, как и любое другое приложение. Используя Spring Cloud Gateway, вы можете хранить собственные приложения в экземпляре Azure Spring Apps и обеспечить доступ только через общее приложение Spring Cloud Gateway. Затем вы настроите это приложение с необходимыми ограничениями доступа с помощью предикатов маршрутов, которые являются встроенной функцией Spring Cloud Gateway. Предикаты маршрутов могут использовать различные атрибуты входящего HTTP-запроса, чтобы определить, следует ли направлять запрос в серверное приложение или отклонять его. Предикат может использовать такие атрибуты, как IP-адрес клиента, метод запроса или путь, заголовки HTTP и т. д.

Внимание

Когда вы размещаете Spring Cloud Gateway перед внутренними приложениями таким образом, необходимо сопоставить все пользовательские домены с приложением Spring Cloud Gateway, а не с внутренними приложениями. В противном случае Azure Spring Apps не перенаправит входящий трафик в шлюз Spring Cloud, когда запрос поступает для любого из этих пользовательских доменов.

Этот подход предполагает, что обратный прокси-сервер не переопределяет заголовок HTTP Host и сохраняет исходное имя узла нетронутым. Дополнительные сведения см. в разделе "Сохранение имени узла".

Этот шаблон часто используется. В целях этой статьи предполагается, что вы предоставляете приложения через Spring Cloud Gateway. Мы ожидаем, что вы используете предикаты маршрута для настройки необходимых ограничений доступа, чтобы гарантировать, что разрешены только запросы от обратного прокси-сервера. Даже если вы не используете Шлюз Spring Cloud, применяются те же общие принципы. Однако необходимо создать собственные возможности фильтрации запросов в приложения на основе того же X-Forwarded-For заголовка HTTP, который описан далее в этой статье.

Примечание.

Spring Cloud Gateway также является обратным прокси-сервером, который предоставляет такие службы, как маршрутизация, фильтрация запросов и ограничение скорости. Если эта служба предоставляет все необходимые функции, возможно, вам не потребуется дополнительный обратный прокси-сервер, например Шлюз приложений или Azure Front Door. Наиболее распространенные причины по-прежнему рассмотреть возможность использования других служб Azure предназначены для функций WAF, предоставляемых или для глобальных возможностей балансировки нагрузки, предоставляемых Azure Front Door.

Описание работы Spring Cloud Gateway выходит за рамки этой статьи. Это высоко гибкая служба, которую можно настроить с помощью кода или конфигурации. Для простоты в этой статье описывается только чисто управляемый конфигурацией подход, который не требует изменений кода. Этот подход можно реализовать, включив традиционный application.properties или application.yml файл в развернутое приложение Spring Cloud Gateway. Вы также можете реализовать подход с помощью сервера конфигурации в Azure Spring Apps , который внешний файл конфигурации в репозиторий Git. В следующих примерах мы реализуем подход с синтаксисом application.yml YAML, но аналогичный application.properties синтаксис также работает.

Маршрутизация запросов к приложениям

По умолчанию, когда ваше приложение в Azure Spring Apps не назначает ей конечную точку или личный домен, он недоступен извне. Когда приложение регистрируется в реестре служб Spring Cloud, Spring Cloud Gateway может обнаружить приложение, чтобы использовать правила маршрутизации для пересылки трафика в нужное целевое приложение.

В результате единственное приложение, которому необходимо назначить конечную точку в Azure Spring Apps, — это приложение Spring Cloud Gateway. Эта конечная точка делает ее доступной извне. Не следует назначать конечную точку другим приложениям. В противном случае приложения можно получить напрямую, а не через Шлюз Spring Cloud, что, в свою очередь, позволяет обойти обратный прокси-сервер.

Простой способ предоставления всех зарегистрированных приложений через Spring Cloud Gateway — использовать указатель определения маршрута DiscoveryClient следующим образом:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true
          predicates:
          - Path="/"+serviceId+"/**" # Include the Path predicate to retain default behavior
          - (...)

Кроме того, вы можете выборочно предоставлять определенные приложения через Spring Cloud Gateway, определив маршруты для конкретных приложений:

spring:
  cloud:
    gateway:
      routes:
      - id: my_app1_route
        uri: lb://MY-APP1
        filters:
        - RewritePath=/myapp1(?<segment>/?.*), $\{segment}
        predicates:
        - (...)

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

Ограничение доступа с помощью заголовка X-Forwarded-For HTTP

При развертывании приложения в Azure Spring Apps http-клиент или обратный прокси-сервер не подключается непосредственно к приложению. Сетевой трафик сначала проходит через внутренний контроллер входящего трафика.

Примечание.

Этот подход означает, что у вас есть три или даже четыре обратных прокси-сервера в конвейере запросов, прежде чем вы перейдете к приложению в следующих сценариях. Это возможные обратные прокси-серверы: Azure Front Door и(или) Шлюз приложений, контроллер входящего трафика и приложение Spring Cloud Gateway.

Из-за дополнительной службы IP-адрес клиента прямой сети всегда является внутренним компонентом Azure Spring Apps. IP-адрес никогда не является логическим клиентом, например обратным прокси-сервером, который вы ожидаете вызвать приложение. Ip-адрес клиента нельзя использовать для ограничений доступа. Вы также не можете использовать встроенный RemoteAddr предикат маршрута Spring Cloud для фильтрации запросов, так как он использует IP-адрес клиента по умолчанию.

К счастью, Azure Spring Apps всегда добавляет IP-адрес X-Forwarded-For логического клиента в заголовок HTTP в запросе в приложение. Последнее (правое значение) заголовка X-Forwarded-For всегда содержит IP-адрес логического клиента.

Чтобы отфильтровать запросы на основе заголовка X-Forwarded-For , можно использовать встроенный XForwarded Remote Addr предикат маршрута. Этот предикат позволяет настроить список IP-адресов или диапазонов IP-адресов обратного прокси-сервера, которые разрешены в качестве правильного значения.

Примечание.

Для XForwarded Remote Addr предиката маршрута требуется Spring Cloud Gateway версии 3.1.1 или более поздней. Если вы не можете внести несколько изменений кода в приложение Spring Cloud Gateway, чтобы изменить RemoteAddr способ определения IP-адреса клиента. Вы можете достичь того же результата, что и с XForwarded Remote Addr предикатом маршрута. RemoteAddr Настройте предикат маршрута для использования XForwardedRemoteAddressResolver и настройки последнего со значением maxTrustedIndex 1. Этот подход настраивает приложение Spring Cloud Gateway для использования правого значения заголовка X-Forwarded-For в качестве IP-адреса логического клиента.

Настройка приложения для просмотра правильного имени узла и URL-адреса запроса

При использовании Spring Cloud Gateway необходимо учитывать важный фактор. Spring Cloud Gateway задает заголовок HTTP Host для исходящего запроса на внутренний IP-адрес экземпляра приложения, например Host: 10.2.1.15:1025. Имя узла запроса, которое отображает код приложения, больше не является исходным именем узла запроса, отправленного браузером, например contoso.com. В некоторых случаях этот результат может привести к проблемам, таким как сломанные файлы cookie или перенаправление URL-адресов, которые не работают должным образом. Дополнительные сведения об этих типах проблем и настройке обратной прокси-службы, например Шлюз приложений или Azure Front Door, чтобы избежать их, см. в разделе "Сохранение имен узла".

Spring Cloud Gateway предоставляет исходное имя узла в заголовкеForwarded. Он также задает другие заголовки, такие как X-Forwarded-Port, X-Forwarded-Protoи X-Forwarded-Prefix поэтому приложение может использовать их для восстановления исходного URL-адреса запроса. В приложениях Spring Framework эту конфигурацию можно реализовать автоматически, задав server.forward-headers-strategy параметр FRAMEWORK в свойствах приложения. (Не присвойте этому значению NATIVEзначение . В противном случае используются другие заголовки, которые не учитывают обязательный X-Forwarded-Prefix заголовок.) Дополнительные сведения см. в разделе "Запуск за внешним прокси-сервером". В этой конфигурации метод HttpServletRequest.getRequestURL принимает все эти заголовки в учетную запись и возвращает точный URL-адрес запроса, отправляемый браузером.

Примечание.

Вы можете заманчиво использовать PreserveHostHeader фильтр в Spring Cloud Gateway, который сохраняет исходное имя узла в исходящем запросе. Однако этот подход не работает, так как это имя узла уже сопоставляется как личный домен в приложении Spring Cloud Gateway. Не удается сопоставить его во второй раз в последнем серверном приложении. Эта конфигурация приводит к ошибке HTTP 404 , так как серверное приложение отклоняет входящий запрос. Он не распознает имя узла.

Сценарий 3. Использование Шлюз приложений с Spring Cloud Gateway

Сценарий 3 описывает использование Шлюз приложений в качестве обратного прокси-сервера для общедоступных приложений через конечную точку Шлюза Spring Cloud.

На следующей схеме показана архитектура сценария 3:

Схема использования Шлюз приложений Azure с Azure Spring Apps за пределами виртуальной сети.

Скачайте файл Visio для этой архитектуры.

Когда Шлюз приложений находится перед экземпляром Azure Spring Apps, вы используете назначенную конечную точку приложения Spring Cloud Gateway в качестве внутреннего пула. Пример конечной точки: myspringcloudservice-mygateway.azuremicroservices.io. Так как Azure Spring Apps развертывается за пределами виртуальной сети, этот URL-адрес разрешается на общедоступный IP-адрес. Если серверный пул является общедоступной конечной точкой, Шлюз приложений использует внешний общедоступный IP-адрес для доступа к серверной службе.

Чтобы разрешить доступ только к запросам из экземпляра Шлюз приложений, можно настроить XForwarded Remote Addr предикат маршрута. Настройте предикат, чтобы разрешить только запросы с выделенного общедоступного IP-адреса Шлюз приложений, как показано в следующем примере:

(...)
predicates:
- XForwardedRemoteAddr="20.103.252.85"

Сценарий 4. Использование Azure Front Door с Spring Cloud Gateway

Сценарий 4 описывает использование Azure Front Door в качестве обратного прокси-сервера для общедоступных приложений через конечную точку Шлюза Spring Cloud.

На следующей схеме показана архитектура сценария 4.

Схема использования Azure Front Door с Azure Spring Apps за пределами виртуальной сети.

Скачайте файл Visio для этой архитектуры.

Как и в случае 3, эта конфигурация использует общедоступный URL-адрес приложения Spring Cloud Gateway в качестве внутреннего пула или источника в Azure Front Door. Пример конечной точки: https://myspringcloudservice-mygateway.azuremicroservices.io.

Так как Azure Front Door — это глобальная служба с множеством пограничных расположений, она использует множество IP-адресов для взаимодействия с серверным пулом. В документации по Azure Front Door описывается , как заблокировать доступ к серверной части, чтобы разрешить только трафик Azure Front Door. Однако в этом сценарии вы не управляете сетью Azure, в которой развертываются ваши приложения. К сожалению, вы не можете использовать AzureFrontDoor.Backend тег службы, чтобы получить полный список исходящих IP-адресов Azure Front Door, которые гарантированно будут текущими. Вместо этого необходимо скачать диапазоны IP-адресов Azure и теги службы, найти AzureFrontDoor.Backend раздел и скопировать все диапазоны IP-адресов из addressPrefixes массива в XForwarded Remote Addr конфигурацию предиката маршрута.

Внимание

Диапазоны IP-адресов, используемые Azure Front Door, могут измениться. Достоверные диапазоны IP-адресов Azure и файл тегов служб публикуются еженедельно и записывают любые изменения в диапазоны IP-адресов. Чтобы убедиться, что конфигурация остается текущей, проверьте диапазоны IP-адресов еженедельно и обновите конфигурацию по мере необходимости (в идеале, автоматически). Чтобы избежать затрат на обслуживание этого подхода, можно развернуть Azure Spring Apps в виртуальной сети с другими описанными сценариями с помощью группы безопасности сети с тегом AzureFrontDoor.Backend службы.

Так как диапазоны IP-адресов Azure Front Door совместно используются для других организаций, вам также необходимо обеспечить блокировку доступа только к конкретному экземпляру Azure Front Door на основе X-Azure-FDID заголовка HTTP, содержащего уникальный Front Door ID. Доступ можно ограничить с помощью Header предиката маршрута, который отклоняет запрос, если указанный заголовок HTTP не имеет определенного значения.

В этом сценарии конфигурация предиката маршрута Spring Cloud шлюза может выглядеть следующим образом:

(...)
predicates:
- XForwardedRemoteAddr="13.73.248.16/29","20.21.37.40/29","20.36.120.104/29","20.37.64.104/29", ...(and many more)...
- Header="X-Azure-FDID", "00112233-4455-6677-8899-aabbccddeeff"

Соавторы

Корпорация Майкрософт поддерживает это содержимое. Следующий участник разработал исходное содержимое.

Автор субъекта:

  • Jelle Druyts | Главный инженер клиента

Чтобы просмотреть неопубликованные профили LinkedIn, войдите в LinkedIn.

Следующие шаги