Langage de contrôle de données (LCD)
- Fiche de cours
- Quiz
- Profs en ligne
- Videos
- Application mobile
Objectif : que sont une permission et une
restriction de données ?
1. Introduction
Il arrive que plusieurs personnes travaillent
simultanément sur une base de
données. Cependant, en fonction de leurs
besoins, elles n'auront pas toutes la même utilisation
de la base au même moment. Certaines peuvent par exemple
avoir besoin de modifier ou supprimer des
données dans la table, pendant que d'autres ont
seulement un besoin de consultation de données.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 chacun, puis les appliquer à la base de données sous forme de permissions.
Le langage SQL permet d'effectuer ces opérations grâce à deux clauses :
GRANT permet d'accorder des droits à un utilisateur (parfois plusieurs sur certains SGBD) .
REVOKE permet de retirer des droits à un utilisateur (ou plusieurs sur certains SGBD).
Les permissions (appelées aussi droits ou privilèges) peuvent être définies pour chaque clause. D'autre part, il est aussi possible de définir des rôles, c'est-à-dire de permettre à d'autres utilisateurs d'accorder des permissions.
Les privilèges sont les clauses qui peuvent être autorisées ou retirées à un utilisateur. Les principales sont :
- DELETE : pour supprimer les données d'une table ;
- INSERT : pour ajouter des données à une table ;
- SELECT : pour accéder aux données d'une table ;
- UPDATE : pour mettre à jour les données d'une table.
Seule la personne qui a créé un élément (table, vue ou index) a le pouvoir d'accorder ou de retirer des droits sur cet élément. Cette personne a la possibilité de transmettre ce droit d'accorder/retirer des droits à un bénéficiaire qui aura à son tour le droit de transmettre ce pouvoir sur ces éléments. Il nous faut donc étudier l’attribution des permissions mais aussi le retrait de celles-ci.
2. L’attribution des permissions
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.
Pour faciliter l'attribution des permissions, il existe des mots clés qui permettent d'éviter à avoir à saisir l'ensemble des utilisateurs dans le cas d'une autorisation collective ou bien de citer l'ensemble des permissions :
• 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 retrait des permissions à un utilisateur.
3. Le retrait des permissions
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 supprime le droit d'un utilisateur à accorder des permissions à un autre utilisateur.
Pour faciliter le retrait des permissions, il existe des mots clés qui permettent d'éviter à avoir à saisir l'ensemble des utilisateurs dans le cas d'une autorisation collective ou bien de citer l'ensemble des permissions :
• 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èmes :
• 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.
L’essentiel
Le langage de contrôle de données permet de définir les fonctionnalités d’un utilisateur en lui attribuant ou en lui retirant des permissions. L’utilité est de permettre une meilleure gestion de la base de données lorsque celle-ci peut-être exploitée par plusieurs utilisateurs simultanément pour des besoins différents.
Le langage de contrôle de données permet de définir les fonctionnalités d’un utilisateur en lui attribuant ou en lui retirant des permissions. L’utilité est de permettre une meilleure gestion de la base de données lorsque celle-ci peut-être exploitée par plusieurs utilisateurs simultanément pour des besoins différents.
Vous avez obtenu75%de bonnes réponses !