Vous êtes sur la page 1sur 14

Administration Oracle 2 / IIR4

Atelier : Privilèges système et Objet

 Un privilège est un droit d'exécution d'un type donné d'instruction


SQL ou un droit d'accès à l'objet d'un autre utilisateur.

 Il existe deux types de privilèges utilisateur sous Oracle :

 Système : permet aux utilisateurs de réaliser certaines actions


sur le serveur (exemple: Grant Create session to User1;)

 Objet : permet aux utilisateurs d'accéder à un objet donné et


de le manipuler (exemple: Grant Select on Hr.Employees To
User1;)

I. Les privilèges système

Exemples de privilèges système:

Il existe presque 127 privilèges système classés par catégorie. Voici


quelques-uns :

Source :
https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_9
013.htm#BABEFFEE
TABLE CREATE TABLE
CREATE ANY TABLE
ALTER ANY TABLE
DROP ANY TABLE
SELECT ANY TABLE
UPDATE ANY TABLE
DELETE ANY TABLE

SESSION CREATE SESSION


ALTER SESSION
RESTRICTED SESSION

TABLESPACE CREATE TABLESPACE


ALTER TABLESPACE
DROP TABLESPACE
UNLIMITED TABLESPACE

Page 1 sur 14
Administration Oracle 2 / IIR4

1) Accorder un privilège système

Syntaxe :

GRANT system_privilege [,system_privilege ...] | All privileges

TO {user | role |PUBLIC} [, {user| role |PUBLIC}... ]

[With Admin Option] ;

Où :

system_privilege : désigne le privilège système à accorder.

rôle : désigne le nom du rôle auquel nous allons accorder le privilège système

PUBLIC : accorde le privilège système à tous les utilisateurs.

WITH ADMIN OPTION : autorise le bénéficiaire à accorder son privilège à d'autres


utilisateurs ou rôles.

Remarque :

L’affectation de privilège système prend effet immédiatement.

On peut accorder tous les privilèges système à un utilisateur via :

Vous pouvez par la suite révoquer tous les privilèges ou juste quelques-uns.

Exemple:

Grant create session to IIR4;

2) Afficher les informations sur les privilèges système

Page 2 sur 14
Administration Oracle 2 / IIR4

Exemples :

3) Révoquer un privilège système

Syntaxe :

REVOKE system_privilege[, system_privilege ]...

FROM {user|PUBLIC}

Page 3 sur 14
Administration Oracle 2 / IIR4

Exemple :

Revoke create session from IIR4;

Exercice 1 :

On souhaite que tout utilisateur nouvellement créé possède le privilège système


« Create session » . Quelle solution pouvez-vous proposer ?

Remarque : « public » est un rôle détenu par tous les utilisateurs automatiquement après leur
création.

Grant create session to public;

Exercice 2 :

1- Créez l’utilisateur : IIR4_1 /emsi en utilisant une commande de création


minimale

2- Accordez les privilèges système nécessaires pour que IIR4_1 puisse créer
la table suivante sur son propre schéma :

Solution :
Sys :

Connect IIR4_1/emsi

Create table Categorie (idCat int Primary key , libCat varchar2(30));

Exercice 3 :

1- Créez les utilisateurs : U1/emsi et U2/emsi en utilisant des commandes de


création minimales
2- On souhaite utiliser le compte U1 pour créer la table « Produit » sur le
schéma U2.
a. Les privilèges de U1 :

Page 4 sur 14
Administration Oracle 2 / IIR4

b. Les privilèges de U2 :

Après avoir lancé le Code de création de la table produit depuis la session de


U1 :

Create table U2.Produit (idProd int Primary key , libProd varchar2(30), prixU
float);

On reçoit l’erreur suivante :

Quelle peut être la cause de cette erreur ?

L’utilisateur U1 a le privilège create any table seulement, mais il n’a pas create
any index qui lui permet d’utiliser la contrainte primary key.

Exercice 4:

