VT2018 DevSecOps




 * Sujet : DevSecOps
 * Auteur : Samuel Bamba
 * Mail : smail.bamba@gmail.com

=Résumé=

Le DevSecOps est un ensemble de procédés et outils pour permettre d'intégrer la sécurité au sein du cycle DevOps. Dans un contexte où la donnée est au fondement de nombreuses applications web, la protection des données est devenu essentielle pour garder la confiance des utilisateurs. Cependant on constate un nombre croissant de fuites de données chaque année car bien souvent la sécurité est négligée. Le DevSecOps vise à impliquer à la fois l'équipe de développeurs, ainsi que l'équipe des opérations dans un vision de bout-en-bout pour assurer la sécurité continue d'une application web.


 * Mots-clé : DevSecOps, Sécurité, Développement, Opérations

=Abstract=

DevSecOps is a set of processes and tools to integrate security into the DevOps cycle. In a context where data is at the foundation of many web applications, data protection has become essential to maintain user trust. However, there is an increasing number of data leaks every year because security is often neglected. DevSecOps aims to involve both the developer team and the operations team in an end-to-end vision to ensure the continuous security of a web application.


 * Keywords: DevSecOps, Security, Development, Operations

=Synthèse=

Fondamentaux sur le DevOps
Le DevSecOps repose sur la philosophie du DevOps. Le DevOps vise à rapprocher les équipes de développement et d'opérations lors du développement d'une application web. Une équipe de développeurs se compose de manière synthétique en deux sous-équipes, le Frontend et le Backend.

L'équipe Frontend est chargée d'implémenter l'interface utilisateur en effectuant les bonnes requêtes sur la ou les APIs développées par l'équipe Backend.

L'équipe Backend quant à elle se préoccupe du cœur de l'application en manipulant les données de la base de donnée et en retournant les calculs demandés via une API.

Une fois que les fonctions d'une application sont implémentées et testées c'est alors à l'équipe des opérations de prendre en charge le déploiement de l'application puis sa maintenance.

Le DevOps tire partie d'une méthodologie de test et déploiement en continu pour accélérer le déploiement des nouvelles fonctionnalité en automatisant au maximum. Ainsi on synchronise les environnement de production et de développement et on peut alors tirer parti des statistiques observées sur l'application pour influencer les décision de développement à l'avenir. On obtient ainsi la boucle du DevOps.

DevSecOps
Le DevSecOps apporte une notion supplémentaire de sécurité au sein du cycle DevOps. La sécurité d'une application est alors à la charge aussi bien des développeurs que l'équipe d'opération.



DevSec: le travail des Dev pour améliorer la sécurité
Tout d'abord, on ajoute une préoccupation au niveau de l'équipe Backend qui doit s'assurer de la sécurité de leurs APIs. C'est-à-dire en réalisant une limitation des accès et une authentification rigoureuse de toute entité interagissant avec la base de donnée. De plus toute donnée récupérée depuis une APIs externe se doit d'être vérifiée est sûre pour ne pas corrompre l'application.

Ensuite, l'équipe de développeurs doit également s'éduquer à des bonnes pratiques, on ajoute par conséquent des tests de sécurité à notre processus de test en continu. Ces tests vont reposer sur une analyse du code statique afin de trouver des potentielles vulnérabilités. On pourra également considérer procéder à des tests de Fuzzing pour faire resurgir des bugs enfouis. Les tests de Fuzzing repose sur la génération aléatoire d'entrées pour l'application dans le but d'essayer de tester un maximum de cas.

Dans une optique d'une meilleure identification de l'utilisateur l'application pourra utiliser des MFA (Multi-factor-Authentification) consistant à demander à l'utilisateur de confirmer son identité au biais de différents facteurs (appareils, comptes, ...).

La cible principale des hackeurs étant la base de donnée de l'application web, des précautions se doivent d'être prise. Le chiffrement est adapté à la protection d'une base de donnée, car même si celle-ci se fait pirater il sera alors impossible de lire les données.

Tout d'abord il est essentiel d'établir une politique de classification des données, celle-ci à pour objectif de classifier les données par type et degré de sensibilité. Ainsi on peut estimer l'effort qu'il faudra fournir pour chiffrer les différents éléments d'une base.

Un des chiffrement les plus populaires repose sur la TDE (Transparent Data Encryption). Elle permet de chiffrer efficacement tous les fichiers d'une base de donnée.

Une fois notre base de donnée chiffré, il nous faut protéger les clefs de déchiffrement; elles deviennent notre nouvelle faille. Utiliser un management reposant sur des clefs distribuées peut s'avérer une solution efficace pour éviter d'avoir un unique point de faiblesse. Ainsi, un système tel que une table de hash distribuée reposant sur une séparation des préoccupations entre plusieurs nœuds, devient tout à fait pertinente.

SecOps: les Ops rentrent en action
Passons maintenant au rôle de l'équipe d'opérations. Ils ont un rôle crucial dans la sécurité, puisque le point de faille le plus sévère d'une application web repose sur son hébergement.

Si on héberge une application en local il va falloir mettre en place une solide politique de Firewall Zoning. Le Firewall Zoning consiste à isoler l'utilisateur d'un coté du routeur dit "intérieur" tandis que l'autre coté du routeur connecté à l'internet est "l’extérieur". Si un utilisateur de l'application s'en va à "l'extérieur" de l'application on va alors l'identifier. De cette façon, on peut s'assurer de l'identité de utilisateur lorsqu'il cherchera à revenir de "l'extérieur" vers "l'intérieur"; tout cela afin d'éviter une usurpation d'identité.

Lié à cette notion d’hébergement et de ressources, nous pouvons utiliser une méthode de protection bien connue, à savoir les Backups. Une réplication active ou passive peut permettre de sauver une Application en cas de perte d'un serveur.

La notion de Backups se doit d'être associée au concept de Blast-radius ou rayon d'explosion. Ce concept implique une séparation des accès entre les différents containers d'une application, pour éviter qu'une seule faille puisse avoir raison de toutes les données ainsi que toutes les Backups.

L'équipe d'opération est également chargée de surveiller l'application afin de pouvoir informer l'équipe de développement avec diverses statistiques. Cette surveillance se doit d'intégrer la maintenance de sécurisation de l'application afin de permettre une réactivité importante quant à la découverte de nouvelles failles ou intrusions.

Il est possible de simuler des intrusions afin de tester la robustesse d'une application. Ces test appelés Pen tests doivent être effectués en continu pour permettre de corriger toute faille avant qu'un réel intrus ne la trouve.

Associés à ces test sur code dynamique il est aussi important d'avoir un bon traitement des logs retournés par une application. La quantité de logs pouvant être importante, il existe des méthodes logicielles aillant recours à l'apprentissage automatique pour synthétiser les logs afin d’identifier et classifier des tentatives d'intrusions ou nouvelles failles.

=Sources=

RSA Conference 2017 Medium The New York Times Prevent Breach
 * DevSecOps: What is it? Why is it taking over security? Shannon Lietz
 * DevSecOps: Rapid Security for Rapid Delivery J. Cragin & B. Schoenfield
 * Securely Moving Data to the Cloud with Confidence and Customer Focus M. Lacovone
 * Top Free Static Code Analysis Tools Maxpower
 * Lessons from 3 Big Data Breaches of 2017 Deena Zaidi
 * Facebook Security Breach Exposes Accounts of 50 Million Users M. Isaac & S. Frenkel
 * Overview of DevSecOps Nicolas Chaillan