Introduction
Dans ce laboratoire (lab), nous explorerons la gestion des utilisateurs et les privilèges dans MariaDB, des compétences essentielles pour sécuriser votre système de base de données. Vous apprendrez à créer et gérer des comptes d'utilisateurs, à attribuer les privilèges appropriés et à afficher les autorisations. Grâce à des exercices pratiques, vous acquerrez une expérience concrète de ces opérations cruciales de sécurité des bases de données et comprendrez comment mettre en œuvre des mesures de sécurité de base dans MariaDB. Cette connaissance est fondamentale pour tout administrateur de base de données afin de garantir un contrôle d'accès approprié et la protection des données.
Création et gestion des comptes d'utilisateurs
Tout d'abord, connectez-vous à MySQL en tant que root :
sudo mysql -u root
Création d'utilisateurs
Créons des utilisateurs avec différents modèles d'accès :
-- Crée un utilisateur qui peut se connecter uniquement depuis localhost
CREATE USER 'hr_user'@'localhost' IDENTIFIED BY 'hr123';
-- Crée un utilisateur qui peut se connecter depuis n'importe quel hôte
CREATE USER 'reports_user'@'%' IDENTIFIED BY 'reports123';
-- Crée un utilisateur sans mot de passe (non recommandé en production)
CREATE USER 'intern'@'localhost';
Le @'localhost' restreint les connexions au seul ordinateur local, tandis que @'%' autorise les connexions depuis n'importe quel hôte. La création d'utilisateurs sans mot de passe n'est pas recommandée pour les environnements de production.
Pour voir les utilisateurs que nous avons créés :
SELECT User, Host FROM mysql.user;
La sortie attendue affiche tous les utilisateurs du système :
+--------------+-----------+
| User | Host |
+--------------+-----------+
| reports_user | % |
| hr_user | localhost |
| intern | localhost |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+--------------+-----------+
Gestion des utilisateurs existants
Pour modifier des utilisateurs existants :
-- Modifie le mot de passe d'un utilisateur
SET PASSWORD FOR 'intern'@'localhost' = PASSWORD('intern123');
-- Oblige l'utilisateur à changer son mot de passe à la prochaine connexion
ALTER USER 'hr_user'@'localhost' PASSWORD EXPIRE;
L'option PASSWORD EXPIRE oblige les utilisateurs à changer leur mot de passe à la prochaine connexion - utile pour les mots de passe temporaires.
Pour supprimer un utilisateur :
-- Supprime un utilisateur
DROP USER 'reports_user'@'%';
Après avoir supprimé l'utilisateur, vérifiez que la liste des utilisateurs a été mise à jour :
+-------------+-----------+
| User | Host |
+-------------+-----------+
| hr_user | localhost |
| intern | localhost |
| mariadb.sys | localhost |
| mysql | localhost |
| root | localhost |
+-------------+-----------+
Attribution de privilèges
Maintenant, nous allons apprendre à attribuer différents types de privilèges pour contrôler ce que les utilisateurs peuvent faire.
Gestion de base des privilèges
Accordons quelques privilèges de base à notre utilisateur RH :
-- Accordez les privilèges SELECT et INSERT sur la table company_db.employees
GRANT SELECT, INSERT ON company_db.employees TO 'hr_user'@'localhost';
-- Vérifiez les privilèges
SHOW GRANTS FOR 'hr_user'@'localhost';
La commande GRANT accorde des autorisations spécifiques (SELECT, INSERT) sur des objets de base de données spécifiques aux utilisateurs. La commande SHOW GRANTS affiche les privilèges actuels.
Sortie attendue :
+----------------------------------------------------------------------------------------------------------------+
| Grants for hr_user@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `hr_user`@`localhost` IDENTIFIED BY PASSWORD '*27DB7FC6D35D1F5E6A4C37473D9018DD46DC2944' |
| GRANT SELECT, INSERT ON `company_db`.`employees` TO `hr_user`@`localhost` |
+----------------------------------------------------------------------------------------------------------------+
Différents niveaux de privilèges
MariaDB prend en charge les privilèges à différents niveaux de granularité :
-- Privilèges globaux (toutes les bases de données)
GRANT CREATE USER ON *.* TO 'intern'@'localhost';
-- Privilèges au niveau de la base de données
GRANT ALL PRIVILEGES ON company_db.* TO 'hr_user'@'localhost';
-- Privilèges au niveau de la table
GRANT SELECT, UPDATE ON company_db.employees TO 'intern'@'localhost';
-- Privilèges au niveau de la colonne
GRANT SELECT (name, department), UPDATE (department)
ON company_db.employees TO 'intern'@'localhost';
La syntaxe *.* fait référence à toutes les bases de données et tables, tandis que database.* fait référence à toutes les tables d'une base de données spécifique. Les privilèges au niveau de la colonne permettent un contrôle d'accès précis.
Retrait de privilèges
Pour retirer des privilèges :
-- Retirez des privilèges spécifiques
REVOKE INSERT ON company_db.employees FROM 'hr_user'@'localhost';
-- Retirez TOUS les privilèges
REVOKE ALL PRIVILEGES ON company_db.employees FROM 'intern'@'localhost';
Vérifiez toujours les modifications de privilèges après les avoir retirées en utilisant SHOW GRANTS.
MariaDB [(none)]> SHOW GRANTS FOR 'hr_user'@'localhost';
+----------------------------------------------------------------------------------------------------------------+
| Grants for hr_user@localhost |
+----------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `hr_user`@`localhost` IDENTIFIED BY PASSWORD '*27DB7FC6D35D1F5E6A4C37473D9018DD46DC2944' |
| GRANT ALL PRIVILEGES ON `company_db`.* TO `hr_user`@`localhost` |
| GRANT SELECT ON `company_db`.`employees` TO `hr_user`@`localhost` |
+----------------------------------------------------------------------------------------------------------------+
MariaDB [(none)]> SHOW GRANTS FOR 'intern'@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for intern@localhost |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO `intern`@`localhost` IDENTIFIED BY PASSWORD '*A381F474A9DDCAA5BC97DAB83A69431B1C8D8902' |
+---------------------------------------------------------------------------------------------------------------+
Résumé
Dans ce laboratoire (lab), nous avons couvert les aspects essentiels de la gestion des utilisateurs et des privilèges dans MariaDB :
- Création et gestion de comptes d'utilisateurs avec différentes restrictions de connexion
- Attribution et retrait de privilèges à différents niveaux (global, base de données, table, colonne)
Ces compétences sont fondamentales pour sécuriser votre installation de MariaDB et mettre en œuvre un contrôle d'accès approprié. Comprendre la gestion des utilisateurs et les privilèges est crucial pour maintenir la sécurité de la base de données et garantir que les utilisateurs ont un accès approprié aux ressources de la base de données.



