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

Деплой Sidecar-прокси Вебмониторэкс

С помощью решения Sidecar-прокси Вебмониторэкс вы можете защитить приложения, размещенные в подах Kubernetes. Нода Вебмониторэкс (NGINX) устанавливается в виде sidecar‑контейнера в один под с основным контейнером приложения и фильтрует входящий трафик, блокируя атаки и пропуская в основной контейнер только легитимные запросы.

Основные возможности решения Sidecar-прокси Вебмониторэкс:

  • Формат деплоя и настройки решения аналогичен приложениям, что упрощает внедрение защиты для отдельных микросервисов, реплик и shard'ов

  • Sidecar-прокси Вебмониторэкс полностью совместим с любым Ingress-контроллером

  • Стабильная работа под высокими нагрузками, свойственными для подхода "service mesh"

  • Минимальная настройка решения — достаточно задать несколько аннотации и меток поду с приложением, чтобы его защитить

  • Доступно несколько режимов для запуска контейнеров Вебмониторэкс: все сервисы Вебмониторэкс в одном контейнере для средних нагрузок или в нескольких контейнерах для высоких нагрузок

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

Если вы используете предыдущее решение Sidecar-прокси Вебмониторэкс

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

По всем вопросам о миграции на новую версию решения Sidecar-прокси Вебмониторэкс можно обратиться в техническую поддержку Вебмониторэкс.

Сценарии использования

Рекомендуем выбрать Sidecar-прокси решение Вебмониторэкс среди других форм установок, если:

  • Решение для защиты приложений необходимо развернуть в окружении с существующим Ingress‑контроллером, который нельзя заменить на Ingress‑контроллер Вебмониторэкс (например, AWS ALB Ingress Controller)

  • Окружение имеет архитектуру нулевого доверия (zero trust), поэтому необходимо защитить каждый микросервис, в том числе внутренние API

  • Для доступа к вашим API необходим доступ подов к VPC, решение для защиты приложений не должно этому препятствовать

  • Решение должно быть совместимо со сторонними компонентами для маршрутизации трафика, например, AWS API Gateway

Движение трафика

Движение трафика без Sidecar-прокси Вебмониторэкс:

Traffic flow without Вебмониторэкс Sidecar proxy

Движение трафика с Sidecar-прокси Вебмониторэкс:

Traffic flow with Вебмониторэкс Sidecar proxy

Архитектура решения

Sidecar-прокси решение Вебмониторэкс создает следующие объекты Deployment в Kubernetes:

  • Sidecar-контроллер (wallarm-sidecar-controller) имеет тип mutating admission webhook. Встраивает компоненты sidecar-прокси в под, настраивает прокси на основе values.yaml и аннотаций пода и подключает ноду к Вычислительному кластеру Вебмониторэкс.

    При обнаружении нового пода с меткой wallarm-sidecar: enabled, контроллер автоматически встраивает sidecar-контейнер в этот под и начинает фильтровать входящий трафик.

  • Модуль постаналитики (wallarm-sidecar-postanalytics) выполняет статистический анализ запросов, обработанных решением Sidecar-прокси. Модуль использует хранилище Tarantool и вспомогательные контейнеры с сервисами collectd, выгрузки атак и другими.

Вебмониторэкс deployment objects

Жизненный цикл Sidecar-прокси состоит из 2 основных этапов:

  1. Инициализация (initial): контроллер встраивает компоненты Sidecar-прокси Вебмониторэкс в под, настраивает прокси на основе values.yaml и аннотаций пода и подключает ноду к Вычислительному кластеру Вебмониторэкс.

  2. Выполнение (runtime): решение Sidecar-прокси анализирует и проксирует запросы. Статистический анализ запросов с помощью модуля постаналитики выполняется на этом этапе.

Требования

  • Kubernetes версии 1.19-1.24

  • Менеджер пакетов Helm версии 3

  • Приложение, размещенное в поде Kubernetes

  • Доступ к https://api.wallarm.ru для работы с Вычислительным кластером Вебмониторэкс

  • Доступ к https://charts.wallarm.com для добавления Helm‑чартов Вебмониторэкс

  • Доступ к репозиториям Вебмониторэкс на Docker Hub https://hub.docker.com/r/wallarm

  • Доступ к хранилищу Яндекс S3 (https://storage.yandexcloud.net), чтобы обеспечить корректную блокировку IP‑адресов, зарегистрированных в странах, регионах или дата-центрах из белого, черного и серого списков IP.

    Необходимо обеспечить доступ к https://storage.yandexcloud.net или нескольким диапазонам IP‑адресов: диапазон 1 и диапазон 2.

  • Доступ к аккаунту с ролью Администратор в Консоли управления Вебмониторэкс

Деплой

Чтобы развернуть Sidecar-прокси решение Вебмониторэкс:

  1. Создайте ноду Вебмониторэкс.

  2. Разверните Helm-чарт Вебмониторэкс.

  3. Включите анализ трафика приложения.

  4. Протестируйте работу Sidecar-прокси Вебмониторэкс.

Шаг 1: Создайте ноду Вебмониторэкс

  1. Перейдите в Консоль управления Вебмониторэкс → Ноды.

  2. Создайте ноду и скопируйте сгенерированный токен.

Создание ноды Вебмониторэкс

Шаг 2: Разверните Helm-чарт Вебмониторэкс

  1. Добавьте репозиторий c Helm‑чартами Вебмониторэкс в локальный каталог:

    helm repo add wallarm https://charts.wallarm.com
    
  2. Создайте файл values.yaml с конфигурацией Sidecar-прокси Вебмониторэкс.

    Пример файла с минимальной конфигурацией:

    config:
      wallarm:
        api:
          token: "<NODE_TOKEN>"
          host: "api.wallarm.ru"
    

    <NODE_TOKEN> — токен ноды Вебмониторэкс.

  3. Разверните Helm-чарт Вебмониторэкс:

    helm install --version 1.1.5 <RELEASE_NAME> wallarm/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-прокси Вебмониторэкс:

  1. Получите список подов Вебмониторэкс:

    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
    
  2. Получите информацию о поде приложения:

    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 указывает на успешное подключение к Вычислительному кластеру Вебмониторэкс.

  3. Отправьте тестовый запрос с атакой Path Traversal на адрес кластера приложения, которое защищает решение Вебмониторэкс:

    curl http://<APPLICATION_CLUSTER_IP>/etc/passwd
    

    По умолчанию нода запущена в режиме мониторинга, поэтому атака будет зарегистрирована, но не заблокирована.

    Чтобы убедиться, что атака зарегистрирована, перейдите в Консоль управления Вебмониторэкс → События:

    Attacks in the interface

Кастомизация

Sidecar-прокси Вебмониторэкс встроен в вашу инфраструктуру на основе стандартного values.yaml и настроек, заданных на шаге 2.

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

Инструкция по кастомизации Sidecar-прокси решения Вебмониторэкс