Deadshot : conserver les données sensibles en dehors du code

May 18, 2021
Rédigé par

Deadshot : conserver les données sensibles en dehors du code

Le code n'est pas un endroit sûr pour les informations d'identification, les clés secrètes, les instructions SQL ou autres types de données sensibles. Mais tout le monde fait des erreurs, et il est important de détecter les erreurs humaines avant qu'elles n'entraînent de vrais problèmes.

Il est impossible de surveiller manuellement l'ensemble de la base de code d'une organisation dans l'espoir de détecter les changements sensibles avant qu'ils ne soient mis en service pour toujours sur Github. Il s'agit d'un problème auquel toutes les équipes de sécurité sont confrontées lorsqu'elles traitent le code produit.

L'équipe de sécurité des produits de Twilio avait besoin d'un moyen automatisé pour s'assurer que les développeurs n'ajoutaient pas accidentellement des données sensibles aux répertoires de code et de signaler les modifications sensibles pour tout examen de sécurité. Nous savions que nous ne pouvions pas surveiller tout le code manuellement. Notre solution : un outil automatisé permettant de surveiller les répertoires GitHub en temps réel, de détecter les données sensibles lors des pull requests, et de signaler les problèmes et les modifications apportées aux fonctionnalités sensibles pour une révision manuelle. C'est ainsi qu'est né Deadshot, que nous sommes heureux de publier aujourd'hui comme outil open source.

Deadshot : un service automatisé pour surveiller Github

Deadshot est une application Github que vous pouvez installer sur votre organisation Github. Deadshot s'exécute à chaque validation, en utilisant des expressions régulières pour analyser le fichier diff des pull requests afin d'effectuer la recherche qui vous intéresse. S'il trouve une correspondance, il ajoute un commentaire à la pull request et peut également notifier un canal Slack spécifié. De plus, il crée un ticket JIRA dans la file d'attente des données de votre équipe de sécurité si la pull request est fusionnée sans traiter les clés secrètes identifiées.

Conception de Deadshot

Nous voulions créer une solution de type « deploy-and-forget » (déploie et oublie) qui surveille en permanence les données sensibles correspondant à un ensemble prédéfini d'expressions régulières que nous avons considéré comme largement utilisé dans notre entreprise. Il devait s'agir d'un service auquel nous n'aurions pas besoin de toucher, sauf pour ajouter ou supprimer des expressions régulières correspondant à des données sensibles.

Deadshot est une application multi-conteneurs Flask-Celery-Redis basée sur Python, qui est installée en tant qu'application Github et qui s'exécute à chaque pull request créée sur la branche principale d'un répertoire où vous l'installez.

Le conteneur Flask expose les routes API pour recevoir les charges utiles de pull request. Lorsqu'une charge utile de pull request est reçue, le service transfère la charge utile à une file d'attente Redis. Le conteneur Celery récupère la charge utile de la file d'attente et analyse le diff de la pull request, en recherchant les données sensibles spécifiées. S'il trouve une correspondance, le conteneur Celery ajoute des commentaires à la pull request, notifie le canal Slack approprié ou crée un ticket JIRA.

Essayez Deadshot

Chez Twilio, Deadshot s'est révélé très utile pour capturer les données sensibles dans les pull requests avant qu'elles ne soient fusionnées dans un répertoire. Nous sommes ravis de publier cette application auprès de la communauté open source et nous avons hâte de découvrir comment votre entreprise exploitera Deadshot.

Pour en savoir plus sur le déploiement de Deadshot, rendez-vous sur : https://github.com/twilio-labs/deadshot

 

Laxman Eppalagudem est ingénieur senior chargé de la sécurité des produits chez Twilio. Il se concentre sur la sécurisation des produits de Twilio avant qu'ils ne soient commercialisés auprès des clients. Vous pouvez le contacter à l'adresse : seppalagudem [at] twilio.com