Vous êtes sur la page 1sur 25

!!

SGBD:&Contrôle&des&données&

"!Ges&on!des!U&lisateurs!
"!Ges&on!des!Privilèges!
"!Ges&on!des!Rôles!
"!U&lisa&on!du!dic&onnaire!des!données!

!
Sources:
"  SQL$pour$Oracle,$3e$édi3on,$Cris3an$Soutou,$édi3ons$Eyrolles$.$
"  Oracle9i$SQL$et$PL/SQL,$Razavan$Bizoi,$édi3ons$Eyrolles$.$

Introduction&
"  Comme! dans! tout! système! mul&"u&lisateur,! l’usager! d’un! SGBD! doit! être!
iden&fié!avant!de!pouvoir!u&liser!des!ressources.!!

"  L’accès!aux!informa&ons!et!à!la!base!de!données!doit!être!contrôlé! à!des!fins!


de!sécurité!et!de!cohérence.!!

Exemple:!Conséquences*de*l’aspect*mul23u2lisateurs*!

©$O.Lamouchi$ E2E$
Introduction&
Les!aspects!du!langage!SQL!qui!concernent!le!contrôle!des!données!et!des!accès:!
#  La$ ges3on$ des$ u3lisateurs$ à! qui! on! associe! des! espaces! de! stockage!
(tablespaces)* dans! lesquels! se! trouveront! leurs! objets! (tables,! index,!
séquences,!etc.)!;!!
#  La$ges3on$des$privilèges$qui!permeTent!de!donner!des!droits!sur!la!base!de!
données!(privilèges!système)!et!sur!les!données!de!la!base!(privilèges!objets)!;!!
#  La$ges3on$des$rôles$qui!regroupent!des!privilèges!système!ou!objets!affectés!
par!la!suite!à!un!ou!plusieurs!u&lisateurs!;!!
#  La$ges3on$des$vues$;!!
#  La$ges3on$des$synonymes!;!!
#  L’u3lisa3on$du$dic3onnaire$des$données.$$

©$O.Lamouchi$ E3E$

Introduction&
#  La$ges3on$des$u3lisateurs$!
#  La$ges3on$des$privilèges$$
#  La$ges3on$des$rôles$!

©$O.Lamouchi$ E4E$
Gestion&des&utilisateurs&
"  Un! u&lisateur! (user* ou! username)! est! iden&fié! au! niveau! de! la! base! par! son!
nom! et! peut! se! connecter! puis! accéder! aux! objets! de! la! base! sous! réserve!
d’avoir!reçu!un!certain!nombre!de!privilèges.!!
"  Un! schéma! est! une! collec&on! nommée! (du! nom! de! l’u&lisateur! qui! en! est!
propriétaire)!d’objets!(tables,!vues,!séquences,!index,!procédures,!etc.).!!
"  Les! types! d’u&lisateurs,! leurs! fonc&ons! et! leur! nombre! peuvent! varier! d’une!
base!à!une!autre:!!
•  Le$DBA$(DataBase'Administrator):$
-  L’installa&on!et!mises!à!jour!de!la!base!et!des!ou&ls!éventuels!;!!
-  La! ges&on! de! l’espace! disque! et! des! espaces! pour! les! données!
(tablespaces)!;!!
-  La! ges&on! des! u&lisateurs! et! de! leurs! objets! (s’ils! ne! les! gèrent! pas! eux"
mêmes)!;!!!
-  L’!op&misa&on!des!performances;!!
-  La!sauvegardes,!la!restaura&ons!et!l’archivages!;!
©$O.Lamouchi$ E5E$

Gestion&des&utilisateurs&
•  L’administrateur$ réseaux:! se! charge! de! la! configura&on! de! l’intergiciel!
(middleware)!Oracle!Net!au!niveau!des!postes!clients.!!

•  Les$ développeurs! qui! conçoivent! et! meTent! à! jour! la! base.! Ils! peuvent! aussi!
agir! sur! leurs! objets! (créa&on! et! modifica&on! des! tables,! index,! séquences,!
etc.).! Ils! transmeTent! au! DBA! leurs! demandes! spécifiques! (stockage,!
op&misa&on,!sécurité).!!

•  Les$ administrateurs$ d’applica3ons$ qui! gèrent! les! données! manipulées! par!


l’applica&on!ou!les!applica&ons.!!

•  Les$ u3lisateurs$ qui! se! connectent! et! interagissent! avec! la! base! à! travers! les!
applica&ons!ou!à!l’aide!d’ou&ls!(interroga&ons!pour!la!généra&on!de!rapports,!
ajouts,!modifica&ons!ou!suppressions!d’enregistrements).!!

•  =>*Tous*seront*des*u2lisateurs*(au*sens*Oracle)*avec*des*privilèges*différents.**
©$O.Lamouchi$ E6E$
Gestion&des&utilisateurs&
Créa3on$d’un$u3lisateur$(CREATE$USER)'
Pour!pouvoir!créer!un!u&lisateur!on!doit!posséder!le!privilège!CREATE!USER.!
!
CREATE$USER$u2lisateur*IDENTIFIED$
{!BY!motdePasse*|!EXTERNALLY!|!GLOBALLY$AS!'nomExterne'*}!!
[!DEFAULT$TABLESPACE!nomTablespace*!![QUOTA!{!en2er*[!K!|!M!]!|$
UNLIMITED$}!ON!nomTablespace*]!]!!
[TEMPORARY$TABLESPACE$nomTablespace*![QUOTA!{!en2er*[!K$|!M!]!|!
UNLIMITED!}!ON!nomTablespace*].]!!
[PROFILE!nomProfil*]![PASSWORD!EXPIRE!]![!ACCOUNT!{!LOCK!|!UNLOCK!}!]!;!!

©$O.Lamouchi$ E7E$

Gestion&des&utilisateurs&
Créa3on$d’un$u3lisateur'
•  IDENTIFIED$BY$motdePasse'permet!d’affecter!un!mot!de!passe!à!un!u&lisateur!
local!(cas!le!plus!courant!et!le!plus!simple).!!
•  IDENTIFIED$BY$EXTERNALLY$permet!de!se!servir!de!l’authen&cité! du!système!
d’exploita&on!pour!s’iden&fier!à!Oracle!(cas!des!compte!OPS$!pour!Unix).!!
•  IDENTIFIED$BY$GLOBALLY$permet!de!se!servir!de!l’authen&cité!d’un!système!d’!
annuaire.!!
•  DEFAULT$ TABLESPACE$ nomTablespace* associe! un! espace! disque! de! travail!
(appelé!tablespace)!à!l’u&lisateur.!
•  TEMPORARY$ TABLESPACE$ nomTablespace' associe! un! espace! disque!
temporaire!(dans!lequel!certaines!opéra&ons!se!dérouleront)!à!l’u&lisateur.!!
•  QUOTA!permet!de!limiter!ou!pas!chaque!espace!alloué.!
•  PROFILE$nomProfil'affecte!un!profil!(caractéris&ques!système!rela&ves!au!CPU!
et!aux!connexions)!à!l’u&lisateur.!!
•  PASSWORD$EXPIRE$pour!obliger!l’u&lisateur!à!changer!son!mot!de!passe!à!la!
première!connexion.!Le!DBA!peut!aussi!changer!ce!mot!de!passe.!!
ACCOUNT$pour!verrouiller!ou!libérer!l’accès!à!la!base!(par!défaut!UNLOCK).!! E8E$
•  ©$O.Lamouchi$
!
!
!
Gestion&des&utilisateurs&
Créa3on$d’un$u3lisateur'
Exemples:$
!
!

