API
Куда я попал?
SECURITM это система для корпоративных служб информационной безопасности,
которая автоматизирует ключевые процессы управления:
контроль соответствия требованиям, управление рисками, учет активов, планирование работ,
задачи, технические уязвимости, опросы и т.д.
SECURITM помогает построить и управлять ИСПДн, КИИ, ГИС, СМИБ/СУИБ, банковскими системами защиты.
А еще SECURITM это место для обмена опытом в рамках сообщества служб безопасности.
SECURITM помогает построить и управлять ИСПДн, КИИ, ГИС, СМИБ/СУИБ, банковскими системами защиты.
А еще SECURITM это место для обмена опытом в рамках сообщества служб безопасности.
Для автоматического взаимодействия SECURITM и других приложений, скриптов и коннекторов (например, Apache NiFi), в SECURITM есть JSON REST API
Аутентификация
Для подключения к SECURITM по API используется API-токен.
API токен создается в Профиле команды. Там же его можно удалить и изменить.
Токен передается вместе с запросом в его заголовке:
API токен создается в Профиле команды. Там же его можно удалить и изменить.
Токен передается вместе с запросом в его заголовке:
'Authorization' = "Bearer [TOKEN]"
Управление активами
В отношении объектов типа актив по API можно проводить следующие операции:
- Импорт активов, включая изменение и обновление
- Экспорт активов и их полей
Импорт активов
POST запрос для импорта активов
https://service.securitm.ru/api/v1/assets/import
Для проведения импорта активов в SECURITM по API нужно
- Создать API токен
Токен указывается в заголовке запроса - Создать или выбрать шаблон импорта
Название или UUID шаблона нужно добавить в тело запроса в параметр template
Шаблоны импорта позволяют провести парсинг и логическую обработку любых данных, связав их с активами в SECURITM. Указание названия или UUID шаблона импорта обязательно в API запросе. - Сформировать набор данных и поместить его в раздел assets API запроса
Примеры скриптов для проведения импорта активов в SECURITM:
- Скрипт на PowerShell, проводящий импорт активов любых типов. Используется Шаблон SECURITM
# Укажите API Token для подключения (создается в профиле команды) $token = '[TOKEN]' # Укажите Шаблон, который будет использоваться для парсинга данных $template = 'Шаблон SECURITM' # Если у вас подписка Professional - укажите адрес вашего сервера SECURITM $url = 'https://service.securitm.ru/api/v1/assets/import' $headers = @{ 'Authorization' = "Bearer $token" } $requestBody = [PSCustomObject]@{ 'template' = $template 'assets' = @( [ordered]@{ 'Тип' = 'Работник' 'Название' = 'Иванов Иван Иванович' 'Описание' = 'Тестовый пользователь для импорта по API' 'Приоритет' = 'Низкий' 'Расположение' = 'Центральный офис' 'Подразделение' = 'Отдел информационной безопасности' 'Должность' = 'Специалист' 'Mail' = 'test@securitm.ru' }, [ordered]@{ 'Тип' = 'Операционная система' 'Название' = 'myserver.domain.local - 192.168.1.1' 'Описание' = 'Тестовый сервер для импорта по API' 'Приоритет' = 'Низкий' 'Расположение' = 'Центральный офис' 'Администратор' = 'Иванов Иван Иванович' 'IP адрес' = '192.168.1.1' 'Hostname' = 'myserver' 'Домен' = 'domain.local' } ) } | ConvertTo-Json -Depth 3 try { $response = Invoke-RestMethod -Method Post -Uri $url -ContentType "application/json; charset=utf-8" -Headers $headers -Body $requestBody Write-Host ($response | ConvertTo-Json -Depth 10) } catch { Write-Host 'Status code:' $_.Exception.Response.StatusCode.Value__ $result = $_.Exception.Response.GetResponseStream() $reader = New-Object System.IO.StreamReader($result) $reader.BaseStream.Position = 0 $reader.DiscardBufferedData() $responseBody = $reader.ReadToEnd() Write-Host $responseBody } finally { if ($result) { $result.Close() } if ($reader) { $reader.Close() } }
- Скрипт на Python, проводящий импорт активов любых типов. Используется Шаблон SECURITM
- Скрипт на PowerShell для сбора активов (пользователей, компьютеров, групп, состава групп) из локального Active Directory и импорта по API в SECURITM.
Перед импортом нужно добавить в команду следующие типы активов: Работник, Группа LDAP, Windows Server (включая подтипы для конкретных версий ОС)
Используются шаблоны импорта- Active Directory Users
- Active Directory Computers
- Active Directory Groups
- Active Directory Group members
Рекомендация: Если вы планируете регулярный запуск скриптов через планировщик заданий, удобно можно использовать такой запускающий Batch скрипт, который будет инициировать запуск PowerShell скрипта и сохранять все результаты его работы в лог-файл. Скрипты должны находиться в одной папке и одинаково называться, например import.cmd и import.ps1
@echo off
set "log=%~dpn0.log"
chcp 1251 >nul
(echo Start @ %date% %time% & echo ----------) > "%log%"
powershell.exe -ExecutionPolicy Bypass -File "%~dpn0.ps1" >> "%log%" 2>&1
(echo ---------- & echo Finish @ %date% %time%) >> "%log%"
chcp 866 >nul
Экспорт активов
GET запрос для экспорта активов
https://service.securitm.ru/api/v1/assets/[asset type]?[asset fields]
где
- [asset type] - обозначение типа актива, который будет экспортироваться.
Узнать обозначение типа актива можно в URL браузера зайдя в соответствующий реестр.
Пример: os-18, linux-server-8 - [asset fields] - поля активов, которые будут выгружены
Указывать не обязательно, по умолчанию будут выгружены все поля.
Пример: ip&version
Для проведения экспорта активов из SECURITM по API нужно
- Создать API токен
Токен указывается в заголовке запроса - Указать тип активов, которые будут экспортироваться
- Если требуется - настроить фильтр полей активов
Пример скрипта на PowerShell для экспорта активов
# Укажите API Token для подключения (создается в профиле команды)
$token = '[TOKEN]'
# Если у вас подписка Professional - укажите адрес вашего сервера SECURITM
# Укажите тип актива который собираетесь экспортировать из SECURITM.
# После "?" укажите поля, которые подлежат экспорту. Если не указывать - будут выгружены все поля.
$url = 'https://service.securitm.ru/api/v1/assets/os-18?ip'
$headers = @{
'Authorization' = "Bearer $token"
}
try {
$response = Invoke-RestMethod -Method Get -Uri $url -ContentType "application/json; charset=utf-8" -Headers $headers
Write-Host ($response | ConvertTo-Json -Depth 10)
} catch {
Write-Host 'Status code:' $_.Exception.Response.StatusCode.Value__
$result = $_.Exception.Response.GetResponseStream()
$reader = New-Object System.IO.StreamReader($result)
$reader.BaseStream.Position = 0
$reader.DiscardBufferedData()
$responseBody = $reader.ReadToEnd()
Write-Host $responseBody
} finally {
if ($result) {
$result.Close()
}
if ($reader) {
$reader.Close()
}
}