1- Créez un nouvel utilisateur : « GERANT/PasswGerant » (commande


minimale)

2- Accordez à l’utilisateur « GERANT » tous les privilèges système en utilisant


une seule commande « Grant »

3- Affichez la liste des privilèges système accordée à l’utilisateur « GERANT »,


en les enregistrant dans fichier de sortie « listePrivsSystem.txt »

Page 5 sur 14
Administration Oracle 2 / IIR4

Spool « listePrivssystem.txt » ;

Spool off ;

Ou bien

Spool off ;

4- Sur le schéma de l’utilisateur « GERANT », créez la table produit suivante :

Create table Produit (idProd int , libProd varchar2(30), prixU float);

Sachant que l’utilisateur a été créé avec la commande de création minimale, quels
sont les privilèges système qui lui ont permis de réussir la création des tables sur
son schéma ?

Page 6 sur 14
Administration Oracle 2 / IIR4

Create table + unlimited tablespace + create any table

Remarque : Actuellement, l’utilisateur a Create table et create any table. Si vous


Révoquez le privilège « Create table » , il pourra toujours créer des tables, puisque
Create any table inclut create table.

Pour qu’un utilisateur puisse créer des tables sur le schéma d’un autre user, il lui
faut create any table et create any index pour qu’il puisse utiliser primary key.

L’autre utilisateur (le propriétaire du schéma destination) doit avoir un quota sur
le tablespace de destination.

5- Depuis la session « Sys », révoquez les privilèges système qui ont permis
la création de table de « GERANT »

Revoke create table, create any table from gerant;

Exercice 5 :

Donnez les commandes permettant de mettre en place le scénario suivant :

1. L'administrateur de base de données accorde le privilège système CREATE


TABLE à user1 avec l’option ADMIN OPTION.

Sys : Grant create table to User1 with admin option ;

2. user1 crée une table.

Connect user1/emsi

Create table t (col int) ;

3. user1 accorde le privilège système CREATE TABLE à user2.

Page 7 sur 14
Administration Oracle 2 / IIR4

User1 : Grant create table to user2 ;

4. user2 crée une table.

Connect user2/emsi

Create table table t2(col int) ;

5. L'administrateur de base de données révoque le privilège système CREATE


TABLE précédemment accordé à user1.

Revoke create table from user1 ;

Qu’est-ce que vous remarquez ?

Solution :

La table de User1 n'est pas supprimée, mais il ne peut plus créer de table.

La table de user2 n'est pas supprimée et ce dernier dispose toujours du privilège


système CREATE TABLE.

Exercice 6 :

Soit l’utilisateur « testAny » créé par la commande suivante :

Create user testAny identified by emsi;

L’administrateur sys lui a accordé les privilèges système suivants :

Grant create session, select any table to testAny;

L’administrateur Sys dispose d’une table « T_Categorie » sur son schéma.

T_categorie (idCat int primary key, libcat varchar2(30));

1- Donnez le résultat d’exécution des requêtes suivantes :


a. Select * from U2.Produit ; OK
b. Select * from sys.T_categorie; NonOK
2- Comment peut-on expliquer les résultats Obtenus ?

Solution

Page 8 sur 14
Administration Oracle 2 / IIR4

L’utilisateur peut visualiser dans ce cas les tables de sys.

II. Les privilèges Objet

Ce type de privilège permet d'autoriser l'utilisateur à effectuer des


modifications et à accéder à certains objets de la base de données
comme une table, une vue. Vous pouvez donner des droits sur des
objets comme UPDATE ON, DELETE ON, EXECUTE ON, SELECT ON.

1) Accorder un privilège Objet

Syntaxe :

GRANT { object_privilege [(column_list)] [, ….]|ALL [PRIVILEGES]}

ON [schema.]object

TO {user|role|PUBLIC}[, {user|role|PUBLIC} ]...

Page 9 sur 14
Administration Oracle 2 / IIR4

[WITH GRANT OPTION]

Exemples :

--Accorder le privilege de consultation du contenu de la table