©$O.Lamouchi$ E9E$

Gestion&des&utilisateurs&
Modifica3on$d’un$u3lisateur'
Pour!pouvoir!modifier!les!caractéris&ques!d’un!u&lisateur!(autres!que!celle!du!mot!
de!passe)!on!doit!posséder!le!privilège!ALTER!USER.!!
$
ALTER$USER$u2lisateur*!
[$IDENTIFIED${!BY!password*[!REPLACE!old_password*]!|!EXTERNALLY!|!
GLOBALLY$AS$'external_name'!}!]!!
[!DEFAULT$TABLESPACE$nomTablespace*
[QUOTA!{!en2er*[!K!|!M!]!|!UNLIMITED!}!ON!nomTablespace*]!]!!
[!TEMPORARY$TABLESPACE$nomTablespace*
[QUOTA!{!en2er*[!K!|!M!]!|!UNLIMITED!}!ON!nomTablespace*].]!!
Affecte* à* l’u2lisateur*
[!PROFILE!nomProfil*]! des* rôles* qui* sont* en*
fait* des* ensembles* de*
[!DEFAULT$ROLE${!rôle1*[,rôle2]...!|!ALL![EXCEPT!rôle1*[,rôle2]...]!|!NONE!}!
privilèges**
[!PASSWORD$EXPIRE$]![!ACCOUNT!{!LOCK!|!UNLOCK$}!]!;!!
!
E10
©$O.Lamouchi$ Oblige*l’u2lisateur*à*changer*son*mot*de*passe*à*la*prochaine*connexion*
E$
Gestion&des&utilisateurs&
Modifica3on$d’un$u3lisateur'
Exemples:$

'

E11
©$O.Lamouchi$
E$

Gestion&des&utilisateurs&
Suppression$d’un$u3lisateur'

$  Pour! pouvoir! supprimer! un! u&lisateur,! on! doit! posséder! le! privilège! DROP!
USER.!!
$  Un! u&lisateur! connecté! ne! peut! pas! être! supprimé! en! direct! avec! ceTe!
commande.!!
$  Pour! forcer! ceTe! suppression,! il! faut! arrêter! ses! sessions! par! la! commande!
ALTER$SYSTEM$et!l’op&on!KILL$SESSION.!!
$  Pour! effacer! juste! l’u&lisateur! en! tant! qu’entrée! dans! la! base! sans! supprimer!
ses!objets=>!faire!le!retrait!par$REVOKE$du!privilège!CREATE$SESSION.!!
$
DROP$USER$u2lisateur*[CASCADE];!!

'
E12
©$O.Lamouchi$
E$
Gestion&des&utilisateurs&
Profils'

"  Un!profil!regroupe!des!caractéris&ques!système!(ressources)!qu’il!est!possible!
d’affecter!à!un!ou!plusieurs!u&lisateurs.!!

"  Un!profil!est!iden&fié!par!son!nom.!!

"  Un!profil!est!créé!par!CREATE!PROFILE,!modifié!par!ALTER!PROFILE!et!supprimé!
par!DROP!PROFILE.!!

"  Il!est!affecté!à!un!u&lisateur!lors!de!sa!créa&on!par!CREATE!USER!ou!après!que!
l’u&lisateur!est!créé!par!ALTER!USER.!!

"  Le! profil! DEFAULT! est! affecté! par! défaut! à! chaque! u&lisateur! si! aucun! profil!
défini!n’est!précisé́.!!

' ©$O.Lamouchi$
E13
E$

Gestion&des&utilisateurs&
Crea3on$d’un$profils$(CREATE$PROFILE)'
Pour!pouvoir!créer!un!profil!vous!devez!posséder!le!privilège!CREATE!PROFILE.!!

CREATE$PROFILE$nomProfil*LIMIT$
{!ParamètreRessource*|!ParamètreMotdePasse*}![!ParamètreRessource*|!
ParamètreMotdePasse*]...;!!
ParamètreRessource':$
{!{!SESSIONS_PER_USER!|!CPU_PER_SESSION!|!CPU_PER_CALL!|!CONNECT_TIME!
!!|!!IDLE_TIME!|!LOGICAL_READS_PER_SESSION!
!!|!LOGICAL_READS_PER_CALL!|!COMPOSITE_LIMIT!}!!{!en2er*|!UNLIMITED!|DEFAULT!}!
!!|!PRIVATE_SGA!{en2er[K|M]!|!UNLIMITED!|!DEFAULT}}!!
ParamètreMotdePasse':$$
{!FAILED_LOGIN_ATTEMPTS!|!PASSWORD_LIFE_TIME!|!PASSWORD_REUSE_TIME!|!
PASSWORD_REUSE_MAX!|!PASSWORD_LOCK_TIME!|!PASSWORD_GRACE_TIME!}!
{!expression*|!UNLIMITED!|!DEFAULT!}!}!!
E14
! ©$ O.Lamouchi$
E$
Gestion&des&utilisateurs&
Crea3on$d’un$profils$(CREATE$PROFILE)'
Les!op&ons!principales!sont!les!suivantes!:!!
•  SESSIONS_PER_USER$:!nombre!de!sessions!concurrentes!autorisées.!!
•  CPU_PER_SESSION! :! temps! CPU! maximal! pour! une! session! en! cen&èmes! de!
secondes.!!
•  CPU_PER_CALL$ :! temps! CPU! autorisé! pour! un! appel! noyau! en! cen&èmes! de!
secondes.!!
•  CONNECT_TIME:!temps!total!autorisé!pour!une!session!en!minutes.!
•  IDLE_TIME!:!temps!d’inac&vité!autorisé,!en!minutes,!au!sein!d’une!même!session!!
•  PRIVATE_SGA$:!espace!mémoire!privé!alloué!dans!la!SGA!(System*Global*Area).!
•  FAILED_LOGIN_ATTEMPTS!:!nombre!de!tenta&ves!de!connexion!avant!de!bloquer!
l’u&lisateur!(pour!la!carte!bleue,!c’est!trois).!
*
**
E15
©$O.Lamouchi$
E$

