Таблицы обогащения

В данном разделе освещается концепция таблиц обогащения в R-Vision SIEM, включая описание их назначения, принципы работы и процесса интеграции в процесс обработки событий. Управление таблицами обогащения происходит в разделе Экспертиза.

О таблицах обогащения

Таблица обогащения в системе R-Vision SIEM представляет собой структурированный набор данных, используемый для дополнения и уточнения информации по событиям безопасности. Они служат для обогащения событий дополнительными данными, не содержащимися непосредственно в событиях, но позволяющими улучшить анализ и интерпретацию событий.

Структура таблиц обогащения включает в себя определения полей и типов данных, которые должны содержаться в каждой записи таблицы. Каждая запись в таблице обогащения может включать такие данные, как идентификаторы устройств, IP-адреса, имена пользователей, географические данные, данные о приложениях и любую другую информацию, которая может быть использована для обогащения событий.

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

Таблицы обогащения позволяют выполнить следующие задачи:

  • Дополнение событий информацией, недоступной в исходных данных, для улучшения понимания контекста события.

  • Уточнение и классификация событий на основе дополнительных параметров, содержащихся в таблицах.

  • Повышение точности корреляции событий за счет дополнительных данных для сопоставления.

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

Работа с таблицей обогащения

Доступные операции над таблицей обогащения:

Создание таблицы обогащения

Чтобы добавить таблицу обогащения:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

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

    При создании элемента экспертизы поля его структуры заполняются значениями по умолчанию. Для быстрой настройки структуры в системе доступны предустановленные примеры. Чтобы заполнить поля элемента экспертизы с помощью примера, нажмите на кнопку Примеры и выберите требуемый пример из выпадающего списка.
  3. Заполните поля таблицы обогащения, чтобы определить логику ее работы.

    Строки, начинающиеся с символа $ ($foo), интерпретируются в VRL-блоках элементов экспертизы как переменные окружения. Чтобы избежать этого, экранируйте такие строки символом $ ($$foo).
  4. Нажмите на кнопку Опубликовать версию, чтобы сохранить изменения и опубликовать созданную таблицу обогащения. Система отобразит уведомление об успешном создании таблицы обогащения. Новая таблица обогащения отобразится в таблице раздела Экспертиза.

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

    Вы можете создать таблицу обогащения без ее публикации (в виде черновика) с помощью кнопки Сохранить черновик. Система отобразит уведомление об успешном создании черновика таблицы. Черновик отобразится в таблице раздела Экспертиза.

Изменение таблицы обогащения

Чтобы изменить таблицу обогащения:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. Нажмите на строку таблицы обогащения в списке. Система отобразит в правой части экрана карточку этой таблицы с подробной информацией о ней.

  3. Выберите опцию Изменить в выпадающем меню Действия (more vertical) в верхней части карточки таблицы обогащения. Отобразится окно настроек таблицы.

    Вы также можете открыть окно настроек с помощью кнопки в нижней части карточки:

    • Для опубликованной версии: нажмите на кнопку Просмотр в нижней части карточки. Система отобразит окно просмотра настроек элемента экспертизы. Нажмите на кнопку Изменить в правом нижнем углу окна.

    • Для черновика: нажмите на кнопку Изменить в нижней части карточки.

  4. Внесите требуемые изменения в конфигурацию таблицы обогащения.

  5. Нажмите на кнопку Обновить версию. Новая версия таблицы обогащения с измененной конфигурацией будет опубликована.

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

    Вы можете сохранить измененную конфигурацию таблицы обогащения без публикации (в виде черновика) с помощью кнопки Сохранить черновик. Конфигурация будет сохранена для дальнейшего редактирования. В этом случае в верхней части карточки таблицы будет отображаться предупреждение о наличии неопубликованных изменений.

Удаление таблицы обогащения

Удаление доступно только для элементов экспертизы с типом создания Пользовательский.

Удаление недоступно для элементов экспертизы, используемых в других сущностях системы.

Чтобы удалить таблицу обогащения:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. Нажмите на строку таблицы обогащения в списке. Система отобразит в правой части экрана карточку этой таблицы с подробной информацией о ней.

  3. Выберите опцию Удалить в выпадающем меню Действия (more vertical) в верхней части карточки таблицы обогащения. Отобразится окно подтверждения удаления таблицы.

  4. Нажмите на кнопку Удалить. Система отобразит уведомление об удалении таблицы обогащения, и таблица будет удалена из списка элементов экспертизы.

