Anunciando Subestação

Dec 03 2022
Introdução Temos o prazer de anunciar publicamente o lançamento do Substation, um kit de ferramentas de código aberto para criar pipelines de dados altamente configuráveis, sem manutenção e econômicos. A Substation resolve um problema que toda equipe de segurança tem, mas poucos podem reconhecer - a necessidade de normalizar, correlacionar e enriquecer seus dados de eventos de segurança em escala.

Introdução

Temos o prazer de anunciar publicamente o lançamento do Substation , um kit de ferramentas de código aberto para criar pipelines de dados altamente configuráveis, sem manutenção e econômicos. A Substation resolve um problema que toda equipe de segurança tem, mas poucos podem reconhecer - a necessidade de normalizar, correlacionar e enriquecer seus dados de eventos de segurança em escala.

Por que construímos a subestação

A equipe de detecção e resposta da Brex precisava de uma solução escalável e de baixa manutenção que nos permitisse gerenciar os requisitos de processamento de dados de dezenas de fontes de eventos de segurança e conjuntos de dados exclusivos. Nosso objetivo era criar uma solução reutilizável para qualquer conjunto de dados, escalonável para qualquer volume de evento e fácil de implantar e manter.

O objetivo geral da Substation é capacitar as equipes de segurança e observabilidade para obter controle sobre seus logs de eventos com sobrecarga operacional mínima. A maioria das plataformas de segurança (ou seja, SIEM ) oferece poucas opções para equipes que desejam gerenciar a qualidade dos dados . Na melhor das hipóteses, eles podem dar aos usuários a capacidade de fazer transformações de dados simples depois que os eventos são ingeridos na plataforma. Se as equipes desejam dados de alta qualidade, normalmente precisam investir recursos operacionais e de engenharia na implantação e manutenção de sistemas distribuídos complexos.

Nossa equipe usa o Substation em produção há mais de 15 meses e achamos que agora é o momento certo para compartilhá-lo com a comunidade de segurança de código aberto. Como cada equipe tem uma definição diferente de “em escala”, abaixo estão alguns números de nossa implantação interna para ajudar a explicar como o usamos:

  • Processe mais de 5 terabytes (TB) de dados por dia, com um custo variável de US$ 30 a US$ 40 por TB
  • Sustentar mais de 100 mil eventos por segundo (EPS), com picos de mais de 200 mil EPS
  • Implante novos pipelines de dados com centenas de recursos exclusivos em minutos
  • Gerencie 30 pipelines de dados, cada um com designs e configurações exclusivos
  • Gaste menos de 1 hora por semana em operações e manutenção

A subestação se diferencia de outras soluções de pipeline de dados de várias maneiras:

  • Totalmente sem servidor — você nunca gerenciará um servidor ou pensará em dimensionar um cluster
  • Projetado para escala - o sistema escala de 10 a mais de 100.000 eventos por segundo, e faz isso automaticamente sem a necessidade de intervenção de um engenheiro
  • Infraestrutura e configurações como código — usamos Terraform , Jsonnet e AWS AppConfig , o que significa que você pode implantar pipelines de dados exclusivos e reutilizáveis ​​em minutos
  • Custo-benefício — fizemos um esforço extra para tornar as coisas acessíveis, incluindo a criação de uma versão compatível e mínima do Kinesis Producer and Client Libraries in Go
  • Extensível — expomos o núcleo da subestação como pacotes Go, para que você possa criar seus próprios sistemas de processamento de dados personalizados

Substation é duas soluções em uma: é um sistema de pipeline de dados de fluxo orientado a eventos e um pacote para construir sistemas de processamento de dados personalizados.