Gestion&des&utilisateurs&
Crea3on$d’un$profils$(CREATE$PROFILE)'
Les!op&ons!principales!sont!les!suivantes!:!(SUITE)*
•  PASSWORD_LIFE_TIME!:!nombre!de!jours!de!validité́!du!mot!de!passe.!!
•  PASSWORD_REUSE_TIME! :! nombre! de! jours! avant! que! le! mot! de! passe! puisse!
être!u&lisé!à!nouveau.!
•  PASSWORD_REUSE_MAX:! nombre! de! modifica&ons! de! mot! de! passe! avant! de!
pouvoir!réu&liser!le!mot!de!passe!courant!
•  PASSWORD_LOCK_TIME! :! nombre! de! jours! d’interdic&on! d’accès! à! un! compte!
après!que!le!nombre!de!tenta&ves!de!connexions!a!été!aTeint.!!
•  PASSWORD_GRACE_TIME!:!nombre!de!jours!d’une!période!de!grâce!qui!prolonge!
l’u&lisa&on!du!mot!de!passe!avant!son!changement!(un!message!d’aver&ssement!
s’affiche!lors!des!connexions).!Après!ceTe!période!le!mot!de!passe!expire.!!
=>'Les*limites*des*ressources*qui*ne*sont*pas*spécifiées*sont*ini2alisées*avec*les*valeurs*du*profil*DEFAULT.*
Par* défaut* toutes* les* limites* du* profil* DEFAULT* sont* à* UNLIMITED.* Il* est* possible* de* visualiser* chaque*
paramètre*de*tout*profil*en*interrogeant*certaines*vues*du*dic2onnaire*des*données*!
E16
©$O.Lamouchi$
E$
Gestion&des&utilisateurs&
Crea3on$d’un$profils$:$Exemple'
Exemples:$
!

Affecta2on*de*ce*profil*à*l’u2lisateur*Paul*:*
!
!ALTER$USER$Paul!PROFILE!profil_Etudiants;!
E17
©$O.Lamouchi$
E$

Gestion&des&utilisateurs&
Modifica3on$et$suppression$d’un$profils$'
$  Pour!pouvoir!modifier!un!profil,!on!doit!posséder!le!privilège!ALTER$PROFILE.!!
ALTER$PROFILE$nomProfil*LIMIT$
{!ParamètreRessource*|!ParamètreMotdePasse*}![!ParamètreRessource*|!
ParamètreMotdePasse*]...;!!