Вы также можете удалить группу элементов экспертизы. Для этого:

  1. Перейдите в раздел Экспертиза. Система отобразит сведения об имеющихся элементах экспертизы, в том числе их текущий статус (включен/выключен).

  2. Установите флажки напротив тех элементов, которые вы хотите удалить, в левом столбце таблицы.

  3. Нажмите на кнопку trash на панели инструментов. Отобразится окно удаления.

  4. Нажмите на кнопку Удалить. Система отобразит уведомление об удалении выбранного элемента экспертизы, и элемент экспертизы будет удален из списка элементов экспертизы.

Структура таблицы обогащения

Поле Описание Тип данных Обязательное поле

id

Уникальный идентификатор таблицы обогащения.

строка

да

name

Название таблицы обогащения. Допустимы строчные и прописные буквы латинского алфавита (a–z, A-Z), цифры (0–9), точки (.), подчеркивания (_) и дефис (-) без пробелов.

строка

да

type

Тип элемента. Всегда имеет значение enrichment_table для элементов этого типа.

строка

да

version

Версия таблицы обогащения, представленная в формате Semantic Versioning.

строка

да

author

Имя и контактные данные автора таблицы обогащения.

строка

нет

description

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

строка

нет

tags

Список тегов, присвоенных таблице обогащения для классификации и быстрого поиска.

массив строк

нет

kind

Тип хранилища таблицы обогащения, указывающий на формат (table, maxmind).

строка

да

location

Способ коммуникации с хранилищем таблицы обогащения (file, embedded).

строка

да

schema

Схема, описывающая поля таблицы обогащения и их типы данных. Поддерживаются типы string, bool, float, integer, date, timestamp.

объект

да

content

Содержимое таблицы для режима embedded, включающее предопределенные данные. Обязательно только для таблиц с location: embedded.

массив объектов

условно (требуется только для embedded)

update_frequency_min

Частота обновления данных в минутах для режимов, отличных от embedded. Определяет, как часто данные должны обновляться из внешнего источника.

число

условно (для file)

uri

Расположение файла или источника данных.

строка

условно (для file)

Структура tests:

Поле Описание Тип данных Обязательное поле

name

Название теста, которое позволяет уникально идентифицировать его результаты в выводе тестирования.

строка

да

events

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

массив

да

assertion

Блок утверждений на языке VRL, применяемых к результатам обработки тестовых событий правилом. Функции assert и assert_eq используются для проверки соответствия фактических результатов обработки ожидаемым значениям.

строка

да

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

Составление таблицы обогащения

Управление таблицами обогащения в системе R-Vision SIEM осуществляется в разделе Экспертиза.

Для создания таблицы обогащения в системе R-Vision SIEM необходимо определить её ключевые элементы структуры. Эти элементы охватывают как метаданные таблицы, так и параметры, определяющие содержание и методы доступа к данным.

  1. Определите метаданные таблицы:

    • id: уникальный идентификатор таблицы обогащения.

    • name: название таблицы обогащения. Допустимы строчные и прописные буквы латинского алфавита (a–z, A-Z), цифры (0–9), точки (.), подчеркивания (_) и дефис (-) без пробелов.

    • version: версия таблицы, следующая стандартам Semantic Versioning.

    • type: тип элемента, указываемый как enrichment_table.

    • author (опционально): имя и контактные данные автора таблицы.

    • description (опционально): краткое описание назначения и функциональности таблицы.

    • tags (опционально): теги для классификации и поиска таблицы.

  2. Настройте параметры доступа и структуру данных:

    • kind: тип хранилища данных (например, table, maxmind).

    • location: метод доступа к данным (например, file, embedded).

    • schema: схема данных, определяющая структуру и типы полей таблицы.

    • content (для embedded): содержимое таблицы, предоставленное непосредственно в конфигурации для встроенного хранения.

  3. Установите параметры обновления данных (для режимов, отличных от embedded):

    • update_frequency_min: частота обновления данных в минутах.

    • uri (для file): расположение файла или источника данных.

Поля метаданных

