Объявление о подстанции
Введение
Мы рады публично объявить о выпуске 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
Этот шаблон проектирования поддерживает хранение необработанных и обработанных данных и одновременную загрузку обработанных данных в несколько мест назначения.
Проект поддерживает и другие варианты использования. Каждый конвейер данных, показанный ниже, является примером того, что можно построить сегодня:
Существуют сотни уникальных вариантов дизайна, и все они полностью контролируются пользователями с помощью конфигураций 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 (документация, код-ревью)
- Джейк Миллер (вклад в код)
- Бен Моррис (обзор безопасности)
- Дэн Гилмартин (обзор архитектуры)
- Майк Рут (обзор архитектуры)