Anunciando Subestación

Dec 03 2022
Introducción Estamos encantados de anunciar públicamente el lanzamiento de Substation, un conjunto de herramientas de código abierto para crear canalizaciones de datos altamente configurables, sin mantenimiento y rentables. Substation resuelve un problema que todo equipo de seguridad tiene, pero que pocos pueden reconocer: la necesidad de normalizar, correlacionar y enriquecer sus datos de eventos de seguridad a escala.

Introducción

Estamos encantados de anunciar públicamente el lanzamiento de Substation , un conjunto de herramientas de código abierto para crear canalizaciones de datos altamente configurables, sin mantenimiento y rentables. Substation resuelve un problema que todo equipo de seguridad tiene, pero que pocos pueden reconocer: la necesidad de normalizar, correlacionar y enriquecer sus datos de eventos de seguridad a escala.

Por qué construimos la subestación

El equipo de detección y respuesta de Brex necesitaba una solución escalable y de bajo mantenimiento que nos permitiera administrar los requisitos de procesamiento de datos de docenas de conjuntos de datos y orígenes de eventos de seguridad únicos. Nuestro objetivo era crear una solución que fuera reutilizable para cualquier conjunto de datos, escalable a cualquier volumen de eventos y fácil de implementar y mantener.

El objetivo general de Substation es empoderar a los equipos de seguridad y observabilidad para que obtengan el control de sus registros de eventos con una sobrecarga operativa mínima. La mayoría de las plataformas de seguridad (es decir, SIEM ) brindan pocas opciones para los equipos que desean administrar la calidad de los datos . En el mejor de los casos, pueden brindar a los usuarios la capacidad de realizar transformaciones de datos simples después de que los eventos se ingieran en la plataforma. Si los equipos quieren datos de alta calidad, normalmente necesitan invertir recursos operativos y de ingeniería para implementar y mantener sistemas distribuidos complejos.

Nuestro equipo ha utilizado Substation en producción durante más de 15 meses y creemos que ahora es el momento adecuado para compartirlo con la comunidad de seguridad de código abierto. Dado que cada equipo tiene una definición diferente de "a escala", a continuación se incluyen algunos números de nuestro despliegue interno para ayudar a explicar cómo lo usamos:

  • Procese más de 5 terabytes (TB) de datos cada día, con un costo variable de $30 a $40 por TB
  • Sostenga más de 100 000 eventos por segundo (EPS), con picos de más de 200 000 EPS
  • Implemente nuevas canalizaciones de datos con cientos de recursos únicos en minutos
  • Administre 30 canalizaciones de datos, cada una con diseños y configuraciones únicos
  • Dedique menos de 1 hora por semana a operaciones y mantenimiento

Substation se diferencia de otras soluciones de canalización de datos de varias maneras:

  • Totalmente sin servidor: nunca administrará un servidor ni pensará en dimensionar un clúster
  • Diseñado para escalar: el sistema escala de 10 a más de 100 000 de eventos por segundo, y lo hace automáticamente sin necesidad de intervención de un ingeniero
  • Infraestructura y configuraciones como código: usamos Terraform , Jsonnet y AWS AppConfig , lo que significa que puede implementar canalizaciones de datos únicas y reutilizables en minutos
  • Rentable: hicimos un esfuerzo adicional para hacer las cosas asequibles, incluida la creación de una versión mínima compatible de Kinesis Producer and Client Libraries en Go
  • Extensible: exponemos el núcleo de Substation como paquetes Go, para que pueda crear sus propios sistemas de procesamiento de datos personalizados.

Substation es dos soluciones en una: es un sistema de canalización de transmisión de datos basado en eventos y un paquete para crear sistemas de procesamiento de datos personalizados.

Como sistema de canalización de datos, Substation tiene estas características:

  • Filtrado y procesamiento de eventos en tiempo real
  • Correlación y enriquecimiento de eventos de conjuntos de datos cruzados
  • Enrutamiento de eventos simultáneos a sistemas descendentes
  • Se ejecuta en contenedores, creado para la extensibilidad
    - Compatibilidad con nuevos filtros y procesadores de eventos
    - Compatibilidad con nuevas fuentes de ingesta y destinos de carga
    - Admite la creación de aplicaciones personalizadas (p. ej., multinube)
  • Evaluar y filtrar datos estructurados y no estructurados
  • Modifique datos desde, hacia y en su lugar como JSON
