Kaspersky Unified Monitoring and Analysis Platform

Формирование SQL-запроса с помощью SQL-функций KUMA

SQL-функции KUMA позволяют использовать атрибуты активов и учетных записей в поисковых запросах для фильтрации событий, формирования отчетов и виджетов (тип графика: Таблица). Вы можете обогащать события, используя данные словарей, таблиц, активов и учетных записей с помощью следующих наборов функций:

  • Набор функций enrich. Позволяет обогатить результаты запроса полями актива, учетной записи, значениями из словаря с типом Словарь и словаря с типом Таблица. Набор функций enrich включает в себя следующие функции:
    • enrich_assets;
    • enrich_accounts;
    • enrich_table;
    • enrich_dictionary.
  • Набор функций lookup. Позволяет добавить в поисковый запрос условия по активам и учетным записям. Набор функций lookup включает в себя следующие функции:
    • lookup_assets;
    • lookup_accounts;
    • lookup_assets_category.

Максимальное количество событий в одном запросе – 10 000.

В начало
[Topic 294927]

Использование набора функций enrich в SQL-запросах

Набор функций enrich (см. таблицу ниже) применяется в блоке SELECT SQL-запроса для обогащения результатов.

При использовании этого набора функций вы не можете группировать события по обогащенным полям.

Обогащаемые функциями виджеты и отчеты должны принадлежать не более чем одному тенанту.

Значения полей актива, которые указываются в SQL-запросах, являются регистрозависимыми.

Описание набора функций enrich

Функция

Поле события

Поле актива

Описание

enrich_assets

DeviceAssetID

DestinationAssetID

SourceAssetID

 

name

os

osBuild

ipAddress

macAddress

fqdn

source

software

cii

ramSize

kscLastAvBasesUpdate

kscLastInfoUpdate

kscLastUpdate

kscLastSystemStart

kscStatusMask

kscRtProtectionState

kscEncryptionState

kscAntiSpamStatus

kscEmailAvStatus

kscDlpStatus

kscStatusID

kscEdrStatus

lastVisible

aistatus

aiscore

Позволяет обогатить результат запроса полями актива на основании указанного в функции идентификатора.

Например:

enrich_assets(DeviceAssetID, name)

enrich_accounts

SourceAccountID

DestinationAccountID

name

guid

domain

cn

dn

employee_id

email

mail_nickname

mobile

sid

sam_name

telephone_number

principal_name

sn

type

title

division

department

manager

location

company

street_address

physical_delivery_office_name

uac

Позволяет обогатить результат запроса полями учетной записи на основании указанного в функции идентификатора.

Например:

enrich_account(SourceAccountID, name)

Функция доступна только для тенантов, у которых включено обогащение с помощью LDAP.

enrich_table

Любое

Позволяет обогатить результат запроса значениями из словаря с типом Таблица на основании полей событий в ответе от кластера ClickHouse.

Например:

enrich_table('Main/some-table', [DeviceProduct], 'value')

Ключевой может быть только один столбец таблицы, но ключ записи может быть составным.

Например:

enrich_table('Main/Dictionary', [BytesOut|BytesIn], 'value2')

Функция enrich_table возвращает только один столбец таблицы. Если надо вызвать больше столбцов, вызовите функцию повторно с указанием нужных полей.

enrich_dictionary

Любое

Позволяет обогатить результат запроса значениями из словаря с типом Словарь на основании полей событий в ответе от кластера ClickHouse.

