Advanced Rate Limiter
ARL (Advanced Rate Limiter) — модуль для контроля и ограничения нагрузки на веб-приложения. Модуль позволяет установить лимит на количество HTTP-запросов за определенный промежуток времени. Все запросы свыше лимита будут блокироваться. Можно установить единый лимит на весь трафик, а также настраивать различные лимиты для сегментирования запросов по определенным параметрам. Запросы для лимитов можно считать по одному или объединять в группы по заданному признаку.
Преимущества и возможности ARL:
- Защита бэкендов от резкого увеличения нагрузки и сохранение их работоспособности.
- Дополнительная защита API с помощью контроля HTTP-параметров.
- Гибкая настройка лимитов в зависимости от параметров трафика.
- Лимит на одиночные запросы или на группу запросов.
- Режим Dry Run для тестирования правил и анализа трафика.
- Логирование работы ARL.
Для настройки ARL используются профили. Профиль состоит из набора правил, которые устанавливают лимиты на запросы определенного типа. По этим правилам ARL анализирует входящие HTTP-запросы и когда количество запросов превышает установленные лимиты, блокирует их.
Профиль ARL подключается к профилю безопасности. Правила ARL применяются к трафику, который уже прошел проверку правил из профиля безопасности. Это позволяет анализировать не весь входящий трафик, а только разрешенный и повышает отказоустойчивость модуля ARL.
Подробнее о подключении к профилю безопасности см. в разделе Создайте и подключите профиль ARL.
В правиле ARL доступны следующие настройки:
Условия на трафик
Правило ARL может устанавливать лимит на входящие HTTP-запросы для всего трафика и трафика, удовлетворяющего условиям.
Условия определяются следующими параметрами:
IP— IP-адрес, диапазон адресов или регион адресов клиентов, для которых будет применяться правило.Request path— путь или часть пути, на который был отправлен запрос.Host— доменное имя, на которое был отправлен запрос.HTTP method— метод или набор методов, к которым принадлежит запрос.HTTP header— параметры в заголовке запроса.Cookie— строка в cookie-файлах.
Подсчет запросов
Подсчет количества запросов для применения лимита можно вести одним из способов:
- Подсчет каждого запроса в отдельности.
- Объединение запросов в группы по определенному признаку и ограничение количества групп.
Группировать запросы можно:
-
Автоматически — по атрибутам
Request path,HTTP method,IP-адрес,Регион,Host. -
По совпадению указанного ключа в атрибутах
Query params,HTTP header,HTTP cookie.Для трафика можно задать гибкие условия совпадения или несовпадения указанных параметров. Строковые совпадения можно находить с учетом или без учета регистра. Значения параметров могут быть одиночными, диапазонами или регулярными выражениями.
Также можно выбрать промежуток времени — от 1 секунды до 60 минут.
Все запросы свыше лимита, полученные в установленный промежуток времени, будут блокироваться. При этом клиенту будет возвращена ошибка 429.
Для вычисления лимитов и тестирования правил ARL предусмотрен режим Только логирование (Dry Run). В этом режиме запросы блокироваться не будут. Это позволяет оценить возможности бэкендов и подобрать оптимальные значения лимитов.