Как ограничить доступ к API через списки IP

Функциональность доступна не на всех проектах. Уточните возможность подключения у менеджера вашего проекта.

Ограничение доступа по IP к API — это второй фактор защиты API Mindbox в дополнение к секретному ключу. Даже если ключ окажется в чужих руках, запросы с неизвестных IP-адресов будут отклонены, а данные клиентов защищены.

Доступ к настройке

Для редактирования списка нужны пермиссии:

  • «Просмотр интеграций»
  • «Редактирование интеграций»
  • «Управление списком разрешённых IP для API»

По умолчанию все эти пермиссии есть у групп безопасности «Владельцы» и «Инженер по безопасности». При необходимости их можно выдать другим сотрудникам.

В каких точках интеграции работает фильтр

  • Веб-сайт
  • iOS / Android приложение
  • Другое
Почему функции нет в других точках интеграции
  • Интеграция для вебхуков — отправляет только исходящие запросы из Mindbox во внешние сервисы (например, CRM). Подробнее о вебхуках в статье;
  • Продуктовые фиды — не принимает входящие запросы, Mindbox сам получает фид по URL;
  • Рекламные кабинеты — список IP зафиксирован адресами Albato;

Шаги настройки

  1. Откройте раздел Интеграции и перейдите в точку интеграции:

    endpoint-ip-list.png

  2. В блоке «Настройки доступа по IP» введите адреса вашей инфраструктуры — каждый адрес с новой строки. Допустимый формат описан ниже.

  3. При необходимости поставьте галочку «Проверять IP-адреса только в запросах с секретным ключом» - см. как работает опция.

  4. Нажмите «Сохранить» в блоке, а затем «Сохранить» на странице интеграции.

    endpoint-ip-setting.png

Фильтр начнет отклонять запросы с неразрешенных IP через 5 минут после сохранения точки интеграции.

Точки интеграции с настроенным ограничением IP-адресов отображаются в списке с иконкой щита:

endpoint-ip-list-protected.png

Формат списка IP-адресов

Поддерживается:

  • Одиночные IPv4-адреса: 130.193.65.96;
  • Подсети в формате CIDR: 130.193.65.96/30;
  • Комментарии после # в той же строке: 130.193.65.96 # прод-балансировщик Москва;
  • До 100 строк в одной точке интеграции;
  • Длина строки — не более 120 символов.

Не поддерживается:

  • Диапазоны через дефис: 130.193.65.96 — 130.193.65.97;
  • Несколько записей в одной строке: 130.193.65.96/30, 130.193.65.92 # прод-балансировщик Москва;
  • Приватные (серые) адреса: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16 — фильтр работает только с публичными IP;
  • Маска /0 (разрешает доступ с любого IP).

Опция «Проверять IP только в запросах с секретным ключом»

Галочка определяет, какие запросы попадают под фильтр:

Состояние

Что фильтруется

Когда выбрать

Снята

Все входящие запросы в точку интеграции, включая запросы без секретного ключа и события из JS-трекера

Трафик через точку интеграции исходит только из вашей инфраструктуры.

Не рекомендуется использовать для интеграций с типом Веб-сайт или iOS / Android приложение. Вызовы из них невозможно полностью проксировать.

Поставлена (по умолчанию)

Только запросы с основным секретным ключом.

Запросы от конечных пользователей (например, события с JS-трекера) проходят без проверки IP-адреса

Для большинства интеграций с типом Веб-сайт или iOS / Android приложение, где запросы приходят с IP покупателя, а не сервера (например, просмотры продуктов, изменение списков клиента и др.)

Запросы с тестовым секретным ключом никогда не попадают под фильтр — это сделано, чтобы менеджеры проектов и поддержки могли отлаживать промоакции и интеграции.

Что происходит при блокировке запроса

Mindbox проверяет фактический IP-адрес сервера, с которого был отправлен запрос. Этот же IP отображается в заголовке X-Forwarded-For.

Отклоненный запрос возвращает статус 403 с ответом:

Incorrect IP address 1.2.3.4 for endpoint ’<system name>’
        

Где 1.2.3.4 — фактический IP отправителя, а <system name> — системное имя точки интеграции.

При большом количестве заблокированных запросов на проекте открываются проблемы.

История изменений

Все действия со списком IP (кто и когда вносил изменения) логируются в Журнал событий. Для их просмотра перейдите по ссылке «История изменений» или отфильтруйте записи журнала по типу события «Редактирование интеграции».

endpoint-ip-changelog.png