Objectifs du module :

  • Apprendre à sécuriser les systèmes NoSQL utilisés dans les environnements Big Data.
  • Comprendre les attaques spécifiques aux bases de données distribuées et comment les prévenir.
  • Maîtriser les techniques avancées pour protéger les données, y compris le chiffrement des colonnes.

1. Sécurisation des systèmes NoSQL (MongoDB, Cassandra, Hadoop)

a. Introduction aux bases de données NoSQL et à leurs particularités de sécurité

Bases de données NoSQL :
Contrairement aux bases de données SQL traditionnelles, les bases NoSQL (comme MongoDB, Cassandra, et Hadoop) sont non relationnelles, hautement évolutives et adaptées aux volumes massifs de données des environnements Big Data. Cependant, elles présentent des défis de sécurité spécifiques en raison de leur architecture distribuée et de leur faible structuration.

b. Sécurisation de MongoDB

Accès non sécurisé par défaut :
MongoDB, par exemple, a longtemps eu une configuration par défaut sans authentification, ce qui le rendait vulnérable à des attaques de type accès non autorisé. Une configuration sécurisée de MongoDB doit inclure :

  • Authentification obligatoire : Mettre en place une authentification robuste via des utilisateurs et rôles spécifiques.
  • Communication chiffrée : Activer SSL/TLS pour sécuriser la communication entre les instances MongoDB et les clients.
  • Contrôle des accès basé sur les rôles (RBAC) : Restreindre les privilèges des utilisateurs avec le principe du moindre privilège.

Vidéo de Varinder Patwal Entertainscape:

c. Sécurisation de Cassandra

Défis de sécurité spécifiques à Cassandra :

  • Gestion des accès distribués : Cassandra utilise une architecture peer-to-peer qui rend la gestion des accès plus complexe. Chaque nœud du cluster doit être correctement sécurisé.
  • Chiffrement des données en transit et au repos : Utiliser SSL/TLS pour le chiffrement des données en transit et activer le chiffrement des données au repos dans les nœuds du cluster.
  • Authentification et autorisation : Configurer une authentification solide, telle que Kerberos, et appliquer un contrôle des accès granulaire.

Vidéo de PlanetCassandra:

d. Sécurisation d’Hadoop

Sécurisation des environnements Hadoop :
Hadoop, souvent utilisé pour des traitements de données massifs, nécessite une attention particulière en matière de sécurité :

  • Kerberos pour l’authentification : Kerberos est souvent utilisé pour authentifier les utilisateurs et services dans les environnements Hadoop.
  • Chiffrement des données sensibles : Appliquer des stratégies de chiffrement pour protéger les données sensibles dans le Hadoop Distributed File System (HDFS).
  • Contrôle d'accès : Utiliser Apache Ranger ou Apache Sentry pour gérer les permissions et les accès dans les clusters Hadoop.

En savoir plus : Guide de la sécurité Hadoop et migration des données

2. Protection contre les attaques spécifiques aux bases de données (SQL Injection, accès non autorisé)

a. Les attaques par injection SQL et NoSQL

Injection SQL :
L’injection SQL est une attaque où un acteur malveillant injecte des commandes SQL non prévues dans une requête pour accéder ou manipuler la base de données. Bien que les bases NoSQL ne soient pas basées sur SQL, des variantes comme l'injection NoSQL existent et posent des risques similaires.

Injection NoSQL dans MongoDB :

  • Exemple : Une requête MongoDB mal sécurisée pourrait permettre à un attaquant d'insérer un objet JSON malveillant pour contourner l'authentification.
  • Protection : Valider et assainir soigneusement toutes les entrées des utilisateurs et préférer des requêtes paramétrées.

b. Accès non autorisé aux bases de données

Risques d’accès non autorisé :
Sans une gestion stricte des accès, les bases de données NoSQL peuvent être compromises, ce qui peut entraîner des fuites massives de données. MongoDB et Cassandra ont été ciblés par des campagnes de ransomwares qui exploitent les configurations non sécurisées.

