← Cloudflare API Shield / api-shield / security
Volumetric Abuse Detection
Cloudflare Volumetric Abuse Detection формирует рекомендации по ограничению скорости для каждой конечной точки и сессии, которые автоматически корректируются по мере изменения профиля вашего трафика.
Cloudflare выявляет злоупотребления на конечных точках на основе пользовательского трафика к отдельным конечным точкам.
Например, ваш API может получать разный объём трафика к /reset-password конечная точка, чем /login конечная точка. Кроме того, ваш /login конечная точка может получать трафик выше среднего после успешной маркетинговой кампании.
Оба сценария показывают ограничения традиционного ограничения частоты запросов. Трафик различается не только между конечными точками, но и меняется со временем даже для одной и той же конечной точки. Функция Volumetric Abuse Detection решает эту проблему с помощью обучения без учителя (анализа паттернов трафика без заранее заданных правил): она формирует отдельный базовый профиль для каждой конечной точки и со временем подстраивается под изменения в поведении пользователей.
Лимиты запросов Volumetric Abuse Detection формируются для каждой сессии, а не для каждого IP адреса. Это снижает количество ложных срабатываний при росте трафика к вашему API, поскольку лимиты отслеживают отдельные сессии, а не общие IP адреса.
Лимиты запросов Volumetric Abuse Detection позволяют предотвращать явные объемные злоупотребления, сводя к минимуму количество ложных срабатываний. Если вы хотите полностью предотвратить вредоносный бот-трафик, обратитесь к разделу Cloudflare Решения для защиты от ботов.
Процесс
Volumetric Abuse Detection анализирует статистику трафика отдельных сессий вашего API и рекомендует лимиты запросов для каждой конечной точки и сессии.
Чтобы получить доступ к вашим конечным точкам, перейдите в Безопасность > Web Assets > Конечные точки.
Рекомендации продолжат обновляться при изменении структуры вашего трафика.
Требования
Volumetric Abuse Detection формирует пороговые значения лимитов запросов только после накопления достаточного объема данных трафика для надежных рекомендаций. Если для обнаруженной конечной точки рекомендации отсутствуют, значит трафик, вероятно, не соответствовал необходимым критериям.
Пороговые значения предлагаются только для конечных точек, которые за последние семь дней (или с момента обнаружения) соответствуют всем перечисленным ниже требованиям:
- Эндпоинт должен получать достаточно валидного трафика (трафика, который соответствует API Discovery критериев). Прерывистый или нестабильный трафик может препятствовать формированию рекомендаций.
- К эндпоинту должны обращаться не менее 50 уникальных сессий за любой 24-часовой период в течение последних семи дней.
- Идентификаторы сессии, например токен авторизации, доступный в виде заголовка запроса или cookie, необходимо настроить, чтобы Cloudflare мог точно определять отдельные сессии и выполнять требуемый анализ скорости по сессиям.
После добавления идентификатора сессии подождите 24 часа, пока у конечных точек в панели управления Cloudflare не появятся рекомендации по ограничению скорости.
Расчёт рекомендации по ограничению скорости
Выберите строку конечной точки в Конечные точки чтобы просмотреть рекомендацию по ограничению частоты запросов. В подробном представлении показаны общее рекомендуемое значение и значения по перцентилям (p50, p90, p99).
Cloudflare пересчитывает рекомендуемое значение в течение дня на основе запросов за последние 24 часа. Если профиль вашего трафика остаётся стабильным, рекомендация может не измениться.
Cloudflare рекомендует использовать общую рекомендацию по ограничению скорости, а не значение одного перцентиля. Общая рекомендация учитывает разброс по всем вашим сессиям API. Выбор значения одного перцентиля может привести к ложным срабатываниям из-за большого числа выбросов.
В Конечные точки, вы можете посмотреть уровень достоверности для каждой рекомендации и количество уникальных сессий за последние семь дней. Как правило, у конечных точек с меньшим числом уникальных сессий и высокой вариативностью поведения пользователей уровень достоверности ниже.
Правила ограничения частоты запросов с низким уровнем достоверности всё же могут помочь предотвратить злоупотребление API. Если уровень достоверности низкий, начните с правила ограничения частоты запросов в режиме log режиме и понаблюдайте за нарушениями на предмет ложных срабатываний, прежде чем переключиться на block.
Создать ограничения скорости
См. Документация по правилам подробнее о создании правила Advanced Rate Limiting.
API
Рекомендации по ограничению скорости доступны через API если вы хотите динамически изменять лимиты скорости с течением времени.
Необходимые разрешения API-токена
Хотя бы одно из следующих права доступа токена требуется:Account API GatewayAccount API Gateway ReadDomain API GatewayDomain API Gateway Read
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/api_gateway/operations/$OPERATION_ID" \
--request GET \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"Особые случаи
Ограничение скорости по пользователю (JWT claim)
Вы можете ограничивать частоту запросов на основе любого claim внутри JSON Web Token (JWT), например:
- Зарегистрированные claims, такие как
audилиsub - Пользовательские claims, например
userEmail, включая вложенные пользовательские утверждения, такие какuser.email
Ограничение скорости на основе значений JWT claim работает только с действительными JSON Web Tokens. Если вы не блокируете недействительные JSON Web Tokens на своём пути, Все JWT claims будут учитываться и могут быть заблокированы при обнаружении высокого трафика в точке присутствия (PoP).
Также необходимо учитывать claim JWT, однозначно идентифицирующий пользователя. Если выбранный claim одинаков для нескольких пользователей, их ограничения скорости запросов будут учитываться совместно.
Ограничение скорости по уровню пользователя
Если на вашем сайте или в приложении предусмотрено несколько тарифных уровней и вы хотите применять ограничение частоты запросов в зависимости от уровня, например:
- Если
"aud": "free-tier", ограничьте скорость до пяти запросов в минуту. - Если
"aud": "premium-tier", ограничьте скорость до 50 запросов в минуту.
Ниже приведен пример правила ограничения частоты запросов:
(http.request.method eq "GET" and
http.host eq "<YOUR_DOMAIN>" and
http.request.uri.path matches "</EXAMPLE_PATH>" and
lookup_json_string(http.request.jwt.claims["<JWT_TOKEN_CONFIGURATION_ID>"][0], "aud") eq "free-tier"Ограничения
API Shield всегда рассчитывает рекомендации, если настроены идентификаторы сессий. Чтобы включить ограничения скорости на основе сессий, оформить подписку на Advanced Rate Limiting.
Доступность
Volumetric Abuse Detection доступен только клиентам плана Enterprise. Если вы клиент Enterprise и заинтересованы в этом продукте, обратитесь к своей команде по работе с клиентами.