Vous êtes sur la page 1sur 6

2021- 2022|S u p p o r t d e c o u r s : Bases de Données

CHAPITRE 6 : LE LANGAGE DE CONTROLE DE DONNEES

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

Le Langage de Contrôle de Données (LCD) est l'ensemble des commandes permettant la


gestion des utilisateurs et la gestion des droits d’accès.

2. Gestion des utilisateurs

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.

2.1. Création d’un utilisateur


C’est l’administrateur de la base de données Oracle (compte SYSTEM) qui a le droit de
créer des comptes utilisateurs. Pour cela, il faut indiquer au moins le login et mot de
passe.
Syntaxe :
CREATE USER nom IDENTIFIED BY mot_de_passe [PASSWORD EXPIRE]
[DEFAULT TABLESPACE nom_tablespace]
[ACCOUNT LOCK|UNLOCK]
[QUOTA valeur[K|M] | UNLIMITED ON nom_tablespace […]] ;

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).

2.2. Modification d’un utilisateur


L’administrateur SYSTEM peut modifier une des informations sur un compte utilisateur
ou bien toutes. Cependant, un utilisateur ne peut modifier que son mot de passe.
Syntaxe :
ALTER USER nom
[IDENTIFIED BY nouveau_mot_de_passe] [PASSWORD EXPIRE]
[DEFAULT TABLESPACE nom_tablespace]
[ACCOUNT LOCK|UNLOCK]
[QUOTA valeur[K|M] | UNLIMITED ON nom_tablespace […]] ;

Exemples :
ALTER USER sonia IDENTIFIED BY mypass
Quota 5M on users ;
Modification du quota que peut utiliser ce compte sur le tablespace “users”.

ALTER USER sonia IDENTIFIED BY temp2


PASSWORD EXPIRE ;
Modification du mot de passe et expiration du mot de passe pour obliger l’utilisateur
à changer son mot de passe lors de la prochaine connexion. Ceci garantit une meilleure
sécurité puisque même l’administrateur de la BD ne connait pas les mots de passes des
autres utilisateurs.

ALTER USER hr identified by hr ACCOUNT UNLOCK ;


Déverrouillage d’un compte utilisateur qui était verrouillé.

2.3. Suppression d’un utilisateur


Seul l’administrateur SYSTEM peut supprimer un compte utilisateur. Ainsi, ce dernier
n’existe plus dans Oracle et toutes les tables et autres objets SQL qu’il a créés seront
effacés.
Syntaxe :
DROP USER nom [CASCADE];

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é

3. Les privilèges et leurs types

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).

4. Les privilèges systèmes

Seul l’administrateur de la base de données Oracle (compte SYSTEM) peut attribuer un


privilège système à un utilisateur ou l’annuler. Chaque privilège système correspond en
fait à la commande SQL correspondante. Exp : connect, create table, create view, alter
table, drop view, …

4.1. Accorder un privilege système

Quand l’administrateur SYSTEM attribue un privilège système à un utilisateur cela veut


dire que l’utilisateur peut désormais utiliser cette commande.

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

GRANT create view TO hr, sonia ;


 Les utilisateurs Sonia et HR peuvent créer des vues.

GRANT connect TO public ;


 Tous les utilisateurs d’Oracle ont le droit de se connecter.

4.2. Révoquer un privilege système

Révoquer un privilège, signifie l’annuler pour cet utilisateur. Seul l’administrateur de la


base de données Oracle (SYSTEM) peut révoquer un privilège système. Dans ce cas,
l’utilisateur ne peut plus exécuter la commande correspondante à ce privilège.
Syntaxe :
REVOKE nom_privilège FROM nom_utilisateur | PUBLIC ;

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

5. Les privilèges objets

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 :

Privilège objet Table Vue Séquence Procédure


ALTER  
DELETE  
EXECUTE 
INDEX 
INSERT  
REFERENCES 
SELECT   
UPDATE  

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

5.1. Accorder un privilege objet

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.

Exemple : En tant que l’utilisateur « hr », on exécute la commande suivante :


GRANT SELECT, INSERT, UPDATE ON employees TO sonia;
 Hr a donné à Sonia le droit d’exécuter les commandes select, insert et update sur sa
table employees.

5.2. Révoquer un privilège

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

Répondez aux questions suivantes en écrivant les commandes SQL si nécessaire :


1) Avec quel compte peut-on créer des utilisateurs dans Oracle ?
2) Créez les utilisateurs suivants :

Mot de passe Tablespace Quotas Statut Privilèges


par défaut
rami squidGame users 500K sur désactivé Créer une
users session et créer
des vues
sinda stark users activé Créer des tables

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 :

Mot de passe Quotas Privilèges


majdi 1234 illimité sur Créer une session et créer des vues
users

11) Est-ce que « majdi » peut afficher la table T1 ? Pourquoi ?


12) En tant que « rami », affichez la table T1. Que se passe-t-il ?

m e
M Sonia Guerbouj P a g e | 42

Vous aimerez peut-être aussi