Brigade des Requêtes

Chapitre 9 : GRANT, REVOKE (pour aller plus loin, cours seul)

DCL : contrôler les droits d'accès

Dans un vrai système, tout le monde ne doit pas tout pouvoir faire : le stagiaire lit les dossiers, le commissaire les modifie, et seul l'administrateur peut supprimer une table. Le DCL, le langage de contrôle des données, règle qui a le droit de faire quoi.

Pourquoi contrôler les accès ?

Une base contient souvent des informations sensibles (salaires, dossiers médicaux, enquêtes en cours). Le DCL (Data Control Language, « langage de contrôle de données ») permet au SGBD de protéger ces données :

  • limiter la lecture : un utilisateur ne voit que les tables qui le concernent ;
  • limiter la modification : seuls certains profils peuvent écrire ou supprimer ;
  • limiter les accidents : un compte qui ne peut pas faire DROP TABLE ne pourra jamais en faire une par erreur.

Utilisateurs et privilèges

Le SGBD connaît des utilisateurs (un par personne ou par application). À chacun on accorde des privilèges : le droit d'effectuer une action précise sur un objet précis, comme une table.

PrivilègeAutorise
SELECTlire les lignes de la table
INSERTajouter des lignes
UPDATEmodifier des lignes
DELETEsupprimer des lignes
ALL PRIVILEGEStout ce qui précède, et plus encore

GRANT et REVOKE

Accorder puis retirer des droits
-- le stagiaire peut lire la table affaires
GRANT SELECT ON affaires TO stagiaire;

-- il peut aussi y ajouter des lignes
GRANT INSERT ON affaires TO stagiaire;

-- on lui retire ensuite le droit de lecture
REVOKE SELECT ON affaires FROM stagiaire;
  • GRANT accorde un privilège sur un objet à un utilisateur ;
  • REVOKE retire un privilège accordé.

Les rôles : des droits par profil

Accorder les mêmes droits à chaque utilisateur, un par un, devient vite fastidieux. Un rôle regroupe un ensemble de privilèges que l'on attribue ensuite à plusieurs personnes. Quand les droits d'un profil changent, on ne modifie que le rôle.

Un rôle pour tous les enquêteurs
CREATE ROLE enqueteur;
GRANT SELECT, INSERT, UPDATE ON affaires TO enqueteur;

-- Vasseur et Dubois reçoivent le rôle
GRANT enqueteur TO vasseur;
GRANT enqueteur TO dubois;

Le principe du moindre privilège

Règle d'or de la sécurité : chaque utilisateur, chaque application, ne reçoit que les droits strictement nécessaires à son travail, et pas un de plus.

Chapitre 8 | Chapitre 10