Data">
Base de Données Lanage LCD
Base de Données Lanage LCD
Base de Données Lanage LCD
Objectif
L'objectif de ce cours est de comprendre la notion de privilège et d'apprendre le
Langage de Contrôle de Données en SQL pour :
- La gestion des comptes utilisateurs (création, modification, suppression)
- L’octroi et la révocation des droits d’accès (grant, revoke)
1. Introduction
Pour accéder aux fonctionnalités offertes par un SGBD, il faut disposer d’un compte
utilisateur. Ce dernier doit obligatoirement disposer d’un login et mot de passe pour
s’authentifier. Un utilisateur peut ensuite créer des tables et autres objets SQL dans un
espace mémoire qui lui est désigné, appelé tablespace dans Oracle. Dès son installation,
Oracle crée un tablespace appelé « Users » pour stocker les données des nouveaux
utilisateurs.
Sachant que :
− nom : login de l’utilisateur Oracle (obligatoire)
− IDENTIFIED : le mot de passe de l’utilisateur (obligatoire)
− DEFAULT TABLESPACE : indique dans quel tablespace (espace mémoire) les
tables et objets de l’utilisateur sont créés par défaut (optionnel)
− QUOTA : indique dans quel tablespace l’utilisateur a le droit de créer des objets et
jusqu’à quelle taille en octets (optionnel)
m e
M Sonia Guerbouj P a g e | 37
2021- 2022|S u p p o r t d e c o u r s : Bases de Données
Exemple :
CREATE USER sonia IDENTIFIED BY mypass
DEFAULT TABLESPACE users
QUOTA UNLIMITED ON users
QUOTA 2M ON exemples ;
Remarques :
− Par défaut, un compte utilisateur créé est activé même si on ne le spécifie pas.
− Créer un compte ne suffit pas pour accéder à Oracle. Il faut aussi avoir le droit de
se connecter (Voir partie Privilèges).
Exemples :
ALTER USER sonia IDENTIFIED BY mypass
Quota 5M on users ;
Modification du quota que peut utiliser ce compte sur le tablespace “users”.
Sachant que :
m e
M Sonia Guerbouj P a g e | 38
2021- 2022|S u p p o r t d e c o u r s : Bases de Données
− cascade : elle est obligatoire lorsque l’utilisateur possède au moins une table ou
un objet déjà créé. Cela signifie que l’utilisateur et ses données seront effacés.
Exemples :
DROP USER sonia ; Sonia n’a rien créé, seul son compte sera supprimé
Les SGBD sont multi-utilisateurs. Toutefois, ces utilisateurs n'ont pas tous les mêmes
besoins. Ainsi, il est possible de définir des permissions pour chaque personne.
C'est le rôle de l'administrateur de la base de données de définir les droits d'accès des
utilisateurs. Il doit d'abord définir les besoins de chacun, puis les appliquer à la base de
données sous forme de permissions. Pour effectuer ces opérations il existe 2 clauses :
- GRANT permet d'octroyer des droits à un utilisateur.
- REVOKE permet de retirer des droits à un utilisateur.
Les droits d'accès (ou privilèges ou permission) sont de 2 types :
− Privilège système : C’est généralement le droit d’exécuter une commande SQL
(exp : create table, connect, …).
− Privilège objet : C’est le droit d’accéder à un objet d’un autre utilisateur (exp :
consulter la table employees de l’utilisateur HR).
Syntaxe :
GRANT nom_privilège TO nom_utilisateur | PUBLIC
Tel que :
- Le privilège peut être attribué à un seul utilisateur, à plusieurs utilisateurs, ou à
tous les utilisateurs en utilisant le mot clé PUBLIC.
- Il possible d’attribuer plusieurs privilèges dans la même commande (séparés par
une virgule)
m e
M Sonia Guerbouj P a g e | 39
2021- 2022|S u p p o r t d e c o u r s : Bases de Données
Exemples :
GRANT create session, create table TO sonia;
Sonia a maintenant le droit de créer une session (se connecter), de créer des tables et
Tel que :
- Le privilège peut être révoqué à un seul utilisateur, à plusieurs utilisateurs, ou à
tous les utilisateurs en utilisant le mot clé PUBLIC.
- Il possible de révoquer plusieurs privilèges dans la même commande (séparés
par une virgule)
Exemples :
REVOKE create table, connect FROM sonia ;
Sonia ne peut plus créer des tables ni se connecter
Un privilège objet est le droit d’accéder à un objet (table, vue, …) d’un autre utilisateur.
Par défaut, seul le propriétaire d’un objet a le droit d’y accéder. Pour qu’un autre
utilisateur puisse accéder à l’objet, le propriétaire de l’objet doit lui donner un privilège
objet. Les principaux privilèges objets sont :
m e
M Sonia Guerbouj P a g e | 40
2021- 2022|S u p p o r t d e c o u r s : Bases de Données
Le propriétaire d’un table ou tout autre objet SQL peut donner certains privilèges à un
autre utilisateur. Ainsi, ce dernier pourra lui aussi accéder à et manipuler la table ou
l’objet même s’il ne lui appartient pas.
Syntaxe :
GRANT nom_privilège ON nom_objet TO nom_utilisateur | PUBLIC
Tel que :
- Le privilège peut être attribué à un seul utilisateur, à plusieurs utilisateurs, ou à
tous les utilisateurs en utilisant le mot clé PUBLIC.
Révoquer un privilège sur une table ou n’importe quel objet SQL par son propriétaire
signifie interdire à cet utilisateur d’avoir ce privilège.
Syntaxe :
REVOKE nom_privilège ON nom_table FROM nom_utilisateur|PUBLIC ;
Exemple :
REVOKE INSERT, UPDATE ON employees FROM sonia ;
Empêcher sonia de pouvoir faire des modifications et insertions de lignes dans la
table employees de HR.
6. Exercice
m e
M Sonia Guerbouj P a g e | 41
2021- 2022|S u p p o r t d e c o u r s : Bases de Données
3) L’utilisateur « Sinda » ne peut pas ouvrir une session (se connecter). Pourquoi ?
Proposez une solution.
4) On suppose que « rami » a oublié son mot de passe. Donnez-lui un nouveau mot
de passe « tempo » qu’elle devra changer à sa prochaine connexion.
5) Connectez-vous en tant que « sinda ».
6) Est-ce que « sinda » peut créer une table T1(id, val) telle que id est entier et val
une chaine ? Si oui, donnez la commande. Si non, proposez une solution.
7) En tant que « sinda », donnez à « rami » le droit de lire et insérer dans T1.
8) En tant que « rami », ajoutez la ligne (1,’tunis’) dans T1.
9) En tant que « sinda », révoquez le droit de lecture de « rami » sur sa table T1.
10) En tant que « system », créez un utilisateur « majdi » comme suit :
m e
M Sonia Guerbouj P a g e | 42