Mesures préventives :

  • Authentification obligatoire : Utiliser des mécanismes d'authentification forte (Kerberos, LDAP, etc.).
  • Contrôle des accès basé sur les rôles : Appliquer des permissions minimales pour chaque utilisateur ou service.

c. Surveillance et détection d’attaques

Surveiller les accès :
Mettre en place une surveillance active des bases de données pour détecter des comportements suspects (p.ex., tentatives d’accès non autorisé ou requêtes anormales).

  • Utiliser des outils comme Elastic Stack, Splunk, ou des modules spécifiques pour MongoDB et Cassandra pour monitorer les logs de sécurité.
  • Détecter les patterns d'injection via l'analyse des requêtes.

3. Chiffrement des colonnes et autres techniques avancées de protection des données

a. Chiffrement des colonnes dans les bases de données NoSQL

Chiffrement des colonnes :
Pour protéger des informations sensibles comme des numéros de carte de crédit ou des identifiants personnels (PII), il est souvent recommandé d’implémenter un chiffrement au niveau des colonnes, où seules certaines colonnes contenant des données sensibles sont chiffrées.

  • MongoDB propose un chiffrement de champ à champ qui peut être utilisé pour chiffrer des colonnes spécifiques sans affecter la structure globale de la base.
  • Cassandra permet également de chiffrer certaines colonnes via des modules tiers ou des solutions de chiffrement personnalisées.

b. Autres techniques avancées de protection des données

Tokenization :
La tokenisation consiste à remplacer les données sensibles par des jetons (tokens) aléatoires qui peuvent être utilisés dans les pipelines et stockés sans risque. Les données originales sont conservées dans un coffre-fort sécurisé.

Data masking dynamique :
Le masquage dynamique permet d’obscurcir les données en fonction de l'utilisateur ou du rôle qui les consulte, tout en maintenant leur accessibilité pour les processus autorisés.

Chiffrement homomorphique :
Cette technique de chiffrement permet de réaliser des calculs sur des données chiffrées sans avoir besoin de les déchiffrer, assurant ainsi une protection maximale dans les bases distribuées et lors des traitements analytiques.

Conclusion du module :

La sécurisation des bases de données distribuées est essentielle pour protéger les données sensibles dans des environnements Big Data. Ce module a couvert la sécurisation des systèmes NoSQL comme MongoDB, Cassandra, et Hadoop, la protection contre des attaques spécifiques comme l’injection NoSQL et l’accès non autorisé, ainsi que des techniques avancées telles que le chiffrement des colonnes et la tokenisation. En appliquant ces pratiques, les Data Engineers peuvent renforcer la sécurité des données dans leurs pipelines.

Formateur

Bertrand LECLERCQ

Consultant DevSecOps & Data Engineer


Avec 25 ans d'expérience dans le développement logiciel et une certification en Data Engineering de l'École des Mines Paris - PSL, je suis passionné par la cybersécurité, le big data et le DevOps. J'aime partager mes connaissances et aider la communauté à renforcer sa posture de sécurité.

J'ai créé une base de vulnérabilités librement accessible et je me forme en continu sur des plateformes comme TryHackMe. Mon objectif ? Démocratiser la cybersécurité et permettre à chacun de mieux comprendre les enjeux.

J'ai une solide expertise dans la conception et le déploiement de solutions sécurisées, ainsi qu'une expérience éprouvée dans la gestion de projets complexes. Maîtrisant un large éventail de technologies (Python, Go, Java, Docker, Kubernetes, etc.), je suis convaincu que la sécurité doit être intégrée dès le début du cycle de développement.

Le projet NoHackMe vous permet d'effectuer une veille Cyber, vous permet de découvrir le monde de la Cybersécurité ainsi qu'une section formation Cyber

Soutenez No Hack Me sur Tipeee