Объявление о подстанции

Dec 03 2022
Введение Мы рады публично объявить о выпуске Substation, набора инструментов с открытым исходным кодом для создания легко настраиваемых, не требующих обслуживания и экономичных конвейеров данных. Substation решает проблему, которая есть у каждой команды безопасности, но осознают которую немногие, — необходимость нормализовать, коррелировать и обогащать свои данные о событиях безопасности в масштабе.

Введение

Мы рады публично объявить о выпуске Substation , набора инструментов с открытым исходным кодом для создания легко настраиваемых, не требующих обслуживания и экономичных конвейеров данных. Substation решает проблему, которая есть у каждой команды безопасности, но осознают которую немногие, — необходимость нормализовать, коррелировать и обогащать свои данные о событиях безопасности в масштабе.

Почему мы построили подстанцию

Команде Brex по обнаружению и реагированию требовалось масштабируемое решение с низкими эксплуатационными расходами, которое позволило бы нам управлять требованиями к обработке данных десятков уникальных источников событий безопасности и наборов данных. Нашей целью было создать решение, которое можно повторно использовать для любого набора данных, масштабировать до любого объема событий и которое легко развертывать и обслуживать.

Главной целью Substation является предоставление командам по безопасности и наблюдению возможности контролировать свои журналы событий с минимальными эксплуатационными затратами. Большинство платформ безопасности (например, SIEM ) предоставляют мало возможностей для групп, которым нужно управлять качеством данных . В лучшем случае они могут дать пользователям возможность выполнять простые преобразования данных после того, как события будут загружены в платформу. Если группам нужны высококачественные данные, им обычно необходимо инвестировать инженерные и операционные ресурсы в развертывание и обслуживание сложных распределенных систем.

Наша команда использует Substation в производственной среде более 15 месяцев, и мы считаем, что сейчас самое подходящее время поделиться ею с сообществом безопасности с открытым исходным кодом. Поскольку у каждой команды есть свое определение «в масштабе», ниже приведены некоторые цифры из нашего внутреннего развертывания, которые помогут объяснить, как мы его используем:

  • Ежедневно обрабатывать более 5 терабайт (ТБ) данных с переменной стоимостью 30–40 долларов США за ТБ.
  • Поддерживать более 100 000 событий в секунду (EPS) с пиковыми значениями более 200 000 EPS
  • Развертывание новых конвейеров данных с сотнями уникальных ресурсов за считанные минуты
  • Управление 30 конвейерами данных, каждый из которых имеет уникальный дизайн и конфигурацию.
  • Тратьте менее 1 часа в неделю на эксплуатацию и техническое обслуживание

Substation отличается от других решений для передачи данных несколькими способами:

  • Полностью бессерверный — вам никогда не придется управлять сервером или думать о размерах кластера.
  • Создан для масштабирования — система масштабируется от 10 до более чем 100 000 событий в секунду и делает это автоматически, без вмешательства инженера.
  • Инфраструктура и конфиги как код — мы используем Terraform , Jsonnet и AWS AppConfig , что означает, что вы можете развернуть уникальные повторно используемые конвейеры данных за считанные минуты .
  • Экономичность — мы сделали все возможное, чтобы сделать вещи доступными, включая создание совместимой минимальной версии Kinesis Producer и клиентских библиотек в Go .
  • Расширяемость — мы предоставляем ядро ​​Substation в виде пакетов Go, поэтому вы можете создавать свои собственные системы обработки данных.

Substation — это два решения в одном: управляемая событиями конвейерная система потоковой передачи данных и пакет для создания пользовательских систем обработки данных.

Как система передачи данных, Substation имеет следующие особенности:

  • Фильтрация и обработка событий в реальном времени
  • Корреляция и обогащение событий между наборами данных
  • Параллельная маршрутизация событий к нижестоящим системам
  • Работает в контейнерах, созданных для расширяемости
    — Поддержка новых фильтров и обработчиков событий
    — Поддержка новых источников загрузки и назначений загрузки
    — Поддержка создания пользовательских приложений (например, мультиоблачных)
  • Оценка и фильтрация структурированных и неструктурированных данных
  • Измените данные из, в и на месте как JSON
Двухэтапный шаблон проектирования обработки данных, используемый командой безопасности в Brex

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

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

Примеры использования, поддерживаемые набором инструментов

Существуют сотни уникальных вариантов дизайна, и все они полностью контролируются пользователями с помощью конфигураций Terraform и Jsonnet. Сегодня проект предлагает следующие варианты приема и загрузки данных:

  • Шлюз API AWS (прием)
  • AWS DynamoDB (загрузка)
  • AWS Kinesis Data Streams (прием и загрузка)
  • AWS Kinesis Firehose (загрузка)
  • AWS S3 (прием и загрузка)
  • AWS S3 через SNS (загрузка)
  • AWS SNS (прием)
  • AWS SQS (прием и загрузка)
  • HTTP (загрузка)
  • Печать на стандартный вывод (загрузка)
  • Логика сумо (загрузка)

Одним из самых больших преимуществ Substation является то, что система конвейера данных минимизирует инфраструктуру и эксплуатационные расходы за счет автоматического масштабирования ресурсов без вмешательства инженера. Мы видим это каждый день в Brex, и обычно это связано с изменениями в деятельности сотрудников, системы и пользователей. Вот пример:

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

Это трудно увидеть, но объем наших событий увеличился в 10 раз за период в несколько часов и увеличился в 4 раза менее чем за час . Масштабы этого увеличения нанесли бы ущерб традиционным системам конвейеров данных, что, вероятно, вызвало бы инцидент из-за одновременного срабатывания предупреждений о потере памяти, ЦП и событиях, но для нас это не было событием, и вместо этого мы задавались вопросом, что весело мы упустили.

Будущая работа

Substation находится в активной разработке и использует семантическое управление версиями для выпусков. Хотя у нас нет дорожной карты, которой мы могли бы поделиться, мы заинтересованы в изучении этих возможностей в рамках проекта в 2023 году:

  • Функции обогащения данных как для системы конвейера данных, так и для общедоступного пакета
  • Поддержка нескольких поставщиков облачных услуг, включая кросс-облачные функции.
  • Проверка конфигурации и автоматический откат в AppConfig
  • Автоматическое восстановление после сбоев во время асинхронного приема данных (например, S3)
  • Масштабируемые идемпотентные производители для приема данных

Такие большие проекты с открытым исходным кодом не создаются изолированно, поэтому спасибо всем в Brex*, кто внес свой вклад в проект и сделал его возможным, и спасибо всем будущим сотрудникам, которых мы еще не встретили!

* Особая благодарность команде проекта Brex и участникам:

  • Джош Либурди (руководитель группы проекта, основной архитектор и инженер)
  • Джули Агнес Спаркс (проектная группа, документация, проверка кода)
  • Parsa Attari (документация, код-ревью)
  • Джейк Миллер (вклад в код)
  • Бен Моррис (обзор безопасности)
  • Дэн Гилмартин (обзор архитектуры)
  • Майк Рут (обзор архитектуры)