=>' Il* est* plus* prudent* de* restreindre* certaines* valeurs* du* profil* DEFAULT* à* l’aide* de* ce\e*
commande*(ALTER*PROFILE*DEFAULT*LIMIT...).**

$  Pour!pouvoir!supprimer!un!profil,!vous!devez!posséder!le!privilège!DROP$PROFILE.!
Le!profil!DEFAULT!ne!peut!pas!être!supprimé.!!
$
DROP$PROFILE$nomProfil*[CASCADE]!;!!

=>' CASCADE* permet* de* supprimer* le* profil* même* si* des* u2lisateurs* en* sont* pourvus* (op2on*
obligatoire*dans*ce*cas)*et*affecte*le*profil*DEFAULT*à*ces*derniers.**
! E18
©$O.Lamouchi$
E$
Gestion&des&Privilèges&
$  Un! privilège! est! un! droit! d’exécuter! une! certaine! instruc&on! SQL! (privilège!
système),!ou!un!droit!d’accéder!à!un!certain!objet!d’un!autre!schéma!(privilège!
objet).!
"!Les$privilèges$système$diffèrent!sensiblement!d’un!SGBD!à!un!autre.!!
"! Les$ privilèges$ objets$ sont! les! mêmes! et! sont! tous! pris! en! charge! via! les!
instruc&ons!GRANT!et!REVOKE.!!
$  Les!privilèges!assor&s!de!la!men&on!ANY!donnent!la!possibilité! au!bénéficiaire!
de!s’en!servir!dans!tout!schéma!(n’incluant!pas!par!défaut!celui!de!l’u&lisateur!
SYS).!!
Par! exemple! le! privilège! CREATE$ ANY$ TABLE$ permet! de! créer! des! tables!
dans!tout!schéma!alors!que!le!privilège!CREATE$TABLE!ne!permet!de!créer!
des!tables!que!dans!son!propre!schéma.!!
=>>' Pour* autoriser* l’accès* au* schéma* SYS* par* des* privilèges* assor2s* de* la*
m e n 2 o n* A N Y ,* i l* f a u t* p a s s e r* l e* p a r a m è t r e* d ’ i n i 2 a l i s a 2 o n*
O7_DICTIONARY_ACCESSIBILITY*à*TRUE*avec*la*commande*ALTER'SYSTEM''
E19
©$O.Lamouchi$
E$

Gestion&des&Privilèges&
Les$privilèges$Système'
Op&ons!possibles!de!quelques!privilèges!système:!!

'

E20
©$O.Lamouchi$
E$
Gestion&des&Privilèges&
Akribu3on$de$privilèges$Système$(GRANT)'
$
GRANT${!privilègeSystème*|!nomRôle*|!ALL$PRIVILEGES!}![,!{!privilègeSystème*|!
nomRôle*|!ALL$PRIVILEGES$}]...!!
TO${!u2lisateur*|!nomRôle*|!PUBLIC!}![,{!u2lisateur*|!nomRôle*|!PUBLIC!}!]...!
[$IDENTIFIED$BY$motdePasse*]!
[$WITH$ADMIN$OPTION$]!;!!
!
•  privilègeSystème' :* descrip2on* du* privilège* système* (exemple* CREATE* TABLE,* CREATE*
SESSION,*etc.).**
•  *ALL'PRIVILEGES':*tous*les*privilèges*système.**
•  *PUBLIC':*pour*a\ribuer*le(s)*privilège(s)*à*tous*les*u2lisateurs.**
•  IDENTIFIED'BY'désigne*un*u2lisateur*encore*inexistant*dans*la*base.*Ce\e*op2on*n’est*
pas*valide*si*le*bénéficiaire*est*un*rôle*ou*est*PUBLIC.**
•  WITH' ADMIN' OPTION:* permet* d’a\ribuer* aux* bénéficiaires* le* droit* de* retransme\re*
E21
le(s)*privilège(s)*reçu(s)*à*une*2erce*personne*(u2lisateur(s)*ou*rôle(s)).**
©$O.Lamouchi$
E$

'

Gestion&des&Privilèges&
Akribu3on$de$privilèges$Système$(GRANT)'
Exemples:$

$'

E22
©$O.Lamouchi$
E$
Gestion&des&Privilèges&
Révoca3on$de$privilèges$Système$(REVOKE)'
Pour! pouvoir! révoquer! un! privilège! ou! un! rôle,! on! doit! détenir! au! préalable! ce!
privilège!avec!l’op&on!WITH!ADMIN!OPTION.!!
!
REVOKE$!
{!privilègeSystème*|!nomRôle*|!ALL$PRIVILEGES$}!
[,{!privilègeSystème*|!nomRôle*}]...!
FROM${!u2lisateur*|!nomRôle*|!PUBLIC!}![,{!u2lisateur*|!nomRôle*}!]...!;!!
!
Les!op&ons!sont!les!mêmes!que!pour!la!commande!GRANT.!!
•  ALL$PRIVILEGES$(valable!si!l’u&lisateur!ou!le!rôle!ont!tous!les!privilèges!système).!!
•  PUBLIC$pour!annuler!le(s)!privilège(s)!à!chaque!u&lisateur!ayant!reçu!ce(s)!privilège(s)!
par!l’op&on!PUBLIC.!!
!

