Перейти к содержанию

Запуск Docker‑образа на основе Envoy

Обзор образа

Инструкция описывает шаги для запуска Docker‑образа Валарм на основе Envoy 1.18.4. Образ содержит все системы, необходимые для корректной работы продукта:

  • Сервисы прокси-сервера Envoy с встроенным модулем Валарм

  • Модули Tarantool для постаналитики

  • Другие сервисы и скрипты

Модуль Валарм реализован в виде HTTP‑фильтра Envoy для проксирования запросов.

Поддерживаемые параметры конфигурации

Большинство директив для настройки ноды на основе NGINX не поддерживаются при настройке ноды на основе Envoy. Список параметров для настройки ноды на основе Envoy →

Если нода Валарм уже развернута

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

Чтобы получить текущую версию, выполните команду в контейнере:

yum list wallarm-node

Более подробная информация о поддержке версий доступна в политике версионирования ноды Валарм.

Требования

  • Доступ к аккаунту с ролью Деплой или Администратор и отключенная двухфакторная аутентификация в Консоли управления Валарм для RU‑Облака или EU‑Облака

  • Доступ виртуальной машины к Валарм API по адресу api.wallarm.com:444 для EU‑Облака или api.wallarm.ru:444 для RU‑Облака. Убедитесь, что доступ не ограничен файерволом

Варианты запуска контейнера

Параметры ноды Валарм могут быть переданы в Docker‑контейнер следующими способами:

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

  • В примонтированном конфигурационном файле. В контейнер могут быть переданы все доступные параметры ноды.

Запуск контейнера с переменными окружения

Вы можете передать в контейнер следующие базовые настройки Валарм через опцию -e:

Переменная окружения Описание Обязательная?
DEPLOY_USER Email для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
DEPLOY_PASSWORD Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
ENVOY_BACKEND Домен или IP‑адрес ресурса, который необходимо защитить с помощью Валарм. Да
WALLARM_API_HOST Адрес Валарм API:
  • api.wallarm.com для EU‑Облака
  • api.wallarm.ru для RU‑Облака
По умолчанию: api.wallarm.com.
Нет
WALLARM_MODE Режим работы ноды Валарм:
  • block, чтобы блокировать вредоносные запросы
  • safe_blocking, чтобы блокировать только те вредоносные запросы, которые отправлены с IP‑адресов из серого списка
  • monitoring, чтобы анализировать, но не блокировать запросы
  • off, чтобы не обрабатывать входящий трафик
По умолчанию: monitoring.
Подробное описание режимов работы
Нет
TARANTOOL_MEMORY_GB Размер оперативной памяти для Tarantool в гигабайтах. Значение может быть целым или дробным (разделитель целой и дробной части — точка). По умолчанию: 0.2 гигабайта. Нет
DEPLOY_FORCE Заменяет существующую ноду Валарм на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
  • true, чтобы заменить ноду
  • false, чтобы отключить замену ноды
По умолчанию (если переменная не указана явно): false.
Ноде Валарм присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Валарм (например, с новой версией образа). Если в этом случае значение переменной равно false, процесс создания ноды завершится с ошибкой.
Нет

Для запуска образа используйте команду:

docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -p 80:80 wallarm/envoy:3.4.0-1
docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -e WALLARM_API_HOST='api.wallarm.ru' -p 80:80 wallarm/envoy:3.4.0-1

Команда выполнит следующие действия:

  • Автоматически создаст ноду в Облаке Валарм. Созданный элемент отобразится в Консоли управления → Ноды.

  • Создаст файл envoy.yaml с минимальными настройками Envoy в директории контейнера /etc/envoy.

  • Создаст файлы с параметрами для доступа к Облаку Валарм в директории контейнера /etc/wallarm:

    • node.yaml с UUID ноды Валарм и секретным ключом
    • license.key с лицензионным ключом Валарм
  • Защитит ресурс http://ENVOY_BACKEND:80

Запуск контейнера с примонтированным конфигурационным файлом

Вы можете примонтировать в контейнер готовый файл envoy.yaml через опцию -v. Файл должен содержать следующие настройки:

Для запуска образа:

  1. Передайте в контейнер обязательные переменные окружения через опцию -e:

    Переменная окружения Описание Обязательная?
    DEPLOY_USER Email для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
    DEPLOY_PASSWORD Пароль для аккаунта пользователя Деплой или Администратор в Консоли управления Валарм. Да
    WALLARM_API_HOST Адрес Валарм API:
    • api.wallarm.com для EU‑Облака
    • api.wallarm.ru для RU‑Облака
    По умолчанию: api.wallarm.com.
    Нет
    DEPLOY_FORCE Заменяет существующую ноду Валарм на новую, если название ноды соответствует идентификатору контейнера, который вы запускаете. Принимает значения:
    • true, чтобы заменить ноду
    • false, чтобы отключить замену ноды
    По умолчанию (если переменная не указана явно): false.
    Ноде Валарм присваивается название, соответствующее идентификатору контейнера. Данная опция полезна, если идентификаторы Docker‑контейнеров в вашей среде статичные и вы повторно запускаете Docker‑контейнер с нодой Валарм (например, с новой версией образа). Если в этом случае значение переменной равно false, процесс создания ноды завершится с ошибкой.
    Нет
  2. Примонтируйте директорию с файлом envoy.yaml в директорию контейнера /etc/envoy через опцию -v.

    docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -p 80:80 wallarm/envoy:3.4.0-1
    
    docker run -d -e DEPLOY_USER='deploy@example.com' -e DEPLOY_PASSWORD='very_secret' -e ENVOY_BACKEND='example.com' -e WALLARM_API_HOST='api.wallarm.ru' -v /configs/envoy.yaml:/etc/envoy/envoy.yaml -p 80:80 wallarm/envoy:3.4.0-1
    

Команда выполнит следующие действия:

  • Автоматически создаст ноду в Облаке Валарм. Созданный элемент отобразится в Консоли управления → Ноды.

  • Примонтирует файл envoy.yaml в директорию контейнера /etc/envoy.

  • Создаст файлы с параметрами для доступа к Облаку Валарм в директории контейнера /etc/wallarm:

    • node.yaml с UUID ноды Валарм и секретным ключом
    • license.key с лицензионным ключом Валарм
  • Защитит ресурс http://ENVOY_BACKEND:80

Настройка ротации логов (опционально)

Ротация лог‑файлов настроена и включена по умолчанию. При необходимости вы можете изменить настройки ротации в директории /etc/logrotate.d контейнера с нодой Валарм.

Тестирование работы Валарм

  1. Отправьте тестовый запрос с атаками SQLI и XSS на адрес защищенного ресурса:

    curl http://localhost/?id='or+1=1--a-<script>prompt(1)</script>'
    
  2. Перейдите в Консоль управления Валарм → секция События для EU‑Облака или для RU‑Облака и убедитесь, что атаки появились в списке.

    Атаки в интерфейсе