Техническое задание: Защита системы от исчерпания лимитов внешнего API
В веб-приложении обнаружена проблема: злоумышленники массово инициируют запросы к API внешнего сервиса (ФНС), что приводит к исчерпанию общего лимита и блокировке работы легитимных пользователей. Существующие меры защиты (ограничения по IP, fail2ban) оказались недостаточными.
Контекст и стек технологий
- Бэкенд и фронтенд: Laravel.
- Клиент для работы с внешним API: Java (SOAP-клиент).
- Инфраструктура: Код в GitLab, CI/CD для деплоя в контейнеры.
- Важное условие: Работа ведется только в ветке dev. Прямого доступа к продакшен-серверам нет, деплой осуществляется администратором через конвейер.
Основные задачи
1. Диагностика и анализ атаки
- Идентифицировать эндпоинты или цепочки вызовов, которые инициируют обращения к внешнему API.
- Определить механизм обхода текущих ограничений (по IP, rate limiting).
- Составить инструкцию по воспроизведению проблемы.
2. Разработка и внедрение системы защиты
- Реализовать многоуровневое лимитирование: по пользователю, сессии, токену.
- Внедрить механизм дедупликации идентичных запросов за определенный период.
- Настроить кэширование допустимых/успешных ответов от API с настраиваемым TTL.
- Реализовать глобальный счетчик и лимитер всех обращений к внешнему API с механизмом graceful degradation (корректной деградации) при достижении лимита.
- Добавить контроль за повторными попытками (retry) с экспоненциальной выдержкой (backoff).
3. Повышение наблюдаемости (Observability)
- Обеспечить детальное логирование каждого обращения к внешнему API с указанием:
- Инициатора (пользователь, сессия, IP).
- Выполняемой операции и параметров.
- Результата (успех, ошибка, попадание в кэш, дедупликация).
- Времени выполнения.
- Фактов срабатывания блокировок.
- Добавить метрики для мониторинга (например, счетчики запросов, попаданий в кэш, срабатываний лимитеров).
Ожидаемые результаты
- Merge Request (MR): Готовый код с реализованными мерами защиты, направленный в ветку dev.
- Отчет: Краткий анализ причины уязвимости и описание реализованных защитных механизмов.
- Инструкция: Документ по настройке параметров системы (величины лимитов, TTL кэша, пороги срабатывания).
- Чек-лист: Перечень действий для проверки работоспособности системы после деплоя.