Gestion du chiffrement des mots de passe dans MySQL

La sécurisation d'un serveur de bases de données MySQL repose en grande partie sur la gestion rigoureuse des informations d'identification. Depuis la version 8.0, MySQL a renforcé ses mécanismes par défaut pour offrir une meilleure protection contre les attaques par force brute et les fuites de données.

Enalyse des mécanismes d'authentification

Pour comprendre comment MySQL traite les secrets des utilisateurs, il est essentiel d'examiner les plugins d'authentification installés. Vous pouvez lister les modules actifs avec la commande suivante :

-- Lister les plugins et identifier les modules d'authentification
SHOW PLUGINS;

Dans un environnement moderne (comme MySQL 8.0+), vous remarquerez principalement trois variantes :

  • caching_sha2_password : Le standard actuel utilisant l'algorithme SHA-256 avec une mise en cache côté serveur pour améliorer les performances.
  • mysql_native_password : L'ancienne méthode basée sur SHA-1, conservée pour des raisons de compatibilité ascendante.
  • sha256_password : Une implémentation SHA-256 plus basique sans le mécanisme de cache.

Inspection du stockage des comptes

Les métadonnées relatives aux utilisateurs sont stockées dans la table système mysql.user. Pour vérifier quel plugin est associé à chaque compte et observer la structure des empreintes numériques (hashes), utilisez la requête suivante :

SELECT 
    user, 
    host, 
    plugin, 
    authentication_string 
FROM 
    mysql.user;

La colonne authentication_string contient le résultat de l'algorithme de hachage. Par exemple, une chaîne commençant par $A$005$ indique générlaement l'utilisation de SHA-256, tandis qu'une chaîne commençant par une astérisque * est caractéristique du plugin natif traditionnel.

Modification des méthodes de chiffrement

Il est parfois nécessaire de modifier le type de chiffrement pour accommoder des clients legacy ou pour renforcer la sécurité d'un compte existant. Voici comment manipuler ces paramètres.

1. Création d'un utilisateur avec le plugin par défaut

-- Création d'un compte utilisant le plugin standard du système (souvent caching_sha2_password)
CREATE USER 'dev_expert'@'localhost' IDENTIFIED BY 'Secured_Pass@2025';

2. Conversion vers une méthode d'authentification spécifique

Si une application ancienne ne supporte pas le nouveau standard SHA-2, vous pouvez rétrograder le mode d'authentification du compte :

-- Passage vers l'ancien mécanisme de hachage SHA-1
ALTER USER 'dev_expert'@'localhost' 
IDENTIFIED WITH mysql_native_password BY 'Secured_Pass@2025';

3. Vérification de la mise à jour

Pour confirmer que le changement a été appliqué et visualiser la nouvelle signature chiffrée :

SELECT 
    user, 
    plugin, 
    authentication_string 
FROM 
    mysql.user 
WHERE 
    user = 'dev_expert';

Le système affichera alors le plugin mysql_native_password associé à une empreinte hexadécimale de 40 caractères (préfixée par une astérisque), confirmant que la logique de chiffrement a été modifiée avec succès.

Étiquettes: MySQL Sécurité Chiffrement SQL Authentification

Publié le 1 août à 15h26