Permissions et droits (grant, revoke)

Permission des utilisateurs et bases de données

C'est très sympa de manipuler les données mais si jamais elles disparaissent toutes d'un coup, que peut-on faire ? C'est un cas envisageable qui mérite notre plus grande attention.

Effectivement, si plusieurs personnes travaillent simultanément sur une base de données, rien ne nous assure que les utilisateurs exécutent la même requête.

Une personne peut supprimer une table pendant qu'une autre personne insère des données dans la table. Ce qui nous amène à se soucier aussi de la sécurisation des données. Le mode contrôle des données de SQL nous permet de gérer tout cela facilement.

Gérer les privilèges d'une base de donnée avec SQL

Il est possible de protéger la base de données en offrant un accès par mot de passe à la base de données. On définit alors des permissions ou privilèges pour chaque personne avec leur mot de passe correspondant.

Les privilèges peuvent alors être :

  • un INSERT : privilège d'insérer des données dans une table
  • un DELETE : privilège de supprimer les données d'une table
  • un SELECT : privilège de consulter les données d'une table
  • un UPDATE : privilège de mettre à jour les données d'une table

GRANT ET REVOKE

Le super utilisateur qu'on appelle souvent root, possède toutes les permissions (INSERT, DELETE, SELECT, UPDATE, ETC). Il revient après à l'administrateur de définir les permissions selon les besoins de chacun : modification de données, consultation de données, etc.

Seule la personne créatrice d'un élément (table, index, etc.) peut accorder ou retirer des droits sur celui-ci. Toutefois, elle a la possibilité de transmettre ce droit (accorder/retirer des droits) à une autre personne.

Deux clauses principales du langage SQL nous permettent d'effectuer toutes ces manipulations. La clause GRANT permet d'accorder des droits à un ou plusieurs utilisateurs. A l'inverse, on se sert de la clause REVOKE pour retirer les droits à un ou plusieurs utilisateurs.

Exemple d'utilisation d'une requête avec GRANT ET REVOKE

Pour donner la permission à la secrétaire de modifier les colonnes nom, prénom et domicile de notre table etudiant on a :

GRANT UPDATE(nom,prenom,domicile) ON etudiant
TO secretaire WITH GRANT OPTION;

 

Pour lui retirer ces droits, il suffit de faire un REVOKE :

REVOKE [GRANT OPTION FOR] UPDATE(nom,prenom,domicile) ON etudiant FROM PUBLIC

 

A propos de l'auteur

Nicolas Galle

Nicolas Galle est développeur web sénior pour l'agence SEO Aseox.