Skip to main content

Автоматическое добавление активов

Развёртывание скрипта импорта активов 

Инструкция описывает установку скрипта реагирования на хост коррелятора и последующую настройку в веб-интерфейсе KUMA.

Что делает скрипт

Скрипт принимает два аргумента — тенант и связку IP|FQDN — формирует запрос к API KUMA и импортирует актив (POST /assets/import) в указанный тенант.


Часть 1. Подготовка скрипта на хосте коррелятора

kuma_import_asset.sh
#!/usr/bin/env bash
#
# Импорт актива в KUMA через POST /api/v3/assets/import
#
# Использование:
#   ./kuma_import_asset.sh <tenantID> "<ip>|<fqdn>"
#
# Второй аргумент — IP и/или FQDN через разделитель '|'. Допустимо:
#   "1.2.3.4|host.example.com"   -> и IP, и FQDN
#   "1.2.3.4"  или  "1.2.3.4|"   -> только IP
#   "|host.example.com"          -> только FQDN
#
set -euo pipefail

# ============================ КОНСТАНТЫ ============================
KUMA_HOST=""          # адрес системы (KUMA Core)
KUMA_PORT="7223"      # порт REST API
KUMA_TOKEN=""         # токен доступа (Bearer)

#   1 = не проверять сертификат (curl -k)
#   0 = проверять (нужен доверенный CA)
INSECURE=1
# ==================================================================

usage() {
    echo "Использование: $0 <tenantID> \"<ip>|<fqdn>\"" >&2
    exit 1
}

# ----------------------------- Аргументы -----------------------------
tenant="${1:-}"
device="${2:-}"

[[ -z "$tenant" ]] && { echo "Ошибка: не указан тенант (аргумент 1)." >&2; usage; }

IFS='|' read -r ip fqdn <<< "$device"

trim() { local s="$1"; s="${s#"${s%%[![:space:]]*}"}"; s="${s%"${s##*[![:space:]]}"}"; printf '%s' "$s"; }
ip="$(trim "$ip")"
fqdn="$(trim "$fqdn")"

if [[ -z "$ip" && -z "$fqdn" ]]; then
    echo "Ошибка: нужно указать хотя бы IP или FQDN." >&2
    usage
fi

json_escape() {
    local s="$1"
    s="${s//\\/\\\\}"
    s="${s//\"/\\\"}"
    printf '%s' "$s"
}

parts=()
[[ -n "$ip"   ]] && parts+=("\"ipAddresses\":[\"$(json_escape "$ip")\"]")
[[ -n "$fqdn" ]] && parts+=("\"fqdn\":[\"$(json_escape "$fqdn")\"]")

asset="{$(IFS=,; printf '%s' "${parts[*]}")}"
body="$(printf '{"tenantID":"%s","assets":[%s]}' "$(json_escape "$tenant")" "$asset")"

url="https://${KUMA_HOST}:${KUMA_PORT}/api/v3/assets/import"

curl_opts=(
    -sS
    -w $'\n%{http_code}'
    -X POST "$url"
    -H "Authorization: Bearer ${KUMA_TOKEN}"
    -H "Content-Type: application/json"
    --data "$body"
)
[[ "$INSECURE" == "1" ]] && curl_opts+=(-k)

echo "Отправка в тенант '$tenant' (ip='${ip:-—}', fqdn='${fqdn:-—}')..."

response="$(curl "${curl_opts[@]}")"
http_code="${response##*$'\n'}"     
payload="${response%$'\n'*}"        

echo "HTTP ${http_code}"
echo "${payload}"

if [[ "$http_code" == "200" ]]; then
    echo "Готово: актив импортирован."
else
    echo "Импорт не выполнен." >&2
    exit 1
fi
1.1. Заполнить константы в скрипте

Перед размещением откройте скрипт и задайте значения констант в начале файла:

- KUMA_HOST — адрес системы (KUMA Core);
- KUMA_TOKEN — токен доступа к API.

Порт (KUMA_PORT=7223) уже задан по умолчанию и в стандартной конфигурации менять его не нужно.

Требования к токену. Токен должен принадлежать пользователю, у которого есть права на импорт активов — операцию POST /assets/import. Такими правами обладают роли:
«Главный администратор», «Администратор тенанта», «Аналитик 2 линии», «Аналитик 1 линии».
Без соответствующих прав API вернёт ошибку доступа (403) и актив не импортируется.

1.2. Определить ID коррелятора

ID коррелятора можно посмотреть в веб-интерфейсе системы в разделе активных сервисов (Ресурсы→ Активные сервисы). Он потребуется для пути размещения скрипта.

1.3. Разместить скрипт

Скопируйте скрипт в каталог scripts нужного коррелятора, подставив его ID:

/opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/
1.4. Назначить владельца

Владельцем скрипта должен быть пользователь и группа kuma:

chown kuma:kuma /opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/kuma_import_asset.sh
1.5. Выдать права на выполнение
chmod +x /opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/kuma_import_asset.sh

После этого скрипт готов к запуску коррелятором.


Часть 2. Настройка в веб-интерфейсе KUMA

2.1. Проверить привязку правил корреляции

Убедитесь, что к коррелятору привязаны следующие правила:

- [OOTB][Net] Detection unknown assets in destination fields
- [OOTB][Net] Detection unknown assets in source fields
- [OOTB][Net] Detection unknown assets in device fields

Если правила привязаны — переходите к шагу 2.2.

Если правила есть в системе, но не привязаны — привяжите их к коррелятору и обновите параметры коррелятора.

Если правил нет в системе — скачайте их из репозитория ресурсов. Нужный пакет: [OOTB] KUMA 4.x resources. После загрузки привяжите правила к коррелятору и обновите его параметры.

2.2. Импортировать правило реагирования

Импортируйте правило реагирования вручную из файла:

- Ссылка: https://box.kaspersky.com/seafhttp/f/c98c50e678794f248be5/?op=view 
- Пароль для импорта: Kaspersky@KUMA4.2!

После импорта привяжите правило реагирования к коррелятору.

2.3. Обновить параметры коррелятора

Обновите параметры коррелятора. После этого связка «правила корреляции + правило реагирования + скрипт» начнёт работать.


Примечание: активный лист

Если правила [OOTB][Net] Detection unknown assets ... уже присутствовали в системе и работали ранее, срабатываний может не быть, потому что известные активы уже накоплены в активном листе.

Чтобы срабатывания снова появились, очистите активный лист на корреляторе:

- Активный лист: [OOTB][Net] Detection unknown assets

После очистки листа коррелятор снова начнёт фиксировать неизвестные активы и запускать скрипт импорта.