Обновление устаревших нод с мультиарендной опцией¶
Инструкция описывает способ обновления устаревших нод (версии 3.6 и ниже) с мультиарендной опцией до версии 4.6.
Требования¶
-
Выполнение команд от пользователя с ролью Глобальный администратор, добавленного в аккаунт технического тенанта.
-
Доступ виртуальной машины к Вебмониторэкс API по адресу
api.wallarm.ru
. Убедитесь, что доступ не ограничен файерволом.
Шаг 1: Свяжитесь с командой поддержки Вебмониторэкс¶
Для корректного обновления нужно установить последнюю версию функции сборки и выгрузки индивидуального набора правил. Пожалуйста, обратитесь в поддержку для решения этой задачи.
Команда поддержки Вебмониторэкс также ответит на все вопросы, связанные с обновлением ноды с мультиаредной опцией.
Шаг 2: Следуйте стандартной процедуре обновления¶
Стандартные процедуры для разных вариантов установки ноды:
Шаг 3: Адаптируйте настройку мультиарендности под новую версию¶
Измените конфигурацию тенантов и приложений, опираясь на пример:
-
Тенант обозначает клиента партнера Вебмониторэкс. У партнера 2 клиента.
-
Трафик с
tenant1.com
иtenant1-1.com
связан с клиентом 1. -
Трафик с
tenant2.com
связан с клиентом 2. -
У клиента 1 есть 3 приложения:
tenant1.com/login
tenant1.com/users
tenant1-1.com
Трафик данных адресов связан с соответствующими приложениями, остальной трафик соотнесен с клиентом без привязки к приложению.
Изучите конфигурацию предыдущей версии¶
Конфигурация ноды 3.6 выглядела бы следующим образом:
server {
server_name tenant1.com;
wallarm_application 20;
...
location /login {
wallarm_application 21;
...
}
location /users {
wallarm_application 22;
...
}
server {
server_name tenant1-1.com;
wallarm_application 23;
...
}
server {
server_name tenant2.com;
wallarm_application 24;
...
}
...
}
В приведенной конфигурации:
-
Трафик с
tenant1.com
иtenant1-1.com
связан с клиентом 1 через идентификаторы20
и23
, привязанные к этому клиенту при помощи запроса к API. -
Подобные запросы к API должны быть выполнены для каждого идентификатора.
-
Тенанты и приложения являются отдельными сущностями, которые логично настраивать при помощи отдельных директив. Также более оптимальной представляется настройка, не включающая дополнительных действий, таких как отправка запросов к API. Вместо этого связи между тенантами и приложениями было бы логично обозначать непосредственно в конфигурационном файле. Эти возможности не предоставляются текущей конфигурацией и возникают с новым подходом 4.x, описанным ниже.
Изучите подход 4.x¶
В конфигурации ноды 4.x тенанты описываются при помощи UUID.
Чтобы обновить конфигурацию, выполните следующие действия:
-
Получите UUID тенантов.
-
Привяжите трафик к тенантам по UUID и настройте приложения.
Получите UUID тенантов¶
Чтобы получить список тенантов, отправьте запросы к Вебмониторэкс API с собственного клиента или из интерфейса справочника API. В запросах к Вебмониторэкс API необходимо передать параметры аутентификации так же, как при создании тенанта.
-
Получите
clientid
, чтобы на следующем шаге узнать UUID, соотнесенные с ними:-
Отправьте GET-запрос на роут
/v2/partner_client
:Пример запроса для отправки с собственного клиента
curl -X GET \ 'https://api.wallarm.ru/v2/partner_client?partnerid=PARTNER_ID' \ -H 'accept: application/json' \ -H 'x-wallarmapi-secret: YOUR_SECRET_KEY' \ -H 'x-wallarmapi-uuid: YOUR_UUID'
Где
PARTNER_ID
– это идентификатор партнера, полученный на Шаге 2 процедуры создания тенанта.Пример ответа на запрос:
{ "body": [ { "id": 1, "partnerid": <PARTNER_ID>, "clientid": <CLIENT_1_ID>, "params": null }, { "id": 3, "partnerid": <PARTNER_ID>, "clientid": <CLIENT_2_ID>, "params": null } ] }
-
Скопируйте
clientid
из ответа на запрос.
-
-
Для получения UUID каждого тенанта, отправьте POST-запрос на роут
v1/objects/client
.Пример запроса для отправки с собственного клиента:
curl -X POST \ https://api.wallarm.ru/v1/objects/client \ -H 'content-type: application/json' \ -H 'x-wallarmapi-secret: YOUR_SECRET_KEY' \ -H 'x-wallarmapi-uuid: YOUR_UUID' \ -d '{ "filter": { "id": [<CLIENT_1_ID>, <CLIENT_2_ID>]}}'
Пример ответа на запрос:
{ "status": 200, "body": [ { "id": <CLIENT_1_ID>, "name": "<CLIENT_1_NAME>", ... "uuid": "11111111-1111-1111-1111-111111111111", ... }, { "id": <CLIENT_2_ID>, "name": "<CLIENT_2_NAME>", ... "uuid": "22222222-2222-2222-2222-222222222222", ... } ] }
-
Скопируйте
uuid
из ответа на запрос.
Привяжите трафик к тенантам по UUID и настройте приложения¶
В конфигурационном файле NGINX:
-
Задайте директиву
wallarm_partner_client_uuid
, используя в качестве значения UUID тенантов. -
Задайте ID защищаемым приложениям при помощи директивы
wallarm_application
.Если приложения уже были настроены, необходимо только добавить UUID тенантов – конфигурацию приложений можно оставить неизменной.
Пример:
server {
server_name tenant1.com;
wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111;
...
location /login {
wallarm_application 21;
...
}
location /users {
wallarm_application 22;
...
}
server {
server_name tenant1-1.com;
wallarm_partner_client_uuid 11111111-1111-1111-1111-111111111111;
wallarm_application 23;
...
}
server {
server_name tenant2.com;
wallarm_partner_client_uuid 22222222-2222-2222-2222-222222222222;
...
}
...
}
В приведенной конфигурации:
-
Тенанты и приложения настроены с помощью разных директив.
-
Связи между тенантами и приложениями задаются через директивы
wallarm_application
в соответствующих блоках конфигурационного файла NGINX.
Шаг 4: Протестируйте работу Вебмониторэкс¶
-
Отправьте тестовый запрос с атакой Path Traversal на адрес защищенного ресурса:
curl http://localhost/etc/passwd
-
Перейдите в Консоль управления Вебмониторэкс → раздел События и убедитесь, что атака появилась в списке.