Annonce de la sous-station

Dec 03 2022
Introduction Nous sommes ravis d'annoncer publiquement la sortie de Substation, une boîte à outils open source permettant de créer des pipelines de données hautement configurables, sans maintenance et rentables. Substation résout un problème rencontré par toutes les équipes de sécurité, mais peu le reconnaissent : la nécessité de normaliser, de corréler et d'enrichir leurs données d'événements de sécurité à grande échelle.

Introduction

Nous sommes ravis d'annoncer publiquement la sortie de Substation , une boîte à outils open source permettant de créer des pipelines de données hautement configurables, sans maintenance et rentables. Substation résout un problème rencontré par toutes les équipes de sécurité, mais peu le reconnaissent : la nécessité de normaliser, de corréler et d'enrichir leurs données d'événements de sécurité à grande échelle.

Pourquoi nous avons construit une sous-station

L'équipe de détection et de réponse de Brex avait besoin d'une solution évolutive nécessitant peu de maintenance qui nous permettrait de gérer les exigences de traitement des données de dizaines de sources et d'ensembles de données uniques d'événements de sécurité. Notre objectif était de créer une solution réutilisable pour n'importe quel ensemble de données, s'adaptant à n'importe quel volume d'événements et facile à déployer et à entretenir.

L'objectif principal de Substation est de permettre aux équipes de sécurité et d'observabilité de prendre le contrôle de leurs journaux d'événements avec une surcharge opérationnelle minimale. La plupart des plates-formes de sécurité (par exemple, SIEM ) offrent peu d'options aux équipes qui souhaitent gérer la qualité des données . Au mieux, ils peuvent donner aux utilisateurs la possibilité d'effectuer de simples transformations de données une fois les événements ingérés dans la plate-forme. Si les équipes veulent des données de haute qualité, elles doivent généralement investir des ressources d'ingénierie et opérationnelles dans le déploiement et la maintenance de systèmes distribués complexes.

Notre équipe utilise Substation en production depuis plus de 15 mois, et nous pensons que le moment est venu de le partager avec la communauté de la sécurité open source. Étant donné que chaque équipe a une définition différente de "à grande échelle", vous trouverez ci-dessous quelques chiffres de notre déploiement interne pour vous aider à expliquer comment nous l'utilisons :

  • Traitez plus de 5 téraoctets (To) de données chaque jour, avec un coût variable de 30 à 40 USD par To
  • Supporte plus de 100 000 événements par seconde (EPS), avec des pics de plus de 200 000 EPS
  • Déployez de nouveaux pipelines de données avec des centaines de ressources uniques en quelques minutes
  • Gérez 30 pipelines de données, chacun avec des conceptions et des configurations uniques
  • Consacrer moins d'une heure par semaine aux opérations et à la maintenance

Substation se différencie des autres solutions de pipeline de données de plusieurs manières :

  • Entièrement sans serveur - vous ne gérerez jamais un serveur ni ne penserez à dimensionner un cluster
  • Conçu pour l'évolutivité — le système évolue de 10 s à plus de 100 000 s d'événements par seconde, et le fait automatiquement sans intervention d'un ingénieur
  • Infrastructure et configurations en tant que code — nous utilisons Terraform , Jsonnet et AWS AppConfig , ce qui signifie que vous pouvez déployer des pipelines de données uniques et réutilisables en quelques minutes
  • Rentable - nous avons fait un effort supplémentaire pour rendre les choses abordables, notamment en créant une version minimale et conforme des bibliothèques Producteur et Client Kinesis dans Go
  • Extensible - nous exposons le noyau de la sous-station sous forme de packages Go, afin que vous puissiez créer vos propres systèmes de traitement de données personnalisés

Substation est deux solutions en une : il s'agit d'un système de pipeline de données en continu piloté par les événements et d'un package permettant de créer des systèmes de traitement de données personnalisés.

