coincoins

SQL.LCD - Le contrôle des données


Only for your eyes. My name is Admin
Créer un utilisateur
Créer des utilisateurs et leur donner des droits, on passe aussi par des requêtes : CREATE USER & GRANT

Privilèges

Les privilèges sont les droits de lecture, modification, suppression, etc. accordés à un utilisateur ou un groupe d'utilisateurs.

Important

La notion d'utilisateur du SGBD n'est pas celle de l'application.
L'utilisateur du SGBD est un utilisateur de connexion au SGBD. L'utilisateur d'une application est un utilisateur de connexion à l'application.
En fonction des droits de l'utilisateur applicatif, l'application utilisera un compte de connexion ou un autre pour se connecter au SGBD.
Par exemple : tous les comptes distants standards utiliseront l'utilisateur SGBD "userInscrit" en lecture seule sur la table des articles alors que le gestionnaire distant aura "distantAdmin" et pourra créer et modifier les articles.
Voir la gestion des droits : CIMS (création, interrogation, modification et suppression)

Les privilèges sont accordés sur :

  • L'usage d'une clause principale :
  • Sur un certain périmètre : bases, tables, champs
  • Pour un utilisateur connecté à partir d'une adresse particulière ou générique, souvent localhost ou *

Les requêtes suivantes créent un utilisateur, un groupe et leur donne des droits variés. Enfin, ceux-ci sont révoqués (supprimés) et les utilisateurs/groupes sont supprimés.

RôleSQL
Créer l'utilisateur Toto connecté de partout (%).
Ok, le mot de passe n'est pas terrible. mais on est en test.
Certains SGBD peuvent aussi gérer des groupes pour centraliser la gestion des privilèges. Les utilisateurs appartiennent alors à des groupes de privilèges. Cette méthode est un peu désuette car la gestion des privilèges est souvent déporté sur l'application
CREATE USER 'toto'@'%' IDENTIFIED BY 'toto,123;';
CREATE GROUP 'StdDevelopper';
ALTER  GROUP 'StdDevelopper' ADD USER 'toto'@'%' ;
Accorder des privilèges à l'utilisateur Toto, sur toutes les bases et tables (*.*).
Privilèges de développeur moyen : tout les LID/LMD + quelques privilèges du LDD.
GRANT SELECT,INSERT,UPDATE,DELETE, CREATE,DROP,ALTER ON *.* TO 'toto'@'%';
Accorder des privilèges à l'utilisateur Toto, sur un champ d'une table donnée d'une base donnée
Ce type de privilège est relativement rare car parfois trop précis et alors géré par l'application.
Cependant, au niveau des tables, il apporte de la sécurité (Bloc3).
GRANT SELECT (`id`) ON `gescom`.`gc_article` TO 'toto'@'%'; 
ALTER USER 'toto'@'%' ; -- mettre à jour l'utilisateur (opt)
Accorder le privilège de transmettre ses privilèges
GRANT SELECT ON *.* TO 'toto'@'%' WITH GRANT OPTION;
Recharger les privilèges du serveur.
FLUSH PRIVILEGES ; 

 

RôleSQL
Supprimer tous les privilèges. Supprimer aussi GRANT et donner des privilèges minima (USAGE)
Les privilèges particuliers sont aussi supprimés ici.
REVOKE ALL PRIVILEGES ON *.* FROM 'toto'@'%'
REVOKE GRANT OPTION ON *.* FROM 'toto'@'%'; 
GRANT USAGE ON *.* TO 'toto'@'%';
Supprimer l'utilisateur
DROP USER 'toto'@'%';
DROP GROUP 'StdDevelopper';
Recharger les privilèges du serveur.
FLUSH PRIVILEGES ; 

Comming soon

Voir aussi ce lien vers MySQL::GRANT syntaxe

Conclusion

Ouh là, on cherche à savoir comment pirater une base de données, ou y mettre son propre accès réservé ?

Pas de panique, les admins ne vous pas attendus pour sécuriser leur base ...