E23
©$O.Lamouchi$
E$

Gestion&des&Privilèges&
Révoca3on$de$privilèges$Système$(REVOKE)'
Exemples:$

$'

E24
©$O.Lamouchi$
E$
Gestion&des&Privilèges&
Les$privilèges$objets$'
$  Les!privilèges!objets!sont!rela&fs!aux!données!de!la!base!et!aux!ac&ons!sur!les!
objets!(table,!vue,!séquence,!procédure).!!
$  Op&ons!possibles!de!quelques!privilèges!objets:!!

'

E25
©$O.Lamouchi$
E$

Gestion&des&Privilèges&
Akribu3on$de$privilèges$objets$(GRANT)$'
GRANT${!privilègeObjet*|!nomRôle*|!ALL$PRIVILEGES$}![(colonne1*[,colonne2]...)]!!
[,!{!privilègeObjet*|!nomRôle*|!ALL$PRIVILEGES$}]![(colonne1*!
[,colonne2]...)]...!
ON${![schéma.]nomObjet*|!{$DIRECTORY$nomRépertoire*!
|!JAVA!{$SOURCE$|$RESOURCE$}![schéma.]nomObjet*}!}!
TO${!u2lisateur*|!nomRôle*|!PUBLIC$}![,{!u2lisateur*|!nomRôle*|!PUBLIC!}!]...!
[WITH$GRANT$OPTION]!;!!

•  privilègeObjet':*descrip2on*du*privilège*objet*(ex*:*SELECT,*DELETE,*etc.).**
•  colonne* précise* la* ou* les* colonnes* sur* lesquelles* se* porte* le* privilège* INSERT,*
REFERENCES,* ou* UPDATE* (exemple* :* UPDATE(typeAvion)* pour* n’autoriser* que* la*
modifica2on*de*la*colonne*typeAvion).**
•  ALL' PRIVILEGES' donne* tous* les* privilèges* avec* l’op2on* GRANT' OPTION* l’objet* en*
ques2on.**
•  PUBLIC':*pour*a\ribuer*le(s)*privilège(s)*à*tous*les*u2lisateurs.*
•  WITH'GRANT'OPTION':*permet*de*donner*aux*bénéficiaires*le*droit*de*retransme\re*les*
privilèges*reçus*à*une*2erce*personne*(u2lisateur(s)*ou*rôle(s)).**
©$O.Lamouchi$
E26
E$
'
Gestion&des&Privilèges&
Akribu3on$de$privilèges$objets$(GRANT)'
Exemples:$

$'

1.* Affecta2on* des* privilèges* de* lecture* de* la* table* pilote,* de* modifica2on* des*
colonnes* nom* et* age* * et* de* référence* à* la* clé* primaire* brevet* à* l’u2lisateur*
chris2an_soutou;**

E27
©$O.Lamouchi$
E$

Gestion&des&Privilèges&
Akribu3on$de$privilèges$objets$(GRANT)'
Exemples:$

$'

2.* Modifica2on* des* colonnes* nom* et*


age*de*la*table*Pilote*de*olivier_teste.* 3.* Lecture* de* la* table* Pilote* de*
olivier_teste.*

E28
©$O.Lamouchi$
E$
Gestion&des&Privilèges&
Akribu3on$de$privilèges$objets$(GRANT)'
Exemples:$

$$
'

'
4.*Déclara2on*d’une*clé*étrangère*vers*la*table*Pilote*de*olivier_teste.*

'
'
=>>'L’op2on*REFERENCES*permet*d’implanter*une*contrainte*d’intégrité*entre*deux*tables*de*
schémas*dis2ncts.**L’ajout*d’une*qualifica2on*n’est*permise*que*si*le*pilote*est*référencé*dans*
la*table*Pilote*du*schéma*olivier_teste.** E29
©$O.Lamouchi$
E$

'

Gestion&des&Privilèges&
Révoca3on$de$privilèges$objets$(REVOKE)'
$ $  $$permission!ou!avoir!reçu!le!privilège!système!ANY!OBJECT!PRIVILEGE.!
Pour! pouvoir! révoquer! un! privilège! objet,! vous! devez! détenir! au! préalable! ceTe!

' $  Il!n’est!pas!possible!d’annuler!un!privilège!objet!qui!a!été! accordé!avec!l’op&on!WITH!


GRANT!OPTION.!!
' $REVOKE${!privilègeObjet*|!ALL$PRIVILEGES$}![(colonne1*[,colonne2]...)]![,!
{!privilègeObjet*|!ALL$PRIVILEGES$}]![(colonne1*[,colonne2]...)]...!!
ON${![schéma.]nomObjet*|!{!DIRECTORY!nomRépertoire*
|!JAVA!{!SOURCE!|$RESOURCE$}![schéma.]nomObjet*}!}!!
FROM${!u2lisateur*|!nomRôle*|!PUBLIC$}![,{!u2lisateur*|!nomRôle*|!PUBLIC$}!]...!
[CASCADE$CONSTRAINTS]![FORCE];!!
•  CASCADE'CONSTRAINTS'concerne*les*privilèges*REFERENCES*ou*ALL*PRIVILEGES.*Ce\e*
op2on* permet* de* supprimer* la* contrainte* référen2elle* entre* deux* tables* de* schémas*
dis2ncts.**
•  FORCE':*concerne*les*privilèges*EXECUTE*sur*les*types*(extensions*SQL3).*En*ce*cas,*tous*
les* objets* dépendants* (types,* tables* ou* vues)* sont* marqués* INVALID* et* les* index* sont*
E30
©$O.Lamouchi$
notés*UNUSABLE.** E$
'
Gestion&des&Privilèges&
Révoca3on$de$privilèges$objets$(REVOKE)'
Exemples:$

