Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Sécurisation des données d'une base de données

Sécurisation des données d'une base de données

Présentation le 14 juin 2023 sur la Sécurisation des données d'une base de données par Sébastien Giraud / MariaDB

Avatar for lizard

lizard

June 14, 2023
Tweet

More Decks by lizard

Other Decks in Programming

Transcript

  1. Bonjour Sébastien GIRAUD Senior Solution Architect MariaDB Plc • Plus

    de 4 ans chez MariaDB • Précédemment client de MariaDB • Devops / Open Source • Architecture Mon job ? • Aider ! • Faire marcher des trucs ;)
  2. Agenda • Qu’est ce que MariaDB • Axes de sécurisation

    • Privilèges • Auditing • Filtrage
  3. Qu’est ce que MariaDB • Une base de donnée •

    Open source • Hautement configurable (800 variables)
  4. Comprendre MariaDB • MariaDB est une solution modulaire ◦ Moteurs

    de stockage ◦ Plugins • Architecture Linux like ◦ Hautement ajustable ◦ 800 variables de configuration • Solution green (codé en C) ◦ Package de 100 Mo • Réplication entre différents moteurs • Ecosystem de plus en plus complet ◦ MaxScale ◦ MariaBackup ◦ MariaDB Shell ◦ Connecteurs ◦ Cloud DBaaS SkySQL
  5. Comprendre MariaDB • Pourquoi MariaDB est magique ? ◦ Réplication

    inter moteur de stockage ◦ Proxy fédérateur C’est quoi ce proxy ? En quoi c’est vraiment magique ?
  6. Sécuriser la donnée Démarche globale, actions locales Sécuriser la donnée,

    c’est sécuriser l'intégralité de l’infrastructure Actions de sécurisation à mener au niveau • de la donnée • du serveur • du cluster • de l’architecture et du déploiement
  7. Sécuriser la donnée Démarche globale, actions locales Axes techniques de

    sécurisation • Authentification forte • Chiffrement sur disque • Chiffrement des données • Chiffrement des communications au sein du cluster • Chiffrement des flux sur le réseau • Chiffrement des sauvegardes • Sauvegarde des bases chiffrées • Restriction des accès aux serveurs • Audit des accès et requêtes
  8. AUTHENTICATION METHODS ed25519 GSSAPI Named Pipe PAM Unix Socket Default

    (SHA-1) ED25519 (OpenSSH like) Utilisation INSTALL SONAME 'auth_ed25519'; OU [mariadb] ... plugin_load_add = auth_ed25519 https://mariadb.com/kb/en/authentication-plugin-ed25519/
  9. AUTHENTICATION METHODS ed25519 GSSAPI Named Pipe PAM Unix Socket Default

    (SHA-1) ED25519 (OpenSSH like) Utilisation CREATE USER username@hostname IDENTIFIED VIA ed25519 USING PASSWORD('secret'); OU ALTER USER username@hostname IDENTIFIED VIA ed25519 USING PASSWORD('new_secret'); https://mariadb.com/kb/en/authentication-plugin-ed25519/
  10. Mais aussi • Authentification basée sur le host • Complexité

    des mots de passe • Utilisation des dictionnaire des mots de passe
  11. Chiffrement des flux sur le réseau • Connection Client-Serveur chiffrée

    • Authentification basé sur la vérification du certificat • Limiter les autorités de certification • Imposer les protocole de chiffrement à la connexion CREATE USER 'alice'@'%' REQUIRE SUBJECT '/CN=alice/O=My Dom, Inc./C=US/ST=Oregon/L=Portland' AND ISSUER '/C=FI/ST=Somewhere/L=City/ O=Some Company/CN=Peter Parker/[email protected]' AND CIPHER 'SHA-DES-CBC3-EDH-RSA';
  12. Chiffrement sur disque • Niveau de chiffrement ajustable ◦ everything

    — all tablespaces (with all tables) ◦ individual tables ◦ everything, excluding individual tables • Plusieurs plugin disponibles ◦ File Key Management Plugin ◦ AWS Key Management Plugin ◦ Eperi Key Management Plugin ◦ Hashicorp Key Management Plugin
  13. Chiffrement sur disque • Chiffrement opéré lors du flush des

    pages sur disque • Ne pas oublier ◦ Chiffrement du redo log ◦ Chiffrement des fichiers temporaires ◦ Chiffrement des binlogs ◦ Chiffrement du Gcache • En combinaison avec la compression ◦ First compress, then cipher • Mais aussi ◦ AES_DECRYPT() ◦ AES_ENCRYPT()
  14. Chiffrement des sauvegardes • Les sauvegardes sont indispensables • Sécurité

    des sauvegardes ◦ hors site ◦ sur site ◦ sur bande • Chiffrement impératif • Campagnes de test des sauvegardes ◦ Validation des procédures ◦ Validation de la présence des clés sur le site de secour ◦ Vérification de la volumétrie nécessaire
  15. Restrictions des accès • Limiter les droits au minimum requis

    • Utilisation des rôles pour simplifier l’administration • Multiplier les comptes utilisateurs et applicatifs • Définir des comptes pour les services internes de l’infrastructure (compte dédiés pour la réplication, la supervision, par serveur applicatif) • Multiplier les comptes pour limiter l’impact d’une intrusion et garder le contrôle en mode dégradé
  16. Restrictions des accès • Gestion des droits simplifiée ◦ GRANT

    ◦ REVOKE ◦ DROP USER • Restriction d’accès aux ressources REVOKE SELECT ON dbname.tablename FROM 'user'@'host'; REVOKE ALL PRIVILEGES ON dbname.tablename FROM 'user'@'host'; GRANT SELECT ON dbname.tablename TO 'user'@'host' WITH MAX_QUERIES_PER_HOUR 20 MAX_CONNECTIONS_PER_HOUR 10 MAX_USER_CONNECTIONS 2 MAX_UPDATES_PER_HOUR 5; FLUSH USER_RESOURCES;
  17. Restrictions des accès • Gestion des droits simplifiée ◦ Roles

    • Choix du rôle actif sur la session • Visualisation du rôle actif sur la session CREATE ROLE role; GRANT privileges ON db-objects TO role; SET ROLE role; SET ROLE NONE; SELECT CURRENT_ROLE();
  18. Les comptes utilisateurs avec MARIADB L'authentification est basée sur l'utilisateur,

    l'hôte et le mot de passe. Les privilèges sont basés sur la combinaison de l'utilisateur et de l'hôte, ainsi que sur le rôle actuel de l'utilisateur. Les privilèges peuvent être accordés globalement, au niveau de la base de données, au niveau de la table ou au niveau de la colonne.
  19. APERÇU DES PRIVILÈGES DISPONIBLES Privilèges de base Personnalisation des Privilèges

    Privilèges des administrateurs (SHOW PRIVILEGES) … And more to come • Create Routine • Alter Routine • Execute • Event • Trigger • All [Privileges] • Super • Create User • Grant Option Privilèges des développeurs Privilèges Spéciaux Privilèges de la réplication • Create • Alter • Index • Drop • Create Temporary Tables • Create View • Show View • Lock Tables • Replication Client • Replication Slave • Process • File • Reload • Shutdown • Usage • Select • Insert • Update • Delete • Show Databases
  20. Audit Etude des logs • Activer les audits logs •

    Penser à superviser les autres logs • Vérifier l’homogénéité des configurations • Suivre les PKI • Suivre de près le monitoring ERROR LOG GENERAL QUERY LOG SQL ERROR LOG SLOW QUERY LOG BINARY LOG AUDIT LOG
  21. Audit Périmètre des logs de la fonction d’audit • Journalisation

    des événements en lectures et en écriture dans une table • Les tables impliqués dans une vue ou une procédure stockées sont journalisés • Journalisation de modification de privilèges et mots de passe • Remplacement facultatif des caractères génériques dans le journal des requêtes afin d'améliorer la sécurité • Filtrage par compte utilisateur possible
  22. Filtrage des requêtes grâce a MaxScale • Applique des filtres

    sur les flux • Masque des données • Réécriture de requête à la volée • Base de règles de filtrage ◦ Type de requête ◦ Fonction utilisée ◦ Colonne sélectionnée ◦ Fréquence des requêtes • Permet le BAN d’utilisateur et d’IP • Permet de multiplier les ports en fonction des besoins (filtrage N3 possible)
  23. Et pourquoi pas diviser les schémas ? • Le Sharding

    avec MaxScale [accounts_east] type=server address=192.168.56.102 port=3306 [accounts_west] type=server address=192.168.122.85 port=3306 [Sharded-Service] type=service router=schemarouter servers=accounts_west,accounts_east user=sharduser password=YqztlYGDvZ8tVMe3GUm9XCwQi
  24. MaxScale distribue le traffic 33 Primary Replicas 172.20.0.2 172.20.0.3 172.20.0.4

    172.20.0.6:4006 Failover automatique et Read Write Split Service Applications & Tools Application connects to MaxScale
  25. MaxScale rattrappe le coup ;) 34 Primary Replicas 172.20.0.2 172.20.0.3

    172.20.0.4 172.20.0.6:4006 Read Write Split Service Applications & Tools Primary failure Replica promoted to primary
  26. MaxScale, euh non on a rien vu ! 35 Primary

    Replicas 172.20.0.2 172.20.0.3 172.20.0.4 172.20.0.6:4006 Read Write Split Service Replica Applications & Tools Server re-incorporate as replica
  27. Apercu de MaxScale Advanced • Performance and scalability ◦ Read/write

    split ◦ Load balancing adaptatif ◦ Causal reads ◦ Caching des résultats de requête avec Redis • HA ◦ Failover Automatique ◦ Transaction replay ◦ Réplication Parallèle avec Xpand • Multiple Moniteurs ◦ Xpad, ColumnStore and Replicated environments. • Verrouillage coopératif ◦ MaxScale HA ◦ Multiple MaxScale Moniteurs dans un Cluster • Sécurité ◦ Pare-feu pour bases de données ◦ Masquage dynamique des données ◦ Limitation des requêtes ◦ Limitation des résultats des requêtes ◦ Statistiques de performance ◦ Enregistrement central des requêtes Basics
  28. En résumé : la sécurisation passe par plusieurs axes •

    Axes de sécurisation ◦ Démarche globale ◦ Sécuriser l’authentification ◦ Sécuriser les mots de passe • Privilèges ◦ Limiter les droits ◦ Utiliser les roles ◦ Limiter l‘accès aux ressources • Auditing ◦ Auditer tous les fichiers de journaux disponibles ◦ Sauvegarder les pistes d’audit ◦ Assurer l’alerting • Filtrage ◦ Multiplier les accès et ajouter un filtrage physique N3 ◦ Filtrer les accès