GraphQL API
Об API
API системы R-Vision SIEM, основанный на технологии GraphQL, представляет собой комплексный интерфейс для выполнения запросов и манипуляций с данными в рамках системы. Основное предназначение API — обеспечение доступа к основному функционалу системы, что включает в себя поиск событий, управление элементами экспертизы, изменение статусов и уровней угроз оповещений, а также взаимодействие с каталогами элементов экспертизы и экспорт данных.
Об API-токенах
Взаимодействие с API осуществляется через HTTP-запросы методами POST для отправки GraphQL-запросов и мутаций. Каждый запрос требует наличия авторизационного токена в заголовке запроса. API-токен выпускается системой посредством функционала ботов. Бот — учетная запись, предназначенная для автоматизированного взаимодействия с системой через API-запросы. При создании бота, ему автоматически присваивается API-токен.
О GraphQL
GraphQL представляет собой язык запросов для API, обладающий следующими характеристиками:
-
Спецификация: определяет правила валидации схемы на стороне сервера API, а также валидность вызовов клиента на основе этой схемы.
-
Строгая типизация: схема GraphQL строго типизирована, описывая типы данных и отношения между объектами, что обеспечивает предсказуемость и точность ответов API.
-
Иерархичность: структура запросов и ответов GraphQL отражает иерархическую структуру данных, позволяя клиентам получать именно те данные, которые необходимы, в одном запросе.
-
Уровень приложения: GraphQL функционирует на уровне приложения, не завися от конкретных технологий хранения данных. Графическая структура запросов и ответов описывается в схеме API, определяющей объекты и их связи.
Начало работы
Для интеграции с API системы R-Vision SIEM рекомендуется выполнение ряда действий, таких как подготовка окружения, получение токена и авторизация.
Подготовка и настройка окружения
Установите и настройте необходимые инструменты, которые поддерживают формирование и отправку GraphQL запросов. Например, такие, как Postman, Insomnia или GraphQL IDE.
Аутентификация
Доступ к функциональности API системы R-Vision SIEM требует аутентификации с использованием токена авторизации. Токен — это уникальный цифро-буквенный код, представленный в формате JWT (JSON Web Token), который включается в каждый запрос через HTTP заголовок Authorization
.
Токен можно получить, создав учетную запись с типом Бот в веб-интерфейса системы R-Vision SIEM.
Для выполнения запросов к API, необходимо включить следующие HTTP заголовки:
-
Authorization
: заголовок, содержащий токен авторизации в формате JWT (JSON Web Token). Токен предоставляет информацию о пользователе и его правах доступа. -
x-tenant-id
: заголовок, указывающий идентификатор тенанта.
Токен передается в заголовке Authorization
HTTP-запроса при обращении к API.
Bearer не является частью самого токена и добавляется в заголовок запроса в качестве префикса перед самим токеном для указания схемы аутентификации.
|
{ "Authorization": "Bearer <ваш_токен_доступа>", "x-tenant-id": "00000000-0000-0000-0000-000000000000" }
Где <ваш_токен_доступа>
— это актуальный токен доступа, полученный после аутентификации в системе R-Vision SIEM.
{ "Authorization": "Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..., "x-tenant-id": "99311ef1-32a1-4b2d-9d38-7613be5e...." }
Выполнение первого запроса
Пример запроса на получение детальной информации об элементе экспертизы:
query {
expertise(id: "uniqueExpertiseId") {
id
sourceId
folderId
type
name
description
draft
author
status
tags
version
severity
createdAt
updatedAt
__typename
}
}
В этом запросе используется параметр:
-
id
: уникальный идентификатор элемента экспертизы, информацию о котором необходимо получить.
Возвращаемый тип Expertise
Параметр |
Описание |
|
Уникальный идентификатор элемента экспертизы. |
|
Идентификатор исходного объекта, если применимо. |
|
Идентификатор каталога, в который включен элемент экспертизы. |
|
Тип элемента экспертизы. |
|
Название элемента экспертизы. |
|
Описание элемента экспертизы. |
|
Указывает, является ли объект черновиком. |
|
Автор элемента экспертизы. Указывается автоматически на основе данных пользователя, выполнившего мутацию. |
|
Статус элемента экспертизы. |
|
Массив тегов, ассоциированных с объектом. |
|
Версия элемента экспертизы. |
|
Уровень серьезности элемента экспертизы. |
|
Дата и время создания объекта. |
|
Дата и время последнего обновления объекта. |
|
Название типа объекта в системе GraphQL. |
Выполнение запросов
Для выполнения запросов GraphQL, учитывая, что операции GraphQL состоят из многострочного JSON, рекомендуется использовать GraphQL Explorer. В качестве альтернативы можно использовать curl или любую другую HTTP-совместимую библиотеку. Все запросы GraphQL, будь то запросы (queries), мутации (mutations) или подписки (subscriptions) передаются в теле POST-запроса в формате JSON.
Пример использования curl для выполнения GraphQL запроса:
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" -H "x-tenant-id: YOUR_TENANT_ID" -X POST -d " \
{ \
\"query\": \"query { yourQueryHere }\" \
} \
" https://your-rvision-siem-domain/api/graphql
В этом примере:
-
YOUR_ACCESS_TOKEN
должен быть заменен на ваш фактический токен доступа к системе R-Vision SIEM. -
YOUR_TENANT_ID
должен быть заменен на идентификатор вашего тенанта в системе. -
yourQueryHere
должен быть заменен на ваш конкретный запрос GraphQL, например, запрос на получение списка событий или информации о специфическом объекте. -
URL
your-rvision-siem-domain/api/graphql
представляет собой конечную точку для доступа к GraphQL API вашей системы R-Vision SIEM и должен быть заменен на актуальный URL вашего API.
Важно корректно экранировать специальные символы в теле JSON-запроса для обеспечения его правильной обработки сервером. Внешние двойные кавычки и экранированные внутренние двойные кавычки помогают избежать ошибок при разборе запроса. |
При отсутствии необходимых разрешений у токена для доступа к запрашиваемому ресурсу, API вернет ошибку с указанием, какие разрешения необходимы для выполнения запроса.