Patrón de diseño de procesamiento de datos de dos fases utilizado por el equipo de seguridad de Brex

Este patrón de diseño admite el almacenamiento de datos sin procesar y procesados, y carga simultáneamente datos procesados ​​en múltiples destinos.

El proyecto también admite otros casos de uso. Cada tubería de datos que se muestra a continuación es un ejemplo de lo que se puede construir hoy:

Ejemplos de casos de uso compatibles con el kit de herramientas

Hay cientos de permutaciones de diseño únicas, todas las cuales están totalmente controladas por los usuarios a través de las configuraciones de Terraform y Jsonnet. Hoy, el proyecto ofrece estas opciones de ingesta y carga de datos:

  • AWS API Gateway (ingesta)
  • AWS DynamoDB (carga)
  • AWS Kinesis Data Streams (ingesta y carga)
  • AWS Kinesis Firehose (carga)
  • AWS S3 (ingesta y carga)
  • AWS S3 a través de SNS (ingesta)
  • AWS SNS (ingesta)
  • AWS SQS (ingesta y carga)
  • HTTP (carga)
  • Imprimir a salida estándar (cargar)
  • Sumo Lógica (carga)

Una de las mayores ventajas de Substation es que el sistema de canalización de datos minimiza los costos operativos y de infraestructura al aumentar y reducir automáticamente los recursos sin la intervención de un ingeniero. Vemos esto todos los días en Brex y generalmente está relacionado con cambios en la actividad de los empleados, el sistema y los usuarios. Aquí hay un ejemplo:

Una semana normal en Brex crea picos y valles de actividad con los que escalan nuestros recursos, pero a veces suceden cosas no planificadas y los picos se vuelven muy, muy altos. Un día, a mediados de junio, revisé nuestro panel de métricas de procesamiento de eventos y vi esto:

Es difícil de ver, pero nuestro volumen de eventos aumentó 10 veces en un período de pocas horas y aumentó 4 veces en menos de una hora . La escala de este aumento causaría estragos en los sistemas de canalización de datos tradicionales, probablemente causando un incidente debido a la memoria, la CPU y las alarmas de pérdida de eventos que se activan al mismo tiempo, pero para nosotros no fue un evento y, en cambio, nos quedamos preguntándonos qué tan divertido. nos habíamos perdido.

Trabajo futuro

Substation está en desarrollo activo y utiliza versiones semánticas para los lanzamientos. Aunque no tenemos una hoja de ruta para compartir, estamos interesados ​​en explorar estas oportunidades con el proyecto en 2023:

  • Funciones de enriquecimiento de datos tanto para el sistema de canalización de datos como para el paquete público
  • Compatibilidad con varios proveedores de servicios en la nube, incluida la funcionalidad entre nubes
  • Verificación de configuración y reversión automatizada en AppConfig
  • Recuperación automatizada de fallas durante la ingesta de datos asincrónicos (p. ej., S3)
  • Productores escalables e idempotentes para hundir datos

Los proyectos de código abierto de este tamaño no se crean de forma aislada, así que gracias a todos en Brex* que contribuyeron al proyecto y lo hicieron posible, ¡y gracias a todos los futuros colaboradores que aún no hemos conocido!

* Agradecimiento especial al equipo del proyecto Brex y colaboradores:

  • Josh Liburdi (líder del equipo del proyecto, arquitecto principal e ingeniero)
  • Julie Agnes Sparks (equipo de proyecto, documentación, revisión de código)
  • Parsa Attari (documentación, revisión de código)
  • Jake Miller (contribuciones de código)
  • Ben Morris (revisión de seguridad)
  • Dan Gilmartin (revisión de arquitectura)
  • Mike Ruth (revisión de arquitectura)