Метаданные служат для идентификации и описания таблицы обогащения в системе. Заполнение метаданных должно производиться в соответствии со следующими указаниями:

  • id: присвойте уникальный идентификатор таблицы обогащения. Идентификатор должен быть уникальным в пределах системы.

  • name: укажите название таблицы обогащения. Допустимы строчные и прописные буквы латинского алфавита (a–z, A-Z), цифры (0–9), точки (.), подчеркивания (_) и дефис (-) без пробелов.

  • version: определите версию таблицы, следуя принципам Semantic Versioning (например, 1.0.0).

  • type: укажите тип элемента как enrichment_table.

  • author (опциональное): укажите имя и контактные данные автора таблицы.

  • description (опциональное): предоставьте краткое описание целей и функционала таблицы обогащения.

  • tags (опциональное): добавьте теги для удобства классификации и поиска таблицы в системе.

Поле kind

Поле kind в таблицах обогащения R-Vision SIEM определяет тип источника данных, используемого для обогащения информации. Это поле позволяет системе определить, каким образом должны быть загружены и обработаны данные, а также какие операции поддерживаются для данного типа таблицы. Важность этого поля заключается в его влиянии на методы доступа к данным и способы их использования в процессе обогащения.

Типы источников данных

  • table: указывает, что данные для обогащения хранятся в структурированной таблице, которая может быть загружена из файла, получена через API или встроена непосредственно в конфигурацию.

  • maxmind: определяет использование специализированных геолокационных баз данных MaxMind для обогащения данных, например, для определения местоположения по IP-адресу.

Выбор типа источника данных

Выбор между table и maxmind зависит от конкретных задач обогащения и доступности данных. Для геолокационного обогащения чаще всего используется тип maxmind, тогда как для других видов обогащения может быть выбран тип table.

  1. Пример использования поля kind:

kind: table

или

kind: maxmind
Выбор типа kind должен соответствовать целям обогащения и типу обрабатываемых данных. Важно учитывать, что выбор типа источника данных влияет на конфигурацию таблицы обогащения и её дальнейшее использование в системе.
При планировании использования таблиц обогащения рекомендуется заранее определить требуемый тип источника данных, чтобы обеспечить оптимальную конфигурацию и эффективность процесса обогащения.

Поле location

Поле location в таблицах обогащения R-Vision SIEM указывает на метод хранения и доступа к данным таблицы обогащения. Этот параметр критически важен для определения того, как система будет взаимодействовать с данными, включая их загрузку, обновление и использование в процессе обогащения.

Значения поля location и их описание

  • file: данные таблицы обогащения располагаются в файле. Система обращается к файлу для чтения данных. Путь к файлу указывается отдельно в конфигурации.

  • embedded: данные встроены непосредственно в конфигурацию таблицы обогащения. Этот метод подходит для статических данных, которые не требуют регулярных обновлений.

Выбор метода location

Пример:

location: file

или

location: embedded

Поле schema

Поле schema в таблицах обогащения определяет структуру данных, которая будет использоваться в таблице. Оно задает типы данных для каждого поля в таблице обогащения, обеспечивая корректную обработку и интерпретацию данных при их использовании.

Определите поля данных. Каждое поле в schema должно иметь указание своего типа данных, что позволяет системе правильно обрабатывать входящие значения.

Доступные типы данных:

  • string — для текстовой информации,

  • bool — для булевых значений (истина/ложь),

  • float — для чисел с плавающей точкой,

  • integer — для целочисленных значений,

  • date — для дат,

  • timestamp — для меток времени.

Пример:

schema:
  user_id: integer
  user_email: string
  login_time: timestamp
  is_active: bool

Используйте schema для точного определения ожидаемых данных. Это включает в себя не только типы полей, но и их назначение. Например, поле user_email должно содержать адрес электронной почты пользователя, а login_time — временную метку его последнего входа в систему.

Поле content

Поле content используется для хранения данных непосредственно в конфигурации таблицы, когда выбран режим location: embedded. Это поле позволяет интегрировать статические данные в таблицу обогащения без необходимости их загрузки из внешних источников. content обеспечивает немедленный доступ к данным для обогащения без задержек, связанных с их извлечением или обновлением.

Структура и заполнение поля content

content является массивом объектов, где каждый объект представляет собой запись данных в таблице. Структура каждого объекта должна соответствовать схеме, определенной в поле schema.

Пример:

content:
  - id: 1
    name: "Example Name 1"
    type: "Type1"
  - id: 2
    name: "Example Name 2"
    type: "Type2"
Использование content требует тщательного планирования структуры данных и их соответствия схеме таблицы. Данные должны быть актуальными и достоверными, поскольку они будут встроены в таблицу без возможности динамического обновления (за исключением ручного изменения конфигурации). content подходит для данных, которые не изменяются или обновляются редко, таких как списки контрольных значений, статические справочники и прочие.

