Langages de contrôles de données
  Sommaire
  Gestion d'utilisateur
Plusieurs personnes peuvent travailler simultanément sur une base de données,
toutefois ces personnes n'ont pas forcément les mêmes besoins: certaines peuvent
par exemple nécessiter de modifier des données dans la table, tandis que les autres
ne l'utiliseront que pour la consulter. Ainsi, il est possible de définir des permissions
pour chaque personne en leur octroyant un mot de passe. Cette tâche incombe à l'administrateur
de la base de données (en anglais DBA, DataBase Administrator). Il doit dans un premier
temps définir les besoins de chacuns, puis les appliquer à la base de donnée
sous forme de permissions. Le langage SQL permet d'effectuer ce opérations grâce
à deux clauses:
- GRANT permet d'accorder des droits à un (parfois plusieurs sur certains SGBD) utilisateur
- REVOKE permet de retirer des droits à un (ou plusieurs sur certains SGBD) utilisateur
Les permissions (appelées aussi droits ou privilèges) peuvent
être définies pour chaque (un grand nombre) clause.
D'autre part il est aussi possible de définir des rôles c'est-à-dire
de permettre à d'autre utilisateurs d'accorder des permissions.
Les privilèges sont les clauses qui peuvent être autorisées/retirées
à un utilisateur. Les principales sont:
- DELETE: privilège de supprimer les données d'une table
- INSERT: privilège d'ajouter des données à une table
- SELECT: privilège d'accèder aux données d'une table
- UPDATE: privilège de mettre à jour les données d'une table
L'unique personne pouvant accorder ou retirer des droits sur un élément
(table, vue ou index) est la personne qui l'a créée. Toutefois, il lui est possible
de transmettre ce droit d'accorder/retirer des droits, auquel cas la personne recevant cet "honneur"
aura le droit de transmettre ce "pouvoir" sur ces éléments
  Accorder des droits
La clause GRANT permet d'attribuer des permissions à un ou plusieurs
utilisateurs sur un ou plusieurs éléments de la base de données.
La syntaxe de cette clause est la suivante:
GRANT Liste_de_permissions ON Liste_d_objets TO Liste_d_utilisateurs
[WITH GRANT OPTION];
L'option WITH GRANT OPTION permet de définir si l'utilisateur
peut lui-même accorder à un autre utilisateur les permissions qu'on lui accorde sur les éléments
Afin d'éviter à avoir à saisir l'ensemble des utilisateurs dans le cas d'une autorisation
collective ou bien de citer l'ensemble des permissions il est possible d'utiliser des mots clés:
- Le mot clé PUBLIC en lieu et place de la liste d'utilisateurs permet d'accorder les privilèges
sur le ou les objets à l'ensemble des utilisateurs
- Le mot clé ALL en lieu et place de la liste de permissions permet d'accorder tous les privilèges
aux utilisateurs présents dans la liste
En précisant entre parenthèses un nom de colonne pour un privilège, il est possible de limiter
le privilège à la colonne (ou la liste de colonnes) entre parenthèses,
par exemple:
GRANT UPDATE(Nom,Prenom)
ON Etudiants
TO Jerome,Francois,Georges
WITH GRANT OPTION;
L'option WITH GRANT OPTION autorise donc plusieurs utilisateurs à accorder
des permissions à un même utilisateur, il y a donc des règles à respecter
lors du retraits des permissions à un utilisateur...
  Retirer des droits
La clause REVOKE permet de retirer des permissions à un ou plusieurs
utilisateurs sur un ou plusieurs éléments de la base de données.
La syntaxe de cette clause est la suivante:
REVOKE
[GRANT OPTION FOR] Liste_de_permissions
ON Liste_d_objets
FROM Liste_d_utilisateurs;
L'option GRANT OPTION FOR permet de supprimer le droit d'un utilisateur
à accorder des permissions à un autre utilisateur.
Afin d'éviter à avoir à saisir l'ensemble des utilisateurs dans le cas d'une autorisation
collective ou bien de citer l'ensemble des permissions il est possible d'utiliser des mots clés:
- Le mot clé PUBLIC en lieu et place de la liste d'utilisateurs permet de retirer les privilèges
sur le ou les objets à l'ensemble des utilisateurs
- Le mot clé ALL en lieu et place de la liste de permissions permet de retirer tous les privilèges
aux utilisateurs présents dans la liste
En précisant entre parenthèses un nom de colonne pour un privilège, il est possible de limiter
la restriction de privilège à la colonne (ou la liste de colonnes) entre parenthèses,
par exemple:
REVOKE
[GRANT OPTION FOR] UPDATE(Nom,Prenom)
ON Etudiants
FROM PUBLIC
L'attribution et la révocation de droits pose deux problème:
- lorsque l'on retire un droit à un utilisateur, il faut que ce droit soit retiré aux utilisateurs auxquels
il a accordé le droit
- un utilisateur peut avoir reçu un droit de plusieurs utilisateurs
Il s'agit donc de retirer les droits des utilisateurs l'ayant obtenu de quelqu'un qui ne l'a plus
en prenant en compte le fait qu'il peut l'avoir de plusieurs personnes simultanément...
La clause REVOKE étant implé:mentée différemment selon les SGBDR,
il s'agit de consulter la documentation de celui-ci...
|