Например:

  • enrich_dictionary('Main/some-dict', [SourceAddress]
  • enrich_dictionary('Main/some-dict', [SourceAddress, DeviceAddress])

Вы можете посмотреть путь до словаря в разделе РесурсыСловари.

Примеры SQL-запросов с функцией enrich

Вы можете задавать функцию enrich при ручном создании SQL-запросов. Примеры запросов с функцией enrich:

  • Все события таблицы events с полями событий Name и Message, а также с полями актива macAddress и osBuild для обогащения результата данными актива. Количество отображаемых в таблице строк – 250.

    SELECT Name,

    Message,

    enrich_assets(DeviceAssetID, macAddress),

    enrich_assets(DeviceAssetID, osBuild)

    FROM `events`

    WHERE DeviceAssetID != ''

    LIMIT 250

  • Все события таблицы events с полями событий SourceUserName и SourceAddress, а также со значениями поля mobile для обогащения результата данными учетной записи. Количество отображаемых в таблице строк – 10.

    SELECT SourceUserName,

    SourceAddress,

    enrich_accounts(SourceAccountID, mobile) as mobile

    FROM `events`

    WHERE SourceAccountID != ''

    LIMIT 10

  • Все события таблицы events с полями событий DeviceProduct со значениями из таблицы Main/[OOTB] Linux. Auditd record types. Отсортированы по столбцу Timestamp в порядке убывания. Количество отображаемых в таблице строк – 1000.

    SELECT DeviceProduct,

    enrich_table('Main/[OOTB] Linux. Auditd record types', [DeviceProduct], 'Description') as HTTP

    FROM `events` WHERE Type!=4

    LIMIT 1000

  • Все события таблицы events с полями событий DeviceAction со значениями из словаря Main/[OOTB] KEDR. Количество отображаемых в таблице строк – 255.

    SELECT DeviceAction,

    enrich_dictionary('Main/[OOTB] KEDR. AccountType', [BytesOut]) as accountType

    FROM `events` WHERE Type!=4

    LIMIT 255

В начало
[Topic 295026]

Использование набора функций lookup в SQL-запросах

Набор функций lookup (см. таблицу ниже) применяется в блоке WHERE SQL-запроса для добавления в поисковый запрос условий по активам и учетным записям.

Описание набора функций lookup

Тип функции

Поле события

Поле актива

Оператор

Описание

lookup_assets

 

DeviceAssetID

SourceAssetID

DestinationAssetID

 

name

os

osBuild

source

cii

ramSize

kscRtProtectionState

kscEncryptionState

kscAntiSpamStatus

kscEmailAvStatus

kscDlpStatus

kscStatusID

kscEdrStatus

aistatus

aiscore

=

Позволяет добавить в результат запроса условия по активам, значения полей которых совпадают со значением, указанным в запросе.

Для значений, которые являются числами, надо указывать строку с необходимым числом.

Например:

lookup_assets(DeviceAssetID, osBuild, '=', '19045.000000')

lookup_assets(DeviceAssetID, ramSize, '=', '3241234234')

kscLastAvBasesUpdate

kscLastInfoUpdate

kscLastUpdate

kscLastSystemStart

lastVisible

ramSize

aiscore

<

>

<=

>=

Позволяет добавить в результат запроса условия по активам, значения полей которых:

  • меньше значения, указанного в запросе;
  • больше значения, указанного в запросе;
  • меньше или равно значению, указанному в запросе;
  • больше или равно значению, указанному в запросе.

Для значений, которые являются числами, надо указывать строку с необходимым числом.

Например:

lookup_assets(DeviceAssetID, aiscore, '>', '50')

Значения, которые являются датами, можно указывать в следующих форматах:

  • Количество секунд:

    lookup_assets(DeviceAssetID, lastVisible, '>', '1725971837')

  • Количество миллисекунд:

    lookup_assets(DeviceAssetID, lastVisible, '<', '1725971837834')

  • Количество дней:

    lookup_assets(DeviceAssetID, lastVisible, '<', 'now-15d')

 

name

os

osBuild

fqdn

software

match

imatch

Позволяет добавить в результат запроса условия по активам с помощью строкового литерала или регулярного выражения.

Например:

  • Запрос со строковым литералом и оператором match:

    lookup_assets(DestinationAssetID, name, 'match','test.company.com')

  • Запрос со строковым литералом и оператором imatch:

    lookup_assets(DestinationAssetID, name, 'imatch','test.COMPANY.com')

  • Запрос с регулярным выражением и оператором match:

    lookup_assets(DestinationAssetID, name, 'match','([.-]?\w+)')

  • Запрос с регулярным выражением и оператором imatch:

    lookup_assets(DestinationAssetID, name, 'imatch','([A-Z])')

Допускается использовать регистронезависимое регулярное выражение (PCRE2).

ipAddress

macAddress

fqdn

software

kscStatusMask

in

Позволяет добавить в результат запроса условия по активам, значение которых соответствует значению, указанному в запросе.

Например:

lookup_assets(DeviceAssetID, fqdn , 'in', ['test_fqdn1.company.ru', 'test_fqdn2.company.ru'])

ipAddress

insubnet

Позволяет добавить в результат запроса условия по активам с IP-адресами, которые входят в указанную подсеть. IP-адрес указывается в формате CIDR.

Например:

lookup_assets(DeviceAssetID, ipAddress, 'insubnet', '10.0.0.0/24')

ipAddress

inrange

Позволяет добавить в результат запроса условия по активам, IP-адрес которых попадает в указанный диапазон.

Первый указанный в запросе IP-адрес является начальным, второй  конечным.

Например:

lookup_assets(DeviceAssetID, ipAddress, 'inrange', ['192.168.1.1', '192.168.1.184'])

По результатам выполнения запроса будут отфильтрованы активы с IP-адресами, находящимися в диапазоне от 192.168.1.1 до 192.168.1.184.

lookup_accounts

 

SourceAccountID

DestinationAccountID

 

name

guid

domain

cn

dn

employee_id

email

mail_nickname

mobile

sid

sam_name

telephone_number

principal_name

sn

title

division

department

manager

location

company

street_address

physical_delivery_office_name

uac

=

Позволяет добавить в результат запроса условия по учетным записям, значения полей которых совпадают со значением, указанным в запросе.

Для значений, которые являются числами, надо указывать строку с необходимым числом.

Например:

lookup_accounts(SourceAccountID, employee_id, '=', '15452')

name

guid

domain

cn

dn

employee_id

email

mail_nickname

mobile

sid

sam_name

telephone_number

principal_name

sn

type

title

division

department

manager

location

company

street_address

physical_delivery_office_name

like

Позволяет добавить в результат запроса условия по учетным записям, значения полей которых соответствуют like-выражению, указанному в запросе.

Подробнее об операторе like см. в SQL Language Expressions.

lookup_accounts(DestinationAccountID, name, 'like', '_ccount1%')

lookup_assets_category

DeviceAssetID

SourceAssetID

DestinationAssetID

Позволяет найти все события, у которых связанные активы находятся в указанной папке.

Например:

lookup_assets_category(DeviceAssetID, ['Main/Business Impact'])

где Main — это название тенанта, а Business Impact название папки.

Примеры SQL-запросов с функцией lookup

Вы можете задавать функцию lookup при ручном создании SQL-запросов. Примеры запросов с функцией lookup:

  • Все события таблицы events с полями событий TenantID и DeviceProduct, а также с полем актива fqdn, значение которого одержит подстроку win10. Количество отображаемых в таблице строк – 250.

    SELECT TenantID, DeviceProduct

    FROM `events`

    WHERE DeviceAssetID != ''

    AND lookup_assets(DeviceAssetID, fqdn, 'match', 'win10')

    LIMIT 250

  • Все события таблицы events с полями событий TenantID и DeviceProduct, а также со значениями поля EmployeeID, значение которого равно 15452. Количество отображаемых в таблице строк – 10.

    SELECT TenantID, DeviceProduct

    FROM `events`

    WHERE SourceAccountID != ''

    AND lookup_accounts(SourceAccountID, employee_id, '=', '15452')

    LIMIT 10

  • Все события таблицы events с полями событий TenantID и DeviceProduct, а также с указанием папки, в которой находится актив. Количество отображаемых в таблице строк – 100.

    SELECT TenantID, DeviceProduct

    FROM `events`

    WHERE DeviceAssetID != ''

    AND lookup_assets_category(DeviceAssetID, ['Main/Business Impact'])

    LIMIT 100

В начало
[Topic 295027]