Рекомендации по заполнению

  • Перед включением данных в content убедитесь, что они точно соответствуют определенной в schema структуре. Некорректно структурированные данные могут привести к ошибкам при их обработке.

  • Для удобства управления и возможного обновления рассмотрите возможность разделения больших объемов данных на несколько таблиц обогащения, особенно если данные относятся к различным категориям или имеют разное назначение.

Включение данных в content увеличивает независимость от внешних источников и сетевой инфраструктуры, однако требует аккуратности в подготовке и проверке этих данных для обеспечения корректности обогащения.

Поле update_frequency_min

Поле update_frequency_min определяет периодичность обновления данных в таблице обогащения в минутах. Этот параметр актуален для таблиц, метод доступа к данным которых определён как file в поле location. Значение поля позволяет настроить частоту, с которой система будет инициировать процесс обновления данных, чтобы поддерживать их актуальность.

Принципы использования

  • Значение update_frequency_min должно быть выбрано с учетом баланса между необходимостью актуальности данных и минимизацией нагрузки на системные ресурсы.

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

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

Пример:

update_frequency_min: 30

В данном примере данные в таблице обогащения будут обновляться каждые 30 минут.

Рекомендации по заполнению

  • Оцените частоту изменений в данных источника и потребности бизнес-процессов в актуальной информации при настройке update_frequency_min.

  • Учитывайте возможности инфраструктуры и избегайте чрезмерной нагрузки на систему, оптимизируя частоту обновлений.

Настройка update_frequency_min для каждой таблицы обогащения отдельно позволяет точнее контролировать актуальность данных в соответствии с их спецификой и обновлениями. Использование разных интервалов обновления дает возможность более гибкого реагирования на потребности в данных, оптимизируя ресурсы и улучшая эффективность обогащения.

Поле uri

Поле uri в таблицах обогащения указывает на расположение файла или источника данных, из которого таблица будет получать обновления. Это поле обязательно для метода доступа file, поскольку оно определяет, где именно хранятся данные и как они будут извлекаться.

Пример:

http://minio:9000/object-storage/test.csv

Функции обогащения

Функции обогащения используются для поиска и извлечения данных из таблиц обогащения. Эти функции позволяют обогатить события безопасности дополнительной информацией, не содержащейся непосредственно в событиях. Взаимодействие с таблицами обогащения может быть настроено в любом поле, использующем язык VRL.

Для взаимодействия с таблицами обогащения предусмотрены VRL функции поиска значений в таблице обогащения find_enrichment_table_records и извлечения значения из таблицы обогащения get_enrichment_table_record.

Example 1. Функция поиска значений в таблице обогащения
find_enrichment_table_records(таблица: <строка>, условие: <объект>, [select: <массив>, case_sensitive: <логическое значение>])
:: <массив>

Поиск записей в таблице обогащения, которые соответствуют заданным условиям. Возвращает массив объектов, соответствующих критериям поиска.

Example 2. Функция извлечения значения из таблицы обогащения
get_enrichment_table_record(table: <строка>, condition: <объект>, [select: <массив>, case_sensitive: <логическое значение>])
:: <объект>, <ошибка>

Извлекает единственную запись из таблицы обогащения, точно соответствующую указанным условиям. В случае, если запись не найдена или найдено более одной записи, возвращается ошибка.

Функция Описание Возвращаемый тип

find_enrichment_table_records

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

Массив объектов

get_enrichment_table_record

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

Объект или ошибка

Example 3. Пример использования функции find_enrichment_table_records:
find_enrichment_table_records("geoip", {"ip": .source_ip})

Данная функция ищет записи в таблице обогащения geoip, соответствующие IP-адресу источника. Возвращает массив объектов, каждый из которых содержит информацию о геолокации по IP-адресу.

Example 4. Пример использования функции get_enrichment_table_record:
get_enrichment_table_record("user_profiles", {"user_id": .user_id})

Функция ищет в таблице обогащения user_profiles запись, точно соответствующую идентификатору пользователя. Возвращает объект с профилем пользователя или ошибку, если запись не найдена или найдено несколько записей.

