Перейти к содержанию

Разрешенный список IP-адресов

ПроAPI Защита обеспечивает безопасный доступ к вашему бэкенду, разрешая запросы исключительно с предопределенных IP-адресов. Этот документ предоставляет пошаговое руководство по реализации списка разрешенных IP-адресов, применимое для REST API как в режимах [PROXY] (../docker-container.md), так и [API] (../api-mode.md) или для [GraphQL API] (../docker-container.md).

Эта функция гарантирует, что только запросы с IP-адресов, включенных в список разрешенных, проверяются на соответствие спецификации OpenAPI 3.0. Запросы с IP-адресов, не включенных в список разрешенных, полностью отклоняются, возвращая код ошибки 403, независимо от их соответствия спецификации OpenAPI.

Для включения в список IP-адресов:

  1. Подготовьте файл со списком IP-адресов, которые вы хотите включить в разрешенный список. Формат файла гибкий (например, .txt или .db), с каждым IP-адресом в отдельной строке. Например:

    1.1.1.1
    2001:0db8:11a3:09d7:1f34:8a2e:07a0:7655
    10.1.2.0/24
    

    Запросы из 1.1.1.1, 2001: 0db8:11a3: 09d7:1f34:8a2e: 07a0:7655 и 10.1.2.1-10.1.2.254 IP-адресов будут разрешены.

    Проверка списка разрешений и поддерживаемые форматы данных

    ПроAPI Защита проверяет содержимое файла allowlist во время обработки списка.

    Он поддерживает как IPv4, так и IPv6 адреса, а также подсети.

  2. Смонтируйте файл allowlist в контейнер Docker ПроAPI Защита, используя -v параметр Docker.

  3. Запустите контейнер ПроAPI Защита с помощью переменной окружения APIFW_ALLOW_IP_FILE, указывающей путь к подключенному файлу списка разрешений внутри контейнера.

  4. (Необязательно) Передайте контейнеру переменную среды APIFW_ALLOW_IP_HEADER_NAME с именем заголовка запроса, который при необходимости содержит исходный IP-адрес. По умолчанию используется connection.remoteAddress (значение переменной пустое).

Пример команды docker run:

docker run --rm -it --network api-firewall-network --network-alias api-firewall \
    -v <HOST_PATH_TO_SPEC>:<CONTAINER_PATH_TO_SPEC> -e APIFW_API_SPECS=<PATH_TO_MOUNTED_SPEC> \
    -v ./ip-allowlist.txt:/opt/ip-allowlist.txt \
    -e APIFW_URL=<API_FIREWALL_URL> -e APIFW_SERVER_URL=<PROTECTED_APP_URL> \
    -e APIFW_REQUEST_VALIDATION=<REQUEST_VALIDATION_MODE> -e APIFW_RESPONSE_VALIDATION=<RESPONSE_VALIDATION_MODE> \
    -e APIFW_ALLOW_IP_FILE=/opt/ip-allowlist.txt -e APIFW_ALLOW_IP_HEADER_NAME="X-Real-IP" \
    -p 8088:8088 wallarm/api-firewall:v0.7.3
Переменная среды Описание
APIFW_ALLOW_IP_FILE Указывает путь контейнера к подключенному файлу с разрешенными IP-адресами (например, /opt/ip-allowlist.txt).
APIFW_ALLOW_IP_HEADER_NAME Определяет имя заголовка запроса, которое содержит исходный IP-адрес. Значение по умолчанию - "", которое указывает на использование connection.remoteAddress.