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.