En tant que système de pipeline de données, Substation présente les caractéristiques suivantes :

  • Filtrage et traitement des événements en temps réel
  • Corrélation et enrichissement des événements entre les ensembles de données
  • Routage d'événements simultanés vers les systèmes en aval
  • S'exécute sur des conteneurs, conçus pour l'extensibilité
    - Prise en charge de nouveaux filtres et processeurs d'événements
    - Prise en charge de nouvelles sources d'ingestion et destinations de chargement
    - Prise en charge de la création d'applications personnalisées (par exemple, multi-cloud)
  • Évaluer et filtrer les données structurées et non structurées
  • Modifier les données de, vers et en place en tant que JSON
Modèle de conception de traitement de données en deux phases utilisé par l'équipe de sécurité de Brex

Ce modèle de conception prend en charge le stockage des données brutes et traitées et charge simultanément les données traitées vers plusieurs destinations.

Le projet prend également en charge d'autres cas d'utilisation. Chaque pipeline de données présenté ci-dessous est un exemple de ce qui peut être construit aujourd'hui :

Exemples de cas d'utilisation pris en charge par la boîte à outils

Il existe des centaines de permutations de conception uniques, qui sont toutes entièrement contrôlées par les utilisateurs via les configurations Terraform et Jsonnet. Aujourd'hui, le projet propose ces options d'ingestion et de chargement de données :

  • Passerelle d'API AWS (ingestion)
  • AWS DynamoDB (chargement)
  • Flux de données AWS Kinesis (ingestion et chargement)
  • AWS Kinesis Firehose (chargement)
  • AWS S3 (ingestion et chargement)
  • AWS S3 via SNS (ingestion)
  • AWS SNS (ingérer)
  • AWS SQS (ingestion et chargement)
  • HTTP (chargement)
  • Imprimer sur la sortie standard (charger)
  • Sumo Logic (chargement)

L'un des principaux avantages de Substation est que le système de pipeline de données minimise les coûts d'infrastructure et d'exploitation en augmentant et en réduisant automatiquement les ressources sans l'intervention d'un ingénieur. Nous le constatons tous les jours chez Brex et cela est généralement corrélé aux changements d'activité des employés, du système et des utilisateurs. Voici un exemple :

Une semaine normale au Brex crée des pics et des creux d'activité avec lesquels nos ressources évoluent, mais parfois des choses imprévues se produisent et les pics deviennent vraiment, vraiment hauts. Un jour à la mi-juin, j'ai vérifié notre tableau de bord des métriques de traitement des événements et j'ai vu ceci :

C'est difficile à voir, mais notre volume d'événements a été multiplié par 10 en quelques heures et multiplié par 4 en moins d'une heure . L'ampleur de cette augmentation ferait des ravages sur les systèmes de pipeline de données traditionnels, provoquant probablement un incident dû à des alarmes de perte de mémoire, de processeur et d'événement se déclenchant toutes en même temps, mais pour nous, ce n'était pas un événement et nous nous sommes plutôt demandé quel plaisir nous étions passés à côté.

Travail futur

Substation est en cours de développement et utilise le versioning sémantique pour les versions. Bien que nous n'ayons pas de feuille de route à partager, nous souhaitons explorer ces opportunités avec le projet en 2023 :

  • Fonctions d'enrichissement des données pour le système de pipeline de données et le package public
  • Prise en charge de plusieurs fournisseurs de services cloud, y compris la fonctionnalité cross-cloud
  • Vérification de la configuration et restauration automatisée dans AppConfig
  • Récupération automatisée des échecs lors de l'ingestion de données asynchrones (par exemple, S3)
  • Producteurs évolutifs et idempotents pour les données de descente

Des projets open source de cette envergure ne sont pas créés isolément, alors merci à tous ceux de Brex* qui ont contribué au projet et l'ont rendu possible, et merci à tous les futurs collaborateurs que nous n'avons pas encore rencontrés !

* Remerciements particuliers à l'équipe du projet Brex et aux contributeurs :

  • Josh Liburdi (chef d'équipe de projet, architecte principal et ingénieur)
  • Julie Agnes Sparks (équipe projet, documentation, revue de code)
  • Parsa Attari (documentation, revue de code)
  • Jake Miller (cotisations)
  • Ben Morris (examen de sécurité)
  • Dan Gilmartin (revue d'architecture)
  • Mike Ruth (examen de l'architecture)