Защита приложений контейнеров Azure с помощью Брандмауэр веб-приложений на Шлюз приложений
При размещении приложений или микрослужб в приложениях контейнеров Azure может не всегда потребоваться опубликовать их непосредственно в Интернете. Вместо этого может потребоваться предоставить их через обратный прокси-сервер.
Обратный прокси-сервер — это служба, которая находится перед одной или несколькими службами, перехватом и перенаправлением входящего трафика в соответствующее место назначения.
Обратные прокси-серверы позволяют размещать службы перед приложениями, поддерживающими перекрестные функции, включая следующие:
- Маршрутизация
- Кэширование
- Ограничение частоты
- Балансировка нагрузки
- Уровни безопасности
- Фильтрация запросов
В этой статье показано, как защитить приложения контейнеров с помощью Брандмауэр веб-приложений (WAF) на Шлюз приложений Azure с внутренней средой приложений контейнеров.
Дополнительные сведения о сетевых концепциях в контейнерных приложениях см. в разделе "Сетевая среда" в приложениях контейнеров Azure.
Необходимые компоненты
Внутренняя среда с пользовательской виртуальной сетью: у вас есть приложение-контейнер, которое находится во внутренней среде и интегрировано с пользовательской виртуальной сетью. Дополнительные сведения о создании пользовательского интегрированного приложения виртуальной сети см. в статье о предоставлении виртуальной сети внутренней среде приложений контейнеров Azure.
Сертификаты безопасности. Если необходимо использовать шифрование TLS/SSL для шлюза приложений, требуется действительный общедоступный сертификат, используемый для привязки к шлюзу приложений.
Получение домена приложения-контейнера
Чтобы получить значения домена по умолчанию и статического IP-адреса, выполните следующие действия, чтобы настроить зону Частная зона DNS.
В окне обзора группы ресурсов на портале выберите приложение-контейнер.
В окне "Обзор" для ресурса приложения контейнера выберите ссылку для среды приложений-контейнеров
В окне "Обзор" для ресурса среды приложения контейнера выберите представление JSON в правом верхнем углу страницы, чтобы просмотреть представление JSON среды приложений контейнеров.
Скопируйте значения свойств defaultDomain и staticIp и вставьте их в текстовый редактор. Вы создадите частную зону DNS, используя эти значения для домена по умолчанию в следующем разделе.
Создание и настройка зоны Частная зона DNS Azure
В меню портала Azure или на домашней странице нажмите кнопку Создать ресурс.
Найдите Частная зона DNS зону и выберите Частная зона DNS зону в результатах поиска.
Выберите кнопку Создать.
Введите следующие значения:
Параметр Действие Отток подписок Выберите свою подписку Azure. Группа ресурсов Выберите группу ресурсов приложения-контейнера. Имя. Введите свойство defaultDomain среды приложений контейнеров из предыдущего раздела. Расположение группы ресурсов Оставьте значение по умолчанию. Значение не требуется, так как Частная зона DNS Зоны являются глобальными. Выберите Review + create (Просмотреть и создать). После завершения проверки нажмите кнопку Создать.
После создания частной зоны DNS выберите "Перейти к ресурсу".
В окне обзора выберите +Набор записей, чтобы добавить новый набор записей.
В окне "Добавление набора записей" введите следующие значения:
Параметр Действие Имя. Введите *. Тип Выберите запись A-Address. СРОК ЖИЗНИ Оставьте значения по умолчанию. Единица срока жизни Оставьте значения по умолчанию. IP-адрес Введите свойство staticIp среды приложений контейнеров из предыдущего раздела. Нажмите кнопку "ОК ", чтобы создать набор записей.
Нажмите кнопку +Набор записей еще раз, чтобы добавить второй набор записей.
В окне "Добавление набора записей" введите следующие значения:
Параметр Действие Имя. Введите @. Тип Выберите запись A-Address. СРОК ЖИЗНИ Оставьте значения по умолчанию. Единица срока жизни Оставьте значения по умолчанию. IP-адрес Введите свойство staticIp среды приложений контейнеров из предыдущего раздела. Нажмите кнопку "ОК ", чтобы создать набор записей.
Выберите окно ссылок виртуальной сети в меню слева от страницы.
Нажмите кнопку +Добавить , чтобы создать новую ссылку со следующими значениями:
Параметр Действие Имя ссылки Введите my-custom-vnet-pdns-link. Я знаю ИД ресурса виртуальной сети Оставьте его без флажка. Виртуальная сеть Выберите виртуальную сеть, с которым интегрировано приложение-контейнер. Включить авторегистрацию Оставьте его без флажка. Нажмите кнопку "ОК ", чтобы создать ссылку виртуальной сети.
Создание и настройка Шлюза приложений Azure
Вкладка "Основные сведения"
Введите приведенные ниже значения в разделе Сведения о проекте.
Параметр Действие Отток подписок Выберите свою подписку Azure. Группа ресурсов Выберите группу ресурсов для приложения-контейнера. Имя Шлюза приложений Введите my-container-apps-agw. Область/регион Выберите расположение, в котором подготовлено приложение-контейнер. Уровень Выберите WAF версии 2. Вы можете использовать стандартную версию 2 , если вам не нужен WAF. Включение автомасштабирования Оставьте для использования по умолчанию. Для рабочих сред рекомендуется автомасштабирование. См. Шлюз приложений Azure автомасштабирования. Availability zone Выберите Отсутствует. Для рабочих сред рекомендуется использовать Зоны доступности для повышения доступности. HTTP2 оставьте значение по умолчанию. Политика WAF Выберите "Создать новую " и введите политику my-waf для политики WAF. Нажмите ОК. Если вы выбрали стандартную версию 2 для уровня, пропустите этот шаг. Виртуальная сеть Выберите виртуальную сеть, с которым интегрировано приложение-контейнер. Подсеть Выберите Управление конфигурацией подсети. Если у вас уже есть подсеть, которую вы хотите использовать, используйте ее и перейдите к разделу Frontends. В окне подсетей my-custom-vnet выберите +Subnet и введите следующие значения:
Параметр Действие Имя. Введите appgateway-subnet. Диапазон адресов подсети Оставьте значения по умолчанию. Для остальных параметров сохраните значения по умолчанию.
Нажмите кнопку "Сохранить", чтобы создать новую подсеть.
Закройте окно подсетей, чтобы вернуться в окно "Создание шлюза приложений".
Задайте следующие значения:
Параметр Действие Подсеть Выберите созданную вами подсеть appgateway-subnet . Нажмите кнопку "Далее": интерфейсы, чтобы продолжить.
Вкладка "Интерфейсные серверы"
На вкладке Frontends введите следующие значения:
Параметр Действие Тип интерфейсного IP-адреса Щелкните Общедоступный. Общедоступный IP-адрес Выберите Добавить. Введите имя внешнего интерфейса и нажмите кнопку "ОК" Примечание.
Для SKU Шлюз приложений версии 2 должен быть общедоступный внешний IP-адрес. У вас может быть как общедоступная, так и частная интерфейсная IP-конфигурация, но в настоящее время в номере SKU версии 2 не поддерживается только частная интерфейсная IP-конфигурация с общедоступным IP-адресом. Дополнительные сведения см . здесь.
По завершении выберите Далее: серверные компоненты.
Вкладка "Серверные компоненты"
Серверный пул используется для маршрутизации запросов на соответствующие серверные серверы. Серверные пулы могут состоять из любого сочетания следующих ресурсов:
- Сетевые карты
- общедоступные IP-адреса;
- Внутренние IP-адреса
- Масштабируемые наборы виртуальных машин
- Полные доменные имена (FQDN)
- Серверные серверы с несколькими клиентами, такие как приложение Azure службы и приложения контейнеров
В этом примере создается внутренний пул, предназначенный для приложения контейнера.
Щелкните Добавление серверного пула.
Откройте новую вкладку и перейдите к приложению-контейнеру.
В окне обзора приложения-контейнера найдите URL-адрес приложения и скопируйте его.
Вернитесь на вкладку Backends и введите следующие значения в окне "Добавление серверного пула ".
Параметр Действие Имя. Введите my-agw-backend-pool. Добавление серверного пула без целевых объектов Выберите Нет. Целевой тип Выберите IP-адрес или полное доменное имя. Назначение Введите URL-адрес приложения контейнера, скопированный и удалите префикс https://. Это полное доменное имя приложения контейнера. Выберите Добавить.
На вкладке "Серверные части" нажмите кнопку "Далее: конфигурация".
Вкладка конфигурации
На вкладке "Конфигурация" вы подключаете интерфейсный и внутренний пул, созданный с помощью правила маршрутизации.
Выберите " Добавить правило маршрутизации". Введите следующие значения:
Параметр Действие Имя. Введите my-agw-routing-rule. Приоритет Введите 1. На вкладке прослушивателя введите следующие значения:
Параметр Действие Имя прослушивателя Введите my-agw-listener. Интерфейсный IP-адрес Щелкните Общедоступный. Протокол Выберите HTTPS. Если у вас нет сертификата, который вы хотите использовать, можно выбрать HTTP Порт Введите 443. Если вы выбрали HTTP для протокола, введите 80 и перейдите к разделу по умолчанию или личного домена. Выбор сертификата Выберите " Отправить сертификат". Если сертификат хранится в хранилище ключей, можно выбрать сертификат из Key Vault. Имя сертификата Введите имя сертификата. PFX-файл сертификата Выберите действительный общедоступный сертификат. Пароль Введите пароль сертификата. Если вы хотите использовать домен по умолчанию, введите следующие значения:
Параметр Действие Тип прослушивателя Выберите Базовый. URL-адрес страницы ошибки Оставьте как нет Кроме того, если вы хотите использовать личный домен, введите следующие значения:
Параметр Действие Тип прослушивателя Выбор нескольких сайтов Host type Выбор одного Имена узлов Введите личный домен, который вы хотите использовать. URL-адрес страницы ошибки Оставьте как нет Перейдите на вкладку "Целевые объекты серверной части" и введите следующие значения:
Перейдите на вкладку "Целевые объекты серверной части" и введите следующие значения:
Параметр Действие Целевой тип Выберите созданный ранее пул my-agw-backend-pool . Параметры серверной части Выберите Добавить. В окне "Добавить серверную часть" введите следующие значения:
Параметр Действие Имя параметров серверной части Введите параметр my-agw-backend-setting. Протокол серверной части Выберите HTTPS. Серверный порт Введите 443. Использовать сертификат хорошо известного центра сертификации Выберите Да. Переопределить новым именем узла Выберите Да. Переопределение имени узла Выберите " Выбрать имя узла" из серверного целевого объекта. Создание настраиваемых проб Выберите Нет. Нажмите кнопку "Добавить", чтобы добавить параметры серверной части.
В окне "Добавление правила маршрутизации" снова нажмите кнопку "Добавить".
Нажмите кнопку "Далее": теги.
Нажмите кнопку "Далее": просмотр и создание, а затем нажмите кнопку "Создать".
Добавление приватного канала в Шлюз приложений
Вы можете установить защищенное подключение к внутренним средам приложений-контейнеров, используя приватный канал, так как он позволяет Шлюз приложений взаимодействовать с приложением-контейнером в серверной части через виртуальную сеть.
После создания Шлюз приложений выберите "Перейти к ресурсу".
В меню слева выберите приватную ссылку, а затем нажмите кнопку "Добавить".
Введите следующие значения:
Параметр Действие Имя. Введите my-agw-private-link. Подсеть приватного канала Выберите подсеть, с которой вы хотите создать приватный канал. Конфигурация IP внешнего интерфейса Выберите внешний IP-адрес для Шлюз приложений. В разделе "Параметры частного IP-адреса" выберите "Добавить".
Выберите " Добавить " в нижней части окна.
Проверка приложения-контейнера
Найдите общедоступный IP-адрес шлюза приложений на странице обзора или найдите адрес. Чтобы выполнить поиск, выберите все ресурсы и введите my-container-apps-agw-pip в поле поиска. Затем выберите IP-адрес в результатах поиска.
Перейдите к общедоступному IP-адресу шлюза приложений.
Запрос автоматически направляется в приложение-контейнер, которое проверяет успешное создание шлюза приложений.
Очистка ресурсов
Если созданные ресурсы вам больше не нужны, удалите их. При удалении группы ресурсов также удаляются все связанные ресурсы.
Чтобы удалить группу ресурсов, выполните указанные ниже действия.
В меню портала Azure выберите Группы ресурсов или выполните поиск по запросу Группы ресурсов и выберите этот пункт.
На странице групп ресурсов найдите и выберите my-container-apps.
На странице группы ресурсов выберите Удалить группу ресурсов.
Введите my-container-apps в поле "ВВЕДИТЕ ИМЯ ГРУППЫ РЕСУРСОВ" и нажмите кнопку "Удалить"