employees du schéma HR à l’utilisateur IIR4

Grant select on HR.employees to IIR4;

--Accorder les privileges de modification et de suppression du contenu


de la table jobs du schéma hr à l’utilisateur user1

Grant update , delete on HR.Jobs to user1;

--Accorder tous les privileges objets sur la table jobs du schéma Hr


aux utilisateurs user2 et user3, avec la possibilité d’accord à
d’autres utilisateurs

Grant all on HR.jobs to user2,user3 with grant option;

--Accorder le droit d’insertion dans la table employees de Hr à tout


le monde

Grant insert on HR.employees to public;

Remarques:

Il y a certaines règles à suivre avant de donner des privilèges objets.

- Pour donner un privilège objet à quelqu'un, il faut que cet objet vous appartienne
ou bien que vous ayez reçu ce privilège avec l'option WITH GRANT OPTION.

- Vous possédez tous les privilèges objets ainsi que l'option WITH GRANT OPTION
pour tous les objets qui vous appartiennent.

- Pour des raisons de sécurités, faites très attention lorsque vous donner des droits
sur vos objets.

- L'option WITH GRANT OPTION ne peut être utilisée lorsque vous donnez un
privilège objet à un rôle.

2) Afficher les informations sur les privilèges Objet


a. User_tab_privs : les privilèges objet pour lesquels l’utilisateur en cours est
soit : proriétaire de table (Owner), celui qui a accordé le privilège (Grantor)
ou celui qui a reçu le privilège (Grantee)
b. Dba_tab_privs : tous les privilèges objet sur la base de données

Page 10 sur 14
Administration Oracle 2 / IIR4

c. User_tab_privs_recd : liste les privilèges objet que l’utilisateur connecté a


reçu
d. User_tab_privs_made : liste les privilèges objet accordés sur les objets de
l’utilisateurs en cours , par lui-même ou par un utilisateur qui a l’option With
grant Option.
3) Révoquer un privilège Objet

Syntaxe :

REVOKE { object_privilege [, ….]|ALL [PRIVILEGES]}

ON [schema.]object

FROM {user|role|PUBLIC}[, {user|role|PUBLIC} ]...

Exemple :

Revoke select on HR.employees From IIR4;

Revoke update , delete on HR.Jobs from user1;

Remarque:

A la différence de l'option WITH ADMIN OPTION, l'option WITH GRANT OPTION se


retire en cascade. Si l'utilisateur à qui vous aviez donné un privilège avec l'option
WITH GRANT OPTION l'avait donné à son tour à un autre utilisateur, et bien lorsque
vous retirez ce privilège à cet utilisateur, tout ceux qui ont reçu ce même privilège
de cet utilisateur se le verront retirer automatiquement.

Exercice 8 :

1. Créez les utilisateurs « a1 » , « a2 » et « a3 »

2. Accordez aux utilisateurs les privilèges système nécessaires pour se


connecter et créer des tables

Page 11 sur 14
Administration Oracle 2 / IIR4

3. Depuis la session « a1 », créez la table : TestPrivObj(col1, col2)

4. « a1 » accorde à « a2 » le droit de consultation du contenu de la table


TestPrivObj avec la possibilité de l’accorder à d’autres users.

5. « A2 » accorde le privilège de consultation à « a3 »

6. Affichez les privilèges objet depuis les sessions de « a1 » , « a2 » et « a3 »


en utilisant :
a. User_tab_privs
b. User_tab_privs_recd
c. User_tab_privs_made
7. Révoquez le privilège objet de consultation de l’utilisateur « a2 »
8. Consultez à nouveau le contenu des vues système User_tab_privs,
User_tab_privs_recd et User_tab_privs_made.

Page 12 sur 14
Administration Oracle 2 / IIR4

A2 :

A3 :

A1 :

Page 13 sur 14
Administration Oracle 2 / IIR4

A2 :

A3 :

Page 14 sur 14

Vous aimerez peut-être aussi