Деплой Sidecar-прокси Вебмониторэкс¶
С помощью решения Sidecar-прокси Вебмониторэкс вы можете защитить приложения, размещенные в подах Kubernetes. Нода Вебмониторэкс (NGINX) устанавливается в виде sidecar‑контейнера в один под с основным контейнером приложения и фильтрует входящий трафик, блокируя атаки и пропуская в основной контейнер только легитимные запросы.
Основные возможности решения Sidecar-прокси Вебмониторэкс:
-
Формат деплоя и настройки решения аналогичен приложениям, что упрощает внедрение защиты для отдельных микросервисов, реплик и shard'ов
-
Sidecar-прокси Вебмониторэкс полностью совместим с любым Ingress-контроллером
-
Стабильная работа под высокими нагрузками, свойственными для подхода "service mesh"
-
Минимальная настройка решения — достаточно задать несколько аннотации и меток поду с приложением, чтобы его защитить
-
Доступно несколько режимов для запуска контейнеров Вебмониторэкс: все сервисы Вебмониторэкс в одном контейнере для средних нагрузок или в нескольких контейнерах для высоких нагрузок
-
Отдельная сущность для модуля постаналитики, который выполняет статистический анализ обработанных запросов локально и является основным потребителем ресурсов
Если вы используете предыдущее решение Sidecar-прокси Вебмониторэкс
Если вы используете предыдущее решение Sidecar-прокси Вебмониторэкс, рекомендуем заменить его на новое. В новой реализации мы обновили предыдущее решение с учетом новых возможностей Kubernetes и предыдущего пользовательского опыта. Теперь для внедрения решения не требуются значительные изменения в манифестах Kubernetes, достаточно развернуть чарт и добавить метки и аннотации к поду.
По всем вопросам о миграции на новую версию решения Sidecar-прокси Вебмониторэкс можно обратиться в техническую поддержку Вебмониторэкс.
Сценарии использования¶
Рекомендуем выбрать Sidecar-прокси решение Вебмониторэкс среди других форм установок, если:
-
Решение для защиты приложений необходимо развернуть в окружении с существующим Ingress‑контроллером, который нельзя заменить на Ingress‑контроллер Вебмониторэкс
-
Окружение имеет архитектуру нулевого доверия (zero trust), поэтому необходимо защитить каждый микросервис, в том числе внутренние API
-
Для доступа к вашим API необходим доступ подов к VPC, решение для защиты приложений не должно этому препятствовать
-
Решение должно быть совместимо со сторонними компонентами для маршрутизации трафика
Движение трафика¶
Движение трафика без Sidecar-прокси Вебмониторэкс:
Движение трафика с Sidecar-прокси Вебмониторэкс:
Архитектура решения¶
Sidecar-прокси решение Вебмониторэкс создает следующие объекты Deployment в Kubernetes:
-
Sidecar-контроллер (
wallarm-sidecar-controller
) имеет тип mutating admission webhook. Встраивает компоненты sidecar-прокси в под, настраивает прокси на основеvalues.yaml
и аннотаций пода и подключает ноду к Вычислительному кластеру Вебмониторэкс.При обнаружении нового пода с меткой
wallarm-sidecar: enabled
, контроллер автоматически встраивает sidecar-контейнер в этот под и начинает фильтровать входящий трафик. -
Модуль постаналитики (
wallarm-sidecar-postanalytics
) выполняет статистический анализ запросов, обработанных решением Sidecar-прокси. Модуль использует хранилище Tarantool и вспомогательные контейнеры с сервисами collectd, выгрузки атак и другими.
Жизненный цикл Sidecar-прокси состоит из 2 основных этапов:
-
Инициализация (initial): контроллер встраивает компоненты Sidecar-прокси Вебмониторэкс в под, настраивает прокси на основе
values.yaml
и аннотаций пода и подключает ноду к Вычислительному кластеру Вебмониторэкс. -
Выполнение (runtime): решение Sidecar-прокси анализирует и проксирует запросы. Статистический анализ запросов с помощью модуля постаналитики выполняется на этом этапе.
Требования¶
-
Kubernetes версии 1.19-1.24
-
Менеджер пакетов Helm версии 3
-
Приложение, размещенное в поде Kubernetes
-
Доступ к
https://api.wallarm.ru
для работы с Вычислительным кластером Вебмониторэкс -
Доступ к
https://charts.webmonitorx.ru
для добавления Helm‑чартов Вебмониторэкс -
Доступ к репозиториям Вебмониторэкс на Docker Hub
https://hub.docker.com/r/wallarm
-
Доступ к хранилищу Яндекс S3 (
https://storage.yandexcloud.net
), чтобы обеспечить корректную блокировку IP‑адресов, зарегистрированных в странах, регионах или дата-центрах из белого, черного и серого списков IP.Необходимо обеспечить доступ к
https://storage.yandexcloud.net
или нескольким диапазонам IP‑адресов: диапазон 1 и диапазон 2. -
Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс
Деплой¶
Чтобы развернуть Sidecar-прокси решение Вебмониторэкс:
-
Создайте ноду Вебмониторэкс.
-
Разверните Helm-чарт Вебмониторэкс.
-
Включите анализ трафика приложения.
-
Протестируйте работу Sidecar-прокси Вебмониторэкс.
Шаг 1: Создайте ноду Вебмониторэкс¶
-
Перейдите в Консоль управления Вебмониторэкс → Ноды.
-
Создайте ноду и скопируйте сгенерированный токен.
Шаг 2: Разверните Helm-чарт Вебмониторэкс¶
-
Добавьте репозиторий c Helm‑чартами Вебмониторэкс в локальный каталог:
helm repo add webmonitorx https://charts.webmonitorx.ru
-
Создайте файл
values.yaml
с конфигурацией Sidecar-прокси Вебмониторэкс.Пример файла с минимальной конфигурацией:
config: wallarm: api: token: "<WALLARM_API_TOKEN>" host: "api.wallarm.ru"
<WALLARM_API_TOKEN>
— токен ноды Вебмониторэкс. -
Разверните Helm-чарт Вебмониторэкс:
helm install --version 1.1.5 <RELEASE_NAME> webmonitorx/wallarm-sidecar --wait -n wallarm-sidecar --create-namespace -f <PATH_TO_VALUES>
<RELEASE_NAME>
— название релиза Sidecar-прокси Вебмониторэкс.wallarm-sidecar
— пространство имен, в котором будет развернут Sidecar-прокси Вебмониторэкс. Рекомендуется создать отдельное пространство.<PATH_TO_VALUES>
— путь к файлуvalues.yaml
.
Шаг 3: Включите анализ трафика приложения¶
Чтобы включить фильтрацию трафика приложения, добавьте метку wallarm-sidecar: enabled
к поду с соответствующим приложением:
kubectl edit deployment -n <KUBERNETES_NAMESPACE> <APP_LABEL_VALUE>
apiVersion: apps/v1
kind: Deployment
metadata:
name: myapp
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: myapp
template:
metadata:
labels:
app: myapp
wallarm-sidecar: enabled
spec:
containers:
- name: application
image: kennethreitz/httpbin
ports:
- name: http
containerPort: 80
-
Если метка
wallarm-sidecar
имеет значениеdisabled
или не задана явно, Sidecar-контейнер не встраивается в под и нода Вебмониторэкс не фильтрует трафик. -
Если метка
wallarm-sidecar
имеет значениеenabled
, Sidecar-контейнер встраивается в под и нода Вебмониторэкс фильтрует трафик.
Шаг 4: Протестируйте работу Sidecar-прокси Вебмониторэкс¶
Чтобы протестировать работу Sidecar-прокси Вебмониторэкс:
-
Получите список подов Вебмониторэкс:
kubectl get pods -n wallarm-sidecar
Все поды
wallarm-*
должны быть в состоянии READY: N/N и STATUS: Running, например:NAME READY STATUS RESTARTS AGE wallarm-sidecar-controller-54cf88b989-f7jtb 1/1 Running 0 91m wallarm-sidecar-controller-54cf88b989-gp2vg 1/1 Running 0 91m wallarm-sidecar-postanalytics-86d9d4b6cd-hpd5k 4/4 Running 0 91m
-
Получите информацию о поде приложения:
kubectl get pods --selector app=<APP_LABEL_VALUE>
Под должен быть в состоянии READY: 2/2 и STATUS: Running, например:
NAME READY STATUS RESTARTS AGE myapp-5c48c97b66-lzkwf 2/2 Running 0 3h4m
READY: 2/2 указывает, что sidecar-контейнер успешно встроен в под. STATUS: Running указывает на успешное подключение к Вычислительному кластеру Вебмониторэкс.
-
Отправьте тестовый запрос с атакой Path Traversal на адрес кластера приложения, которое защищает решение Вебмониторэкс:
curl http://<APPLICATION_CLUSTER_IP>/etc/passwd
По умолчанию нода запущена в режиме мониторинга, поэтому атака будет зарегистрирована, но не заблокирована.
Чтобы убедиться, что атака зарегистрирована, перейдите в Консоль управления Вебмониторэкс → События:
Кастомизация¶
Sidecar-прокси Вебмониторэкс встроен в вашу инфраструктуру на основе стандартного values.yaml
и настроек, заданных на шаге 2.
Вы можете выполнить более тонкую настройку Sidecar-прокси Вебмониторэкс, чтобы решить больше задач вашей компании и усилить защиту от атак. Настройка возможна как на глобальном уровне, так и на уровне отдельных подов приложений.
Инструкция по кастомизации Sidecar-прокси решения Вебмониторэкс