Advanced Rate Limiter
Примечание
Функциональность ARL находится на стадии Preview.
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). В этом режиме запросы блокироваться не будут. Это позволяет оценить возможности бэкендов и подобрать оптимальные значения лимитов.