Example 5. Пример использования в поле on_correlate:
on_correlate: !vrl |
  let geo_info = find_enrichment_table_records("geoip", {"ip": .source_ip}, select: ["country_name", "city_name"])
  if !geo_info.is_empty() {
    .source_country = geo_info[0].country_name
    .source_city = geo_info[0].city_name
  }

  let threat_info = get_enrichment_table_record("threat_intelligence", {"ip": .source_ip}, select: ["category", "score"])
  if !is_null(threat_info) {
    .threat_category = threat_info.category
    .threat_score = threat_info.score
  }

В этом примере:

  • Выполняется поиск геолокационной информации по IP-адресу источника события в таблице geoip, и результаты добавляются к событию как .source_country и .source_city.

  • Затем производится запрос к таблице threat_intelligence для извлечения информации о категории угрозы и оценке уровня угрозы, ассоциированных с IP-адресом источника. Эти данные добавляются к событию как .threat_category и .threat_score.

Пример таблицы обогащения

Example 6. Пример таблицы обогащения "DDoSSuspiciousPatterns", схема RObject
# Уникальный идентификатор таблицы обогащения.
id: security/ddos_suspicious_patterns

# Название таблицы обогащения.
name: DDoSSuspiciousPatterns

# Тип элемента экспертизы.
type: enrichment_table

# Версия таблицы.
version: 1.0.0

# Описание назначения таблицы.
description: Содержит список подозрительных паттернов запросов и IP-адресов, ассоциированных с DDoS атаками.

# Имя и контактные данные автора таблицы.
author: John Doe <johndoe@rvision.ru>

# Теги, связанные с таблицей.
tags:
  - ddos
  - security

# Способ коммуникации с хранилищем таблицы.
location: embedded

# Тип хранилища таблицы.
kind: table

# Схема описывает поля таблицы обогащения.
schema:
  ip_address: string
  pattern: string
  risk_level: integer

# Содержимое таблицы для `embedded` режима.
content:
  - ip_address: "192.168.1.1"
    pattern: "/api/highload"
    risk_level: 5
  - ip_address: "192.168.100.100"
    pattern: "/api/highload"
    risk_level: 5
  - ip_address: "172.16.0.2"
    pattern: "/contact"
    risk_level: 2
  - ip_address: "192.168.100.132"
    pattern: "/api/highload"
    risk_level: 5

Интерпретация

Метаданные таблицы обогащения:

  • id: "security/ddos_suspicious_patterns" – уникальный идентификатор, позволяющий идентифицировать таблицу в системе.

  • name: "DDoSSuspiciousPatterns" – название таблицы, отражающее её предназначение для хранения данных о подозрительных паттернах запросов, связанных с DDoS атаками.

  • type: "enrichment_table" – указывает на тип объекта в системе, подтверждая его принадлежность к таблицам обогащения.

  • version: "1.0.0" – версия таблицы обогащения, следует принципам Semantic Versioning, обеспечивая управление изменениями и совместимостью.

  • description: описывает назначение таблицы, в данном случае содержание списка подозрительных паттернов запросов и IP-адресов, ассоциированных с DDoS атаками.

  • author: "John Doe <johndoe@rvision.ru>" – информация об авторе таблицы, включая контактные данные.

  • tags: ["ddos", "security"] – теги, упрощающие поиск и классификацию таблицы в системе.

Параметры доступа и хранения данных:

  • location: embedded – указывает на то, что данные таблицы встроены непосредственно в конфигурацию, что упрощает доступ к ним и ускоряет процесс обогащения.

  • kind: "table" – подтверждает, что данные организованы в виде структурированной таблицы, подходящей для поиска и обработки информации.

Структура данных (схема и содержимое):

  • schema описывает структуру данных в таблице, включая поля ip_address (строка), pattern (строка) и risk_level (целое число), что позволяет систематически хранить информацию о подозрительных IP-адресах, соответствующих паттернах запросов и уровне риска.

  • content содержит конкретные записи данных, например, IP-адреса с ассоциированными с ними паттернами запросов и уровнем риска, демонстрируя реальные примеры данных, используемых для обогащения событий.

Обогащение событий:

  • Когда событие содержит IP-адрес или паттерн запроса, система проверяет наличие соответствующих записей в таблице "DDoSSuspiciousPatterns".

Сопоставление событий с записями в таблице:

  • Для каждого события система ищет записи в таблице, где ip_address совпадает с IP-адресом источника события или pattern совпадает с паттерном запроса, указанным в событии.

  • Если сопоставление успешно, информация о risk_level из таблицы добавляется к событию, указывая на уровень риска, связанный с обнаруженным IP-адресом или паттерном запроса.