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

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

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

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

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

---

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

<details id="bkmrk-kuma_import_asset.sh"><summary>kuma\_import\_asset.sh</summary>

```bash
#!/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

```

</details>##### 1.1. Заполнить константы в скрипте

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

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

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

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

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

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

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

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

```bash
/opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/
```

##### 1.4. Назначить владельца

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

```bash
chown kuma:kuma /opt/kaspersky/kuma/correlator/<id_коррелятора>/scripts/kuma_import_asset.sh
```

##### 1.5. Выдать права на выполнение

```bash
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](https://box.kaspersky.com/seafhttp/f/c98c50e678794f248be5/?op=view)   
\- **Пароль для импорта**: `Kaspersky@KUMA4.2!`

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

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

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

---

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

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

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

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

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