Деплой Docker‑образа ноды Вебмониторэкс в Azure¶
Данная инструкция содержит краткое руководство по деплою Docker‑образа ноды Вебмониторэкс (NGINX) с помощью облачной платформы Microsoft Azure. Для деплоя Docker-образа используется служба Azure Экземпляры контейнеров.
Ограничение инструкции
В данной инструкции не описана конфигурация для балансировки нагрузки и автоматического масштабирования нод Вебмониторэкс. Чтобы выполнить конфигурацию самостоятельно, рекомендуем ознакомиться с документацией на шлюз приложений Azure.
Требования¶
-
Действующая подписка Azure
-
Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс
Способы конфигурации Docker-контейнера с нодой Вебмониторэкс¶
При деплое необходимо передать в Docker‑контейнер параметры ноды Вебмониторэкс одним из способов:
-
Через доступные переменные окружения. С помощью переменных окружения задаются базовые настройки ноды. Большинство доступных директив не могут быть переданы через переменные.
-
В примонтированном конфигурационном файле. С помощью конфигурационного файла можно выполнить полную настройку ноды, используя любые доступные директивы. При этом способе конфигурации параметры для подключения к Вычислительному кластеру Вебмониторэкс передаются в переменных окружения.
Деплой контейнера с настройкой ноды через переменные окружения¶
Для деплоя контейнера с настройками ноды, переданными только в переменных окружения, вы можете использовать следующие инструменты:
-
Azure CLI (используется в данной инструкции)
Для деплоя контейнера с помощью Azure CLI:
-
Перейдите в Консоль управления → Ноды и создайте ноду.
-
Скопируйте сгенерированный токен.
-
Выполните вход в Azure CLI с помощью команды
az login
:az login
-
Создайте группу ресурсов с помощью команды
az group create
. Например, группаmyResourceGroup
в Восточном регионе США:az group create --name myResourceGroup --location eastus
-
Запишите токен ноды Вебмониторэкс в локальную переменную окружения, чтобы передать чувствительные данные в Microsoft Azure более безопасным образом:
export WALLARM_API_TOKEN='<WALLARM_API_TOKEN>'
-
Создайте ресурс Azure из Docker-контейнера с нодой Вебмониторэкс с помощью команды
az container create
:az container create \ --resource-group myResourceGroup \ --name wallarm-node \ --dns-name-label wallarm \ --ports 80 \ --image registry-1.docker.io/wallarm/node:4.4.0-1 \ --environment-variables WALLARM_API_TOKEN=${WALLARM_API_TOKEN} NGINX_BACKEND='example.com' WALLARM_API_HOST='api.wallarm.ru'
--resource-group
: название группы ресурсов, созданной на шаге 2--name
: название контейнера--dns-name-label
: метка DNS-имени для контейнера--ports
: порт, на котором будет доступен контейнер--image
: название Docker-образа с нодой Вебмониторэкс-
--environment-variables
: переменные окружения с настройками ноды Вебмониторэкс из таблицы нижеПеременная окружения Описание Обязательная? WALLARM_API_TOKEN
Токен ноды Вебмониторэкс. Предыдущие переменные для настройки доступа к Вычислительному кластеру Вебмониторэкс
Для деплоя ноды версии 3.6 и ниже использовались переменные
DEPLOY_USER
иDEPLOY_PASSWORD
. Начиная с версии 4.0, рекомендуется использоватьWALLARM_API_TOKEN
. Подробнее о миграции на новую версиюДа NGINX_BACKEND
Домен или IP‑адрес ресурса, который необходимо защитить с помощью Вебмониторэкс. Да WALLARM_API_HOST
Адрес Вебмониторэкс API. Должен быть api.wallarm.ru
.
По умолчанию:api.wallarm.com
.Нет WALLARM_MODE
Режим работы ноды Вебмониторэкс: block
, чтобы блокировать вредоносные запросыsafe_blocking
, чтобы блокировать только те вредоносные запросы, которые отправлены с IP‑адресов из серого спискаmonitoring
, чтобы анализировать, но не блокировать запросыoff
, чтобы не обрабатывать входящий трафик
monitoring
.
Подробное описание режимов работыНет WALLARM_APPLICATION
Уникальный идентификатор для обозначения защищенного приложения в Вычислительном кластере Вебмониторэкс. Значение может быть любым целым положительным числом, кроме 0
.
По умолчанию (если переменная не указана явно):-1
(приложение default в Консоли управления → Настройки → Приложения).
Подробнее о настройке приложений →Нет TARANTOOL_MEMORY_GB
Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. Нет NGINX_PORT
Порт, который будет использовать NGINX внутри Docker‑контейнера.
Начиная с Docker‑образа версии4.0.2-1
, порт сервисаwallarm-status
, от которогоcollectd
получает данные, обновляется автоматически в соответствии со значениемNGINX_PORT
.
По умолчанию (если переменная не указана явно):80
.
Синтаксис:-e NGINX_PORT='443'
.Нет DISABLE_IPV6
Если в переменной передано любое значение, кроме пустого, из конфигурационного файла NGINX будет удалена строка listen [::]:80 default_server ipv6only=on;
и веб-сервер NGINX перестанет принимать IPv6-соединения.
Если переменная не передана явно или в ней передано пустое значение""
, NGINX принимает и IPv6- и IPv4-соединения.Нет
-
Перейдите на портал Azure и убедитесь, что созданный ресурс отображается в списке ресурсов.
Деплой контейнера с настройкой ноды через примонтированный файл¶
Для деплоя контейнера с настройками ноды Вебмониторэкс, переданными через переменные окружения и примонтированный конфигурационный файл, может использоваться только Azure CLI.
Чтобы запустить контейнер с переменными окружения и примонтированным конфигурационным файлом:
-
Перейдите в Консоль управления → Ноды и создайте ноду.
-
Скопируйте сгенерированный токен.
-
Выполните вход в Azure CLI с помощью команды
az login
:az login
-
Создайте группу ресурсов с помощью команды
az group create
. Например, группаmyResourceGroup
в Восточном регионе США:az group create --name myResourceGroup --location eastus
-
Создайте локально конфигурационный файл с настройками ноды Вебмониторэкс. Пример файла с минимальными настройками:
server { listen 80 default_server; listen [::]:80 default_server ipv6only=on; #listen 443 ssl; server_name localhost; #ssl_certificate cert.pem; #ssl_certificate_key cert.key; root /usr/share/nginx/html; index index.html index.htm; wallarm_mode monitoring; # wallarm_application 1; location / { proxy_pass http://example.com; include proxy_params; } }
Набор директив, которые могут быть указаны в конфигурационном файле →
-
Расположите конфигурационный файл одним из способов, который подходит для подключения томов данных в Azure. Все способы описаны в разделе Подключение томов данных в документации Azure.
В данной инструкции конфигурационный файл монтируется из репозитория Git.
-
Запишите токен ноды Вебмониторэкс в локальную переменную окружения, чтобы передать чувствительные данные в Microsoft Azure более безопасным образом:
export WALLARM_API_TOKEN='<WALLARM_API_TOKEN>'
-
Создайте ресурс Azure из Docker-контейнера с нодой Вебмониторэкс с помощью команды
az container create
. Например:az container create \ --resource-group myResourceGroup \ --name wallarm-node \ --dns-name-label wallarm \ --ports 80 \ --image registry-1.docker.io/wallarm/node:4.4.0-1 \ --gitrepo-url <URL_OF_GITREPO> \ --gitrepo-mount-path /etc/nginx/sites-enabled \ --environment-variables WALLARM_API_TOKEN=${WALLARM_API_TOKEN} WALLARM_API_HOST='api.wallarm.ru'
--resource-group
: название группы ресурсов, созданной на шаге 2--name
: название контейнера--dns-name-label
: метка DNS-имени для контейнера--ports
: порт, на котором будет доступен контейнер--image
: название Docker-образа с нодой Вебмониторэкс--gitrepo-url
: URL репозитория Git, в котором хранится конфигурационный файл. Если файл хранится в корне репозитория, достаточно передать только этот параметр. Если файл хранится в директории репозитория, необходимо дополнительно передать параметр--gitrepo-dir
с путем до директории, например:--gitrepo-dir ./dir1
.-
--gitrepo-mount-path
: директория контейнера, в которую монтируется конфигурационный файл. Конфигурационный файл может быть примонтирован в директории контейнера, которые использует NGINX:/etc/nginx/conf.d
— общие настройки/etc/nginx/sites-enabled
— настройки виртуальных хостов/var/www/html
— статические файлы
Директивы ноды описываются в файле контейнера
/etc/nginx/sites-enabled/default
. -
--environment-variables
: переменные окружения с параметрами для подключения к Вычислительному кластеру Вебмониторэкс из таблицы нижеПеременная окружения Описание Обязательная? WALLARM_API_TOKEN
Токен ноды Вебмониторэкс. Предыдущие переменные для настройки доступа к Вычислительному кластеру Вебмониторэкс
Для деплоя ноды версии 3.6 и ниже использовались переменные
DEPLOY_USER
иDEPLOY_PASSWORD
. Начиная с версии 4.0, рекомендуется использоватьWALLARM_API_TOKEN
. Подробнее о миграции на новую версиюДа WALLARM_API_HOST
Адрес Вебмониторэкс API. Должен быть api.wallarm.ru
.
По умолчанию:api.wallarm.com
.Нет
-
Перейдите на портал Azure и убедитесь, что созданный ресурс отображается в списке ресурсов.
Тестирование работы ноды Вебмониторэкс¶
-
На портале Azure перейдите к ресурсу с запущенной нодой Вебмониторэкс и скопируйте Полное доменное имя.
Если доменное имя отсутствует, убедитесь, что контейнер находится в статусе Выполняется.
-
Отправьте тестовый запрос с атакой Path Traversal на скопированный адрес:
curl http://<COPIED_DOMAIN>/etc/passwd
-
Перейдите в Консоль управления Вебмониторэкс → секция События и убедитесь, что атака появилась в списке.
Сообщения об ошибках запуска контейнера отображаются в информации о ресурсе на вкладке Контейнеры → Журналы на портале Azure. Если ресурс недоступен, убедитесь, что в контейнер переданы корректные значения всех обязательных параметров ноды.