Como um sistema de pipeline de dados, o Substation possui os seguintes recursos:

  • Filtragem e processamento de eventos em tempo real
  • Correlação e enriquecimento de eventos entre conjuntos de dados
  • Roteamento de eventos simultâneos para sistemas downstream
  • Executa em contêineres, construído para extensibilidade
    - Suporte para novos filtros de eventos e processadores
    - Suporte para novas fontes de ingestão e destinos de carga
    - Suporta criação de aplicativos personalizados (por exemplo, multi-nuvem)
  • Avalie e filtre dados estruturados e não estruturados
  • Modifique dados de, para e no local como JSON
Padrão de design de processamento de dados em duas fases usado pela equipe de segurança da Brex

Esse padrão de design oferece suporte ao armazenamento de dados brutos e processados ​​e carrega dados processados ​​simultaneamente para vários destinos.

O projeto também oferece suporte a outros casos de uso. Cada pipeline de dados mostrado abaixo é um exemplo do que pode ser construído hoje:

Exemplos de casos de uso suportados pelo kit de ferramentas

Existem centenas de permutações de design exclusivas, todas totalmente controladas pelos usuários por meio de configurações Terraform e Jsonnet. Hoje, o projeto oferece essas opções de carregamento e carregamento de dados:

  • AWS API Gateway (ingerir)
  • AWS DynamoDB (carga)
  • AWS Kinesis Data Streams (ingerir e carregar)
  • AWS Kinesis Firehose (carga)
  • AWS S3 (ingerir e carregar)
  • AWS S3 via SNS (ingerir)
  • AWS SNS (ingerir)
  • AWS SQS (ingerir e carregar)
  • HTTP (carregar)
  • Imprimir na saída padrão (carregar)
  • Lógica de sumô (carga)

Uma das maiores vantagens do Substation é que o sistema de pipeline de dados minimiza os custos operacionais e de infraestrutura, dimensionando automaticamente os recursos para dentro e para fora sem a intervenção de um engenheiro. Vemos isso todos os dias na Brex e geralmente está relacionado a mudanças nas atividades dos funcionários, sistemas e usuários. Aqui está um exemplo:

Uma semana normal no Brex cria picos e vales de atividade com os quais nossos recursos escalam, mas às vezes coisas não planejadas acontecem e os picos ficam muito, muito altos. Um dia, em meados de junho, verifiquei nosso painel de métricas de processamento de eventos e vi o seguinte:

É difícil ver, mas nosso volume de eventos aumentou 10x em um período de algumas horas e aumentou 4x em menos de uma hora . A escala desse aumento causaria estragos nos sistemas tradicionais de pipeline de dados, provavelmente causando um incidente devido à memória, CPU e alarmes de perda de evento, todos acionados ao mesmo tempo, mas para nós não foi um evento e, em vez disso, ficamos imaginando que divertido havíamos perdido.

Trabalho futuro

A subestação está em desenvolvimento ativo e usa versão semântica para lançamentos. Embora não tenhamos um roteiro para compartilhar, estamos interessados ​​em explorar essas oportunidades com o projeto em 2023:

  • Funções de enriquecimento de dados para o sistema de pipeline de dados e pacote público
  • Suporte para vários provedores de serviços em nuvem, incluindo funcionalidade entre nuvens
  • Verificação de configuração e reversão automatizada no AppConfig
  • Recuperação automatizada para falhas durante a ingestão de dados assíncronos (por exemplo, S3)
  • Produtores escaláveis ​​e idempotentes para afundar dados

Projetos de código aberto deste tamanho não são criados isoladamente, então obrigado a todos na Brex* que contribuíram para o projeto e o tornaram possível, e obrigado a todos os futuros colaboradores que ainda não conhecemos!

* Agradecimentos especiais à equipe do projeto Brex e colaboradores:

  • Josh Liburdi (líder da equipe de projeto, arquiteto principal e engenheiro)
  • Julie Agnes Sparks (equipe de projeto, documentação, revisão de código)
  • Parsa Attari (documentação, revisão de código)
  • Jake Miller (contribuições de código)
  • Ben Morris (revisão de segurança)
  • Dan Gilmartin (revisão de arquitetura)
  • Mike Ruth (revisão de arquitetura)