$$
'

E31
©$O.Lamouchi$
E$

Gestion&des&Privilèges&
Privilèges$prédéfinis'
Oracle!propose!des!privilèges!prédéfinis!pour!faciliter!la!ges&on!des!droits.!Le!
tableau!suivant!en!décrit!quelques"uns!:!!

$$
'

E32
©$O.Lamouchi$
E$
Gestion&des&Privilèges&
Privilèges$prédéfinis'
Exemples:!

Le! code! suivant! donne! puis! reprend! la! possibilité! d’autoriser! tout! privilège! à!
l’u&lisateur!chris2an_soutou.!

!
%  Il! est! à! noter! qu’un! u&lisateur! créé! simplement! (avec! les! rôles! CONNECT! et!
RESOURCE)!ne!peut!pas!lancer!la!console.!Pour!ce!faire,!il!faut!lui!aTribuer!le!
droit!SELECT!ANY!DICTIONARY.!
Sous!SYS!ou!SYSTEM!dans!SQL*Plus!:!
GRANT$SELECT$ANY$DICTIONARY$TO$u2lisateur*;!!
E33
©$O.Lamouchi$
E$
!!

'

Gestion&des&Rôles&
$  Un!rôle!(role)*est!un!ensemble!nommé!de!privilèges!(système!ou!objets).!!
$  Un!rôle!est!accordé!à!un!ou!plusieurs!u&lisateurs,!voire!à!tous!(u&lisa&on!de!
PUBLIC).!Ce!mécanisme!facilite!la!ges&on!des!privilèges.!!
$  Un!rôle!peut!être!aussi!aTribué!à!un!autre!rôle!pour!transmeTre!davantage!de!
droits.!

$  La!chronologie!des!ac&ons!à!entreprendre!pour!travailler!avec!des!rôles!est!la!
suivante!:!!
•  créer!le!rôle!(CREATE!ROLE)!;!
•  l’alimenter!de!privilèges!système!ou!objets!par!GRANT!;!
•  l’aTribuer!par!GRANT!à!des!u&lisateurs!(voire!à!tous!avec!PUBLIC),!ou!à!
d’autres!rôles!;!!
•  lui!ajouter!éventuellement!de!nouveaux!privilèges!système!ou!objets!par!
GRANT.!! E34
©$O.Lamouchi$
E$
Gestion&des&Rôles&
Exemple:!

•  Le!rôle!président!est!cons&tué!du!privilège!objet!SELECT!sur!la!table!Vols,!et!du!
privilège!système!DROP!de!tables!de!tout!schéma.!!

•  Il! hérite! aussi! des! privilèges! du! rôle! trésorier! cons&tué! du! privilège! système!
CREATE!TABLE!dans!tout!schéma.!!

E35
©$O.Lamouchi$
E$

Gestion&des&Rôles&
Créa3on$d’un$rôle$(CREATE$ROLE)'
Pour!pouvoir!créer!un!rôle!vous!devez!posséder!le!privilège!CREATE!ROLE.!
CREATE$ROLE$nomRôle*
[!NOT$IDENTIFIED$|!IDENTIFIED$$
{!BY!motdePasse*|!USING![schéma.]paquetage*|!EXTERNALLY$|!GLOBALLY!}!]!;!!

•  NOT$IDENTIFIED$indique!que!l’u&lisa&on!de!ce!rôle!est!autorisée!sans!mot!de!passe.!!
•  IDENTIFIED$signale!que!l’u&lisateur!doit!être!autorisé!par!une!méthode!(locale!par!un!
mot!de!passe,!applica&ve!par!un!paquetage,!externe!à!Oracle!et!globale!par!un!service!
d’annuaire)!avant!que!le!rôle!soit!ac&vé!par!SET$.!

•  ==>'Il*n’est*pas*possible*de*donner*le*privilège*REFERENCES'à*un*rôle.**

E36
©$O.Lamouchi$
E$
Gestion&des&Rôles&
Créa3on$d’un$rôle$(CREATE$ROLE)'
Exemples:$

Créa2on*des*trois*
rôles*

Alimenta2on*des*rôles*par*des*privilèges*

Alimenta2on*d’un*rôle*par*deux*autres*rôles*

Affecta2on*des*trois*rôles*à*des*u2lisateurs*

E37
©$O.Lamouchi$
E$

Gestion&des&Rôles&
Rôles$prédéfinis'
$  Oracle!propose!des!rôles!prédéfinis!aTribués!aux!u&lisateurs!SYSTEM!et!SYS.!!
$  Ils!sont!générés!lors!de!la!créa&on!de!la!base!par!des!scripts.!!
$  Il!est!possible!d’u&liser!ces!rôles!en!les!affectant!à!des!u&lisateurs!ou!en!enri"!
chissant!d’autres!rôles.!!

