Назначение
Приложение позволяет направить произвольный 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