Назначение
Приложение позволяет направить произвольный PDQL-запрос по API в MaxPatrol VM и получить соответствующий ответ, включающий в себя результаты выполнения PDQL-запроса.
Использование
- Обязательно указывайте путь до конфигурационного файла;
- В случае отсутствия пути до файла с PDQL-запросом, необходимо указать параметр query;
- При выводе результата в файл - укажите путь до файла сохранения результата.
Файл конфигурации
host- Имя сервера MaxPatrol VM;username- Логин учетной записи пользователя PT MC;password- Пароль учетной записи;client_id- Идентификатор приложения. Например, mpx для MaxPatrol 10, ptkb для Knowledge Base, idmgr для Management and Configuration;client_secret- Ключ доступа к приложению;grant_type- Тип разрешений на аутентификацию, в приложении выставлено по умолчанию password;response_type- Тип ответа, в приложении выставлено по умолчанию code id_token;-
scope- Права доступа по токену, в приложении выставлено по умолчанию authorization offline_access mpx.api.Настройки журналирования
file- Путь к файлу для записи логов (событий), в приложении выставлено по умолчанию /var/log/mpvm-api-example.loglevel- Уровень логгирования, в приложении выставлено по умолчанию debug; возможные варианты: error, warn, info, debug.
PDQL-запросы
Для примера в корневом каталоге присутствует файл pdql.txt с запросом, позволяющим получить список подсетей на осонвании таблиц маршрутизации вашего сетевого оборудования.
select(NetworkDeviceHost.RoutingTables.Routes.Destination.NetworkID as NetID, NetworkDeviceHost.RoutingTables.Routes.Destination.Prefix as NetPrefix) | filter(NetID in 10.0.0.0/8 and NetID != 10.31.0.0/16 and NetPrefix not in [0,8,32]) | sort(NetID ASC) | unique()
Чтобы получить список уязвимостей ОС в вашей инфраструктуре, вы можете вписать в файл pdql.txt соответствующий запрос, как бы вы выполняли его в обычном web-интерфейсе MaxPatrol VM.
select(@Host, Host.OsName, Host.OsVersion, Host.@NodeVulners) | filter(Host.@NodeVulners)
Параметры командной строки
-c--config- путь до конфигурационного файла (обязательно);--query-file- путь до файла с pdql-запросом (необязательно, если указан параметр query);-q--query- pdql-запрос (необязательно, если указан параметр query-file);-o--output- путь до файла для сохранения результата (необязательно);-g--group- идентификатор группы MP VM (необязательно);-l--limit- максимальное количество записей для отображения (необязательно), применимо только к формату вывода json;-f--format- формат результата (необязательно), возможные значения: csv, json.
Примеры запуска
Запуск с указанием PDQL-запроса в файле, вывода в файл output.
> app -c ./assets/config.yaml --query-file ./pdql.txt -o ./output
Запуск с указанием PDQL-запроса в параметре запуска (в командной строке), вывода в файл в формате json.
> app -c ./config.yaml -q "select(@Host, Host.OsName, Host.OsVersion, Host.@NodeVulners) | filter(Host.@NodeVulners)" -o ./output.json -f json