Aujourd’hui, nous annonçons que RunReveal prend en charge pleinement la détection en tant que code et qu’elle est disponible en version bêta pour tous les clients de RunReveal immédiatement. L’implémentation de la détection en tant que code de RunReveal est conçue comme une fonctionnalité de premier plan de notre produit car la Détection en tant que Code est une étape importante vers la maturation de chaque pile d’ingénierie de sécurité.
Si une chose que l’équipe de RunReveal a apprise à propos du codage - parfois, les moindres détails d’implémentation peuvent rendre un produit ou un outil logiciel soit magique, soit bâclé. Les problèmes et les aspérités du code sont amplifiés, c’est pourquoi les outils et l’expérience des développeurs sont si importants et difficiles.
De nos jours, la configuration en tant que code, l’infrastructure en tant que code, la détection en tant que code, etc. sont des attentes dans le développement logiciel et jamais le principal argument de vente. Mais ces outils sont pleins de bords tranchants et d’une mauvaise convivialité. Dans ce blog, nous vous montrerons comment fonctionnent nos fonctionnalités de Détection en tant que Code et les points de douleur des développeurs que nous avons tenté d’éviter.
La plupart des gens de nos jours voudront remplir un dépôt git avec leurs détections et y travailler avec l’éditeur de leur choix, mais comment amorcer cela ?
Si vous avez utilisé un outil comme Terraform, vous réalisez rapidement que les ressources cloud ont des cycles de vie variés. Certaines ressources sont créées dans l’interface utilisateur et d’autres via des outils de configuration en tant que code. Résoudre les différences d’état ou concilier ces différences de cycle de vie peut rapidement poser problème et être frustrant.
Chez RunReveal, nous avons rendu incroyablement simple d’amorcer votre dépôt de détection à tout moment. L’expérience de détection en tant que code commence avec notre principal CLI. Le CLI prend en charge la recherche de vos journaux à partir de la ligne de commande et d’autres fonctionnalités, mais il pilote également les fonctionnalités de détection en tant que code.
Si vous avez déjà un compte RunReveal, des journaux et des détections, alors commencer est aussi simple que de vous connecter :
Ce simple commandement gérera les cas limites qui surviennent lors de l’écriture d’un tas de fichiers dans un répertoire, comme les collisions de noms, et plus encore. De plus, cette commande a été conçue de telle sorte que si vous gérez vos détections avec la détection en tant que code, et créez de nouvelles détections en utilisant l’interface utilisateur, vous pouvez facilement importer de nouvelles détections dans votre dépôt dans le format que vous utilisez.
Je viens de lancer cela dans notre instance de RunReveal, Inc. de RunReveal et le résultat est une structure de répertoire organisée par type de source de journal, mais elle peut être éventuellement aplatie avec le drapeau.
Notre objectif est que l’adoption de la détection en tant que code ne devrait pas prendre plus de 10 ou 15 minutes pour la comprendre, et le moins que nous puissions faire est de vous empêcher de vous soucier de l’importation de votre état initial, des collisions de noms étranges, de la gestion de fichiers d’état compliqués, et plus encore.
Une fois que vous voulez créer votre propre détection, écrire la détection n’est qu’une petite partie de l’expérience. Lorsque vous créez une nouvelle détection, vous ne voulez probablement pas passer 10 minutes à lutter avec un format yaml que vous ne pouvez pas vous rappeler. Pour cette raison, nous avons créé une sous-commande.
La sortie de ceci sera un fichier (ou un fichier JSON si c’est plus votre style), et votre fichier de code de détection. Vous n’avez pas besoin d’utiliser l’assistant, mais il peut être un outil utile pour ne pas oublier les champs yaml et commencer avec un format connu et bon.
Puisque nous faisons un exemple de détection, cherchons toutes les entrées dans nos journaux d’audit Cloudflare montrant les modifications DNS effectuées par l’API Cloudflare. C’est une détection que j’ai faite en utilisant le.
Vous pouvez voir qu’une fois que nous avons écrit la détection, nous voulons probablement avoir une idée de sa nuisance avant de la mettre en production et de découvrir de la manière difficile. La commande de test est une commande spéciale spécifiquement pour tester la requête de détection. Par défaut, la commande de test regardera en arrière 1 heure, mais je suis plus curieux dans ce cas sur une période plus longue. Voyons combien de modifications DNS via l’API nous avons effectuées au cours du dernier mois.
Une fois que vous êtes satisfait de vouloir mettre la détection en production, vous êtes prêt à pousser votre code !
Chez RunReveal, nous utilisons GitHub pour le contrôle de source. Nous avons créé un pour faciliter le push de vos détections vers RunReveal à partir de l’intégration continue. Sous le capot, notre action GitHub utilise simplement notre CLI pour exécuter la commande suivante, de sorte que notre produit est facile à intégrer avec n’importe quel système CI/CD.
Tout le monde déteste quand la construction passe mais le déploiement échoue. Pour cette raison, en interne, nous avons une action avec deux flux de travail distincts sur notre dépôt de détection. Un pour tester la construction et un pour déployer les modifications après une fusion.
Le premier flux de travail que vous remarquerez est effectué lorsque des demandes de tirage sont créées, et est défini sur true. De cette façon, lorsque une PR est ouverte, nous pouvons nous assurer qu’il n’y a pas de problèmes avec la configuration, et nous pouvons voir quelles détections seront modifiées, créées ou supprimées avant la fusion.
Le prochain flux de travail que nous avons spécifié est une fois que nos demandes de tirage sont fusionnées, l’état de notre dépôt est automatiquement poussé vers l’API RunReveal. Dans ce cas, n’est plus spécifié.
Le dry-run nous dira exactement quelles détections ont été créées, supprimées ou modifiées, et garantira que la structure des fichiers contient toutes les informations nécessaires pour exécuter avec succès les détections en production.
En utilisant notre CLI, il n’y a pas d’environnements CI/CD à partir desquels nous ne pouvons pas pousser, mais aujourd’hui, nous avons déjà mis en place les outils et les flux de travail nécessaires pour que nos clients utilisant GitHub réussissent, et minimisons le temps qu’ils doivent passer à faire de l’ingénierie yaml.
Nous voulions être conscients du fait que notre principal CLI est utilisable sur les ordinateurs portables de nos clients pour rechercher des journaux et des activités d’administrateur, et utilisé par CI/CD pour pousser l’état et les détections vers notre API. Deux cas d’utilisation très différents.
Les systèmes CI/CD sont tristement célèbres pour avoir des tonnes de jetons à portée d’administrateur et nous ne voulions pas que nos clients soient exposés à ce genre de risque lorsqu’ils utilisent RunReveal. La détection en tant que code prend en charge notre et nous fournissons un rôle appelé qui a le moins de privilèges nécessaire pour exporter, éditer et écrire des détections.
C’est facile à configurer lors de la création d’un nouveau jeton API dans l’interface utilisateur, il suffit de sélectionner en tant que rôle lors de la création du jeton.
Nous prévoyons de fournir à nos clients la fonctionnalité de créer leurs propres rôles personnalisés, et notre système RBAC prend en charge ce type de cas d’utilisation, mais nous n’avons pas encore exposé ce type de fonctionnalité (pour l’instant).
La détection en tant que code est un besoin de base pour les équipes de sécurité en 2024, pas un point de vente clé, mais l’expérience doit soutenir les flux de travail que les ingénieurs traversent. Nous prévoyons de continuer à peaufiner ce produit et de le passer en disponibilité générale plus tard cette année une fois que l’expérience sera à notre goût et que nous aurons éliminé les aspérités.
Nous avons prévu certaines de nos plus grandes annonces pour les prochaines semaines et nous travaillons à les lancer. Nous prévoyons de rendre open-source une nouvelle technologie et de lancer des produits innovants qui ont la possibilité de changer la façon dont nous abordons tous la détection et la gestion des journaux.
Si vous souhaitez un aperçu exclusif, laissez-nous votre e-mail ou avec nous et nous n’hésiterons pas à vous montrer tous les détails avant de les lancer.
RunReveal est là pour aider les équipes de sécurité à gérer leurs données de sécurité. Les équipes de sécurité sont submergées par le bruit, accablées par des dizaines de formats de données différents, et luttent pour se permettre leur pile de détection.
Avec RunReveal, l’approche est différente. Nous avons construit un outil simple pour collecter, détecter et utiliser vos données de sécurité sans tout le bruit ou les fioritures dont vous n’avez pas besoin.