E38
©$O.Lamouchi$
E$
Gestion&des&Rôles&
Révoca3on$d’un$rôle'
!

Pour!pouvoir!annuler!un!rôle,!vous!devez!détenir!au!préalable!ce!rôle!avec!l’op&on!
ADMIN!OPTION!ou!avoir!reçu!le!privilège!système!GRANT!ANY!ROLE.!!
$
REVOKE$nomRôle*[,!nomRôle...]!
FROM${u2lisateur*|!nomRôle*|!PUBLIC}![,{u2lisateur*|!nomRôle*|!PUBLIC}]...!;!!
!

E39
©$O.Lamouchi$
E$

Gestion&des&Rôles&
Révoca3on$d’un$rôle'
Exemple:!
!

E40
©$O.Lamouchi$
E$
Gestion&des&Rôles&
Ac3va3on$d’un$rôle$(SET$ROLE)'
$  Quand!un!u&lisateur!se!connecte,!il!dé&ent!par!défaut!tous!les!privilèges!qui!lui!ont!été!
aTribués!soit!directement!soit!via!des!rôles.!
$  Les!rôles,!une!fois!créés!et!alimentés,!sont!donc!ac&fs!par!défaut.!
$  Durant! la! session! (SQL*Plus! ou! programme),! des! rôles! peuvent! être! désac&vés! puis!
réac&vés!par!la!commande!SET!ROLE.!!
$  Le!nombre!de!rôles!qui!peuvent!être!ac&fs!en!même!temps!est!limité!par!le!paramètre!
d’ini&alisa&on!MAX_ENABLED_ROLES.!!

SET$ROLE${!nomRôle*[IDENTIFIED$BY$motdePasse]![,nomRôle*[IDENTIFIED$BY$
motdePasse]]...!|!ALL$[EXCEPT!nomRôle*[,nomRôle]...]!|!NONE!}!;!!
•  IDENTIFIED*indique*le*mot*de*passe*du*rôle*si*besoin*est.**
•  ALL*ac2ve*tous*les*rôles*(non*iden2fiés)*accordés*à*l’u2lisateur*qui*exécute*la*
commande.*Ce\e*ac2va2on*n’est*valable*que*dans*la*session*courante.**
•  La*clause*EXCEPT*permet*d’exclure*des*rôles*accordés*à*l’u2lisateur*(mais*pas*via*
d’autres*rôles)*de*l’ac2va2on*globale.**
NONE'désac2ve*tous*les*rôles*dans*la*session*courante*(rôle*DEFAULT*inclus).**
• ©$O.Lamouchi$ E41
E$

Gestion&des&Rôles&
Ac3va3on$d’un$rôle$(SET$ROLE)'
Exemple:$$scénario!de!désac&va&on!et!d’ac&va&on!!
!
!

E42
©$O.Lamouchi$
E$
Gestion&des&Rôles&
Modifica3on$d’un$rôle$(ALTER$ROLE)'
$  La!modifica&on!d’un!rôle!est!au!niveau!de!l’iden&fica&on.!!
$  La! modifica&on! du! contenu! d’un! rôle! (ajout! ou! retrait! de! privilèges)! se! programme! à!
l’aide!des!commandes!GRANT!(pour!ajouter!un!privilège)!et!REVOKE!(pour!enlever!un!
privilège).!!
$  La!commande!ALTER!ROLE!permet!de!changer!le!mode!d’iden&fica&on!d’un!rôle.!!
$  L’u&lisateur! doit! être! propriétaire! du! rôle! ou! l’avoir! reçu! avec! l’op&on! WITH! ADMIN!
OPTION,!ou!détenir!le!privilège!ALTER!ANY!ROLE.!!
$  Les!paramètres!de!ceTe!commande!ont!les!mêmes!significa&ons!que!dans!le!cas!de!la!
créa&on!d’un!rôle!(CREATE!ROLE).!!
ALTER$ROLE$nomRôle*
[!NOT!IDENTIFIED!|!IDENTIFIED!!
{!BY!motdePasse*|!USING![schéma.]paquetage*|!EXTERNALLY!|!GLOBALLY!}!]!;!!

E43
©$O.Lamouchi$
E$

Gestion&des&Rôles&
Modifica3on$d’un$rôle$(ALTER$ROLE)'
Exemple:$l’administrateur!change!le!mot!de!passe!du!rôle!Supprime_Pilotes!sans!
prévenir!l’u&lisateur!!

E44
©$O.Lamouchi$
E$
Gestion&des&Rôles&
Suppression$d’un$rôle$(DROP$ROLE)'

$  Pour! pouvoir! supprimer! un! rôle! l’u&lisateur! doit! en! être! propriétaire! ou! en!
bénéficier!via!l’op&on!WITH$ADMIN$OPTION.!!

$  Le! privilège! DROP$ ANY$ ROLE$ vous! donne! le! droit! de! supprimer! un! rôle! dans!
tout!schéma.!!

$  La!commande!DROP$ROLE$supprime!le!rôle!et!le!désaffecte!en!cascade!aux!
bénéficiaires.!!

$  Les! u&lisateurs! des! sessions! en! cours! ne! sont! pas! affectés! par! ceTe!
suppression!qui!sera!ac&ve!dès!une!nouvelle!session.!!
$
DROP$ROLE$nomRôle;!!
E45
!©$O.Lamouchi$ E$

Utilisation&du&dictionnaire&des&données&

