К содержимому
DDoS·Protect
Решения

Защита SaaS: доступность для всех клиентов, даже когда атакуют одного

У SaaS-сервиса атака на одного клиента может положить всех. Злоумышленник целится в магазин или школу вашего клиента, но нагрузка ложится на общую инфраструктуру. Поэтому для SaaS важны изоляция, защита API и прозрачная статистика, которую можно показать клиенту.

Почему атака на одного арендатора бьёт по всем

Клиентские поддомены вида client.example.app и собственные домены клиентов обслуживаются одними и теми же серверами и базой. Флуд по одному из них расходует общий пул соединений и воркеров, и замедляются все. Поэтому фильтр различает домены: режим атаки и ужесточённые лимиты включаются для атакованного клиента, а остальные продолжают работать в обычном режиме.

Эндпоинты, которые стоят дороже всего

ОперацияПример путиЧем ограничить
Отчёты и аналитика/api/reports/*Отдельный лимит на пользователя и на арендатора
Экспорт и импорт/api/export, /api/importНесколько запусков в минуту, остальное — ответ 429
Генерация документов/api/documents/renderЛимит по ключу API, очередь на стороне приложения
Полнотекстовый поиск/api/searchЛимит на сессию, кэш частых запросов
Регистрация пробного периода/signupПроверка браузера, лимит по источнику и домену почты

Порядок подключения

  1. Подключить основной домен и шаблон для клиентских поддоменов.
  2. Включить лимиты по ключу API и пользователю, отдельно — на тяжёлые методы.
  3. Защитить вход и регистрацию от перебора и массовых регистраций ради бесплатного доступа.
  4. Проверить, что режим атаки можно включить для одного клиентского домена, не затрагивая остальных.
  5. Подключить уведомления и выгрузку статистики из журналов.

Чего не делать

  • Не включать проверку браузера на /api/*: интеграции клиентов, мобильные приложения и скрипты не выполняют JavaScript и начнут получать ошибки.
  • Не забывать о входящих вебхуках платёжных систем и партнёров — для них нужны исключения по адресам или секретному заголовку.
  • Не ставить единый лимит на весь API: один крупный клиент с интеграцией легко упрётся в него в обычный рабочий день.

Данные для разговора с клиентом

Когда клиент спрашивает, почему вчера тормозил сервис, лучший ответ — хронология из журнала: когда вырос поток запросов к его домену, какое правило сработало и как вела себя нагрузка на ваш сервер. Такую выгрузку можно приложить к отчёту по SLA.

Вопросы и ответы

Можно ли подключить собственные домены клиентов?

Да, каждый домен подключается со своим сертификатом и наследует общие правила. Для отдельного клиента их можно ужесточить.

Как отличить атаку на API от интеграции, которую клиент написал с ошибкой?

По журналу: у интеграции один ключ API и повторяющийся метод, у атаки — множество источников. Для первой хватает лимита и письма клиенту, для второй нужен режим атаки.

Подойдёт ли защита для сервиса на Laravel или Next.js?

Да, особенности описаны на страницах Laravel и Next.js: реальный IP посетителя, доверенные прокси и исключения для очередей.

Ранний доступ

Подключим ваш сайт одним из первых

Сервис готовится к запуску. Оставьте заявку: проверим, от чего нужно защищать ваш проект, и подключим его в числе первых на условиях раннего доступа.