Импорт активов

Особенности идентификации, создания и обновления активов

Активы импортируются в соответствии с правилами слияния данных об активах.

POST /api/v2/assets/import

Массовое создание или обновление активов.

Если указан FQDN актива, он играет роль уникального идентификатора актива в рамках тенанта. Если указано более одного FQDN, используется первый адрес из указанного массива адресов. Если FQDN не указан, для идентификации актива используется первый IP-адрес из указанного массива адресов. Если имя актива не указано, оно заполняется либо значением FQDN, либо значением первого IP-адреса. Активы, импортированные из KSC не могут быть обновлены, поэтому в процессе импорта могут возникать конфликты по FQDN, если в тенанте уже существует KSC-актив с таким FQDN. Возникновение такого конфликта препятствует обработке конфликтующего актива, но не препятствует обработке других активов, указанных в теле запроса. Позволяет заполнять пользовательские поля по uuid из настроек assetsCustomFields.

Доступ: Главный администратор, Администратор тенанта, Аналитик второго уровня, Аналитик первого уровня.

Тело запроса

Формат: JSON

type Request struct {

   TenantID string  `json:"tenantID"`

    Assets   []Asset `json:"assets"`

}

 

type Asset struct {

    Name            string          `json:"name"`

    FQDN            string          `json:"fqdn"`

    IPAddresses     []string        `json:"ipAddresses"`

    MACAddresses    []string        `json:"macAddresses"`

    Owner           string          `json:"owner"`

    OS              *OS             `json:"os"`

    Software        []Software      `json:"software"`

    Vulnerabilities []Vulnerability `json:"vulnerabilities"`

    CustomFields    []CustomField      `json:"customFields"`

}

 

type OS struct {

    Name    string `json:"name"`

    Version uint64 `json:"version"`

}

 

type Software struct {

    Name    string `json:"name"`

    Version string `json:"version"`

    Vendor  string `json:"vendor"`

}

 

type Vulnerability struct {

    KasperskyID           string   `json:"kasperskyID"`

    ProductName           string   `json:"productName"`

    DescriptionURL        string   `json:"descriptionURL"`

    RecommendedMajorPatch string   `json:"recommendedMajorPatch"`

    RecommendedMinorPatch string   `json:"recommendedMinorPatch"`

    SeverityStr           string   `json:"severityStr"`

    Severity              uint64   `json:"severity"`

    CVE                   []string `json:"cve"`

    ExploitExists         bool     `json:"exploitExists"`

    MalwareExists         bool     `json:"malwareExists"`

}

 

type CustomFields struct {

    ID           string   `json:"id"`

    Value        string   `json:"value"`

}

Обязательные поля Request

Имя

Тип данных

Обязательный

Описание

Пример значения

tenantID

string

Да

Идентификатор тенанта

00000000-0000-0000-0000-000000000000

assets

[]Asset

Да

Массив импортируемых активов

 

Обязательные поля Asset

Имя

Тип данных

Обязательный

Описание

Пример значения

fqdn

string

Если не указан ipAddresses

FQDN актива. Можно указать несколько значений через запятую. Рекомендуется указывать именно FQDN, а не просто имя хоста. Приоритетный признак для идентификации актива.

[my-asset-1.example.com]

[my-asset-1]

ipAddresses

[]string

Если не указан fqdn

Массив IP-адресов актива. IPv4 или IPv6. Первый элемент массива используется как второстепенный признак для идентификации актива.

["192.168.1.1", "192.168.2.2"]

["2001:0db8:85a3:0000:0000:8a2e:0370:7334"]

Ответ

HTTP-код: 200

Формат: JSON

type Response struct {

    InsertedIDs  map[int64]interface{} `json:"insertedIDs"`

    UpdatedCount uint64                `json:"updatedCount"`

    Errors       []ImportError         `json:"errors"`

}

 

type ImportError struct {

    Index   uint64 `json:"index"`

    Message string `json:"message"`

}

Возможные ошибки

HTTP-код

Описание

Значение поля message

Значение поля details

400

Не указан идентификатор тенанта (tenantID)

tenantID required

-

400

Попытка импорта активов в общий тенант

import into shared tenant not allowed

-

400

В теле запроса не указан ни один актив

at least one asset required

-

400

Не указано ни одно из обязательных полей

one of fields required

asset[<index>]: fqdn, ipAddresses

400

Неверный FQDN

invalid value

asset[<index>].fqdn

400

Неверный IP адрес

invalid value

asset[<index>].ipAddresses[<index>]

400

Дублируется IP адрес

duplicated value

asset[<index>].ipAddresses

400

Неверный MAC адрес

invalid value

asset[<index>].macAddresses[<index>]

400

Дублируется MAC адрес

duplicated value

asset[<index>].macAddresses

403

Пользователь не имеет необходимой роли в указанном тенанте

access denied

-

404

Указанный тенант не найден

tenant not found

-

406

Указанный тенант отключен

tenant disabled

-

500

Любые другие внутренние ошибки

вариативное

вариативное

В начало