$  Le! dic&onnaire! des! données! (data* dic2onary)! est! une! par&e! majeure! d’une! base! de!
données!Oracle.!
$  Le!dic&onnaire!est!cons&tué!d’un!ensemble!de!tables!système!à!par&r!desquelles!sont!
définies! environ! six! cents! vues! dis&nctes.! Celles"ci! stockent! toutes! les! informa&ons!
décrivant!tous!les!objets!de!la!base!de!données.!!
$  Le!dic&onnaire!des!données!con&ent!:!!
•  la!défini&on!des!tables,!vues,!index,!clusters,!synonymes,!séquences,!procédures,!
fonc&ons,!paquetages,!déclencheurs,!etc.!;!!
•  !la!descrip&on!de!l’espace!disque!alloué!et!occupé!pour!chaque!objet!;!
•  !les!valeurs!par!défaut!des!colonnes!(DEFAULT)!;!
•  la!descrip&on!des!contraintes!de!vérifica&on!et!d’intégrité!référen&elle!;!
•  !le!nom!des!u&lisateurs!de!la!base!;!
•  les!privilèges!et!rôles!pour!chaque!u&lisateur!;!
•  des!informa&ons!d’audit!(accès!aux!objets)!et!d’autre!nature!(commentaires!par!
exemple).!!
*Toutes*les*tables*du*dic2onnaire*des*données*sont*accessibles*en*lecture*seulement,*elles*
appar2ennent* à* l’u2lisateur* SYS* et* sont* situées* dans* l’espace* de* stockage* (tablespace)*
SYSTEM.**
©$O.Lamouchi$
E46
E$
Utilisation&du&dictionnaire&des&données&
Quelques$vues$du$dic3onnaire$des$données$
l’objet$ Vues$
Objets$$ •  USER_OBJECTS!:!objets!appartenant!à!l’u&lisateur.!
Tables$ •  USER_TABLES!:!descrip&on!des!tables!rela&onnelles!de!l’u&lisateur!
(synonyme!TABS).!!
•  USER_ALL_TABLES!:!descrip&on!des!tables!rela&onnelles!et!objets!de!
l’u&lisateur.!!
Colonnes$ •  USER_TAB_COLUMNS!:!colonnes!des!tables!et!vues!(synonyme!COLS).!!
•  USER_UNUSED_COL_TABS!:!colonnes!éliminées!des!tables.!!
Contraintes$ •  USER_CONSTRAINTS!:!défini&on!des!contraintes!de!tables.!!
•  USER_CONS_COLUMNS!:!composi&on!des!contraintes!(colonnes).!!
U3lisateurs$ •  USER_USERS!:!caractéris&ques!de!l’u&lisateur!courant.!
•  DBA_USERS!et!ALL_USERS!:!caractéris&ques!de!tous!les!u&lisateurs.!!
Privilèges$ •  USER_TAB_GRANTS:! liste! des! autorisa&ons! sur! les! tables! et! les! vues! pour! lesquelles!
l’u&lisateur!est!le!propriétaire,!ou!ayant!donné!ou!reçu!l’autorisa&on.!!
E47
©$O.Lamouchi$
E$

Utilisation&du&dictionnaire&des&données&
Quelques$vues$du$dic3onnaire$des$données$
Objets$ Vues$
Privilèges$ •  USER_TAB_GRANTS_MADE! :! liste! des! autorisa&ons! sur! les! objets! appartenant! à!
l’u&lisateur.!$
•  USER_COL_GRANTS!:!colonnes!autorisées!à!l’accès!!
•  USER_COL_GRANTS_MADE!:!liste!des!autorisa&ons!sur!les!colonnes!des!tables!ou!des!vues!
appartenant!à!l’u&lisateur.!
•  USER_COL_PRIVS_MADE:! les! colonnes! pour! lesquelles! l’u&lisateur! est! propriétaire! ou!
bénéficiaire.!
•  USER_TAB_GRANTS_RECD:! liste! des! objets! pour! lesquels! l’u&lisateur! a! reçu! une!
autorisa&on.!
•  USER_COL_PRIVS_RECD:!!les!colonnes!pour!lesquelles!l’u&lisateur!a!reçu!une!autorisa&on.!!
Rôles$ •  DBA_ROLES!:!tous!les!rôles!existants.!!
•  DBA_ROLE_PRIVS!:!rôles!donnés!aux!u&lisateurs!et!aux!autres!rôles.!!
•  USER_ROLE_PRIVS!:!rôles!donnés!à!l’u&lisateur.$$
•  ROLE_ROLE_PRIVS$:!rôles!donnés!aux!autres!rôles.!ROLE_SYS_PRIVS!:!privilèges!système!
donnés!aux!rôles.!!
•  ROLE_TAB_PRIVS!:!privilèges!sur!les!tables!donnés!aux!rôles.!!
•  SESSION_ROLES!:!rôles!ac&fs!à!un!instant!t.*!
E48
©$O.Lamouchi$
E$
Utilisation&du&dictionnaire&des&données&
Quelques$vues$du$dic3onnaire$des$données$
Exemple$
$  La! requête! suivante! interroge! la! vue! USER_OBJECTS! et! permet! de! retrouver!
tous!les!objets!du!schéma!courant!(avec!la!date!de!créa&on)!!

E49
©$O.Lamouchi$
E$