0% ont trouvé ce document utile (0 vote)
232 vues49 pages

Gestion des utilisateurs dans Oracle DB

Le document décrit le dictionnaire de données Oracle, qui contient des informations sur la structure et les objets d'une base de données Oracle. Il explique les caractéristiques, les tables et les vues du dictionnaire, ainsi que la façon d'interroger le dictionnaire pour obtenir des métadonnées sur les objets de la base de données.

Transféré par

Hanan Talib
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
232 vues49 pages

Gestion des utilisateurs dans Oracle DB

Le document décrit le dictionnaire de données Oracle, qui contient des informations sur la structure et les objets d'une base de données Oracle. Il explique les caractéristiques, les tables et les vues du dictionnaire, ainsi que la façon d'interroger le dictionnaire pour obtenir des métadonnées sur les objets de la base de données.

Transféré par

Hanan Talib
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPTX, PDF, TXT ou lisez en ligne sur Scribd

Chapitre IV:

Administration des
et gestion de comptes d’une base
de données Oracle

 Dictionnaire de Données Oracle


 Gestion des utilisateurs
 Privilère , Roles et Profiles utilisateurs

1
Dictionnaire de Données Oracle

 Définition: C’est un certain nombre de tables et vues


qui contient un ensemble d’information liée à l’activité et
au fonctionnement de la base de donnée

 Et ce pour:
Récupérer les information nécessaire à l’exploitation et à
l’administration de la base de donnée Oracle

2
Dictionnaire de Données Oracle

 Caractéristiques
 Appartient à l’utilisateur SYS
 Stocke les informations sur:
 La base de données (structure logique et physique)
 Le nom et les définitions des différents objets crées
 Les contraintes sur les objets
 Les users de connexions et leur caractéristiques (ex:
privilèges)

3
Dictionnaire de Données Oracle

Toutes les informations contenues dans les tables système du


dictionnaire des données et accessibles au travers de vues sont
Majuscule
codées en MAJUSCULES.
Exp: selecte * from all_tables where table_name like ‘JOBS’;

Le dictionnaire des données est mis automatiquement à jour après


chaque instruction SQL du LMD (INSERT, UPDATE, DELETE,

4 …).
Dictionnaire de Données Oracle

Les vues du dictionnaire de données sont :


DBA_* : informations sur les objets de tous les schémas
USER_* : informations sur les objets appartenant au compte connecté
ALL_* : informations des vues USER_* et des informations sur les objets
pour lesquels des privilèges ont été octroyés au groupe PUBLIC ou à
l’utilisateur courant
Liste des vues du dictionnaire
• DICTIONARY ou DICT

5
Dictionnaire de Données Oracle

Démarche à suivre
La démarche à suivre afin d’interroger correctement le dictionnaire des données à
propos d’un objet est la suivante :
Étape 1 : trouver le nom de la vue en consultant DICTIONARY
Étape 2 : choisir les colonnes de la vue à sélectionner (utiliser DESC) ;
Étape 3 : interroger la vue en exécutant une requête SELECT contenant les colonnes
intéressantes.

NB : Étape 1 peut être omise si on connaît déjà le nom de la vue (ce sera le cas pour
les vues usuelles que vous aurez déjà utilisées à plusieurs reprises).
6
Dictionnaire de Données Oracle
Recherche du nom d’une vue
L’extraction du nom des vues qui concernent un objet est rendue possible
par l’interrogation de la vue DICTIONARY (de synonyme DICT)

SQL>DESC DICTIONARY Nom NULL Type


---------- ---- --------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000)
SELECT * FROM DICTIONARY
WHERE table_name LIKE '%SEQUENCE%';  TABLE
 INDEX
 IRIGGER
TABLE_NAME COMMENTS  VIEW
---------------- -------------------------  CONSTRAINT
ALL_ SEQUENCES Description of SEQUENCEs accessible to the user
DBA_ SEQUENCES Description of all SEQUENCEs in the database
USER_ SEQUENCES Description of the user's own SEQUENCEs

7
Dictionnaire de Données Oracle
Interroger la vue
L’interrogation de la vue sur la base des colonnes choisies est l’étape finale de
la recherche de données dans le dictionnaire

 Interrogeons le dictionnaire des données à travers les quatre premières


colonnes de la vue USER_SEQUENCES pour retrouver les
caractéristiques de ces deux séquences.
 La valeur courante de la séquence n’est pas stockée dans cette vue, elle
est, en revanche, accessible via la fonction CURRVAL.
SEQUENCE_NAM MIN_VAL, MAX_VAL, INCREMENT_BY
SQL> DEPARTMENTS_SEQ 1 9990 10
SELECT SEQUENCE_NAME, EMPLOYEES_SEQ 1 9999999999 1
MIN_VALUE, MAX_VALUE, LOCATIONS_SEQ 1 9900 100
INCREMENT_BY MA_SEQUENCE 1 999999999 1
FROM USER_SEQUENCES ; MA_SEQUENCE2 1 9999999999 2
SQ_ID_TRANSACTION 1 10000 1

8
Recherche d’un code source ou
d’une contrainte

Le code source PL/SQL des packages, procedure, triggers,


fonction est maintenu est peut être consulté par les tables de
dictionnaire de données USER_SOURCE et ALL_SOURCE.
Pour consulter le code source de Specification :
SELECT text FROM user_source
WHERE name = 'COMM_PKG' AND type = 'PACKAGE';
Pour consulter le code source de body :
SELECT text FROM user_source
WHERE name = 'COMM_PKG' AND type = 'PACKAGE BODY';

Pour consulter les contraintes :


SELECT CONSTRAINT_NAME, CONSTRAINT_TYPE,
TABLE_NAME from DBA_CONSTRAINTS;
9
Dictionnaire de Données Oracle
Principales vues du dictionnaire des données

Nature de l’objet Vues


----------------------- ------ -------------------------------
Objets (au sens général) USER_OBJECTS : objets appartenant à l’utilisateur (synonyme OBJ).
USER_ERRORS : erreurs après compilation des objets PL/SQL stockés
(procédures, fonctions, paquetages, déclencheurs).
USER_STORED_SETTINGS : paramètres des objets PL/SQL stockés.
USER_SOURCE : source des objets PL/SQL stockés.

Tables USER_TABLES : description des tables relationnelles de l’utilisateur


(synonyme TABS).
USER_ALL_TABLES : description des tables relationnelles et objets de
l’utilisateur.

Colonnes USER_TAB_COLUMNS : colonnes des tables et vues (synonyme COLS).


USER_UNUSED_COL_TABS : colonnes éliminées des tables.

Index USER_INDEXES : description des index (synonyme IND).


USER_IND_EXPRESSIONS : expressions fonctionnelles des index.
USER_IND_COLUMNS : colonnes qui composent les index.

Contraintes USER_CONSTRAINTS : définition des contraintes de tables.


USER_CONS_COLUMNS : composition des contraintes (colonnes).
Dictionnaire de Données Oracle
Principales vues du dictionnaire des données

 Nature de l’objet Vues


----------------------- ------ -------------------------------
Vues USER_VIEWS : description des vues de l’utilisateur

Synonymes USER_SYNONYMS : description des synonymes privés d’un utilisateur


DBA_SYNONYMS et ALL_SYNONYMS : description de tous les
synonymes (privés et publics).

Séquences Déjà étudié en début de section.

Commentaires USER_TAB_COMMENTS : commentaires à propos des tables ou vues.


USER_COL_COMMENTS : commentaires à propos des colonnes des
tables et vues.

Utilisateurs USER_USERS : caractéristiques de l’utilisateur courant.


DBA_USERS et ALL_USERS : caractéristiques de tous les utilisateurs.
11 .
Dictionnaire de Données Oracle
Principales vues du dictionnaire des données

Privilèges USER_TAB_GRANTS : liste des autorisations sur les tables et les vues pour
lesquelles l’utilisateur est le propriétaire, ou ayant donné ou reçu l’autorisation.
USER_TAB_GRANTS_MADE : liste des autorisations sur les objets appartenant à
l’utilisateur.
USER_COL_GRANTS : colonnes autorisées à l’accès
USER_COL_GRANTS_MADE : liste des autorisations sur les colonnes des tables ou des vues
appartenant à l’utilisateur.
USER_COL_PRIVS_MADE : informations sur les colonnes pour lesquelles l’utilisateur est
propriétaire ou bénéficiaire.
USER_TAB_GRANTS_RECD : liste des objets pour lesquels l’utilisateur a reçu une autorisation.
USER_COL_PRIVS_RECD : informations sur les colonnes pour lesquelles l’utilisateur a reçu
une autorisation.

Rôles DBA_ROLES : tous les rôles existants.


DBA_ROLE_PRIVS : rôles donnés aux utilisateurs et aux autres rôles.
USER_ROLE_PRIVS : rôles donnés à l’utilisateur.
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 actifs à un instant t
12
Introduction

Qu’est ce que une base de données pour les


organismes ( société , établissement, ministère …) ?

C’est un ensemble des informations et données centralisées qui


sont intègres, confidentielles, disponibles, tracées et dont
l’exploitation et utilisation sont conformes aux règles.

C’est les 5 principes de la sécurité de l’information


13
Sécurité de la base de Données
comment appliquer ces Principes

 Pour appliquer ces principe : il faut

 Authentification

 Autorisation

14
Authentification

Chaque BD Oracle possède une liste de noms d’utilisateurs, et un mot de


passe associé.
 Vérifier quand un utilisateur veut utiliser des données, des ressources, des applications,
par le système d’exploitation, le réseau, la base Oracle.

 Authentification dans Oracle : cryptage du mot de passe, verrouillage des comptes,


expiration du mot de passe, vérification de la complexité du mot de passe.

A la création d’un nouvel utilisateur, on définit


 Un profil délimitant l’accès aux ressources
 Mot de passe
 Autres paramètres …..

15
Sécurité de la base de Données
Autorisation

Les autorisations reposent sur ce qui suit :


 Tous les éléments SQL ont un propriétaire. Un propriétaire d’un objet
possède tous les droits (privilèges) sur cet objet.
 On peut donner des droits à d’autres utilisateurs pour accéder aux données,
pour les modifier, pour obtenir des ressources, …
 Les droits sont accordés (ou refusés) à différents niveaux (objets, schémas,
tables, tuples, CPU, …).
 On peut accorder des droits individuellement, ou par groupes.

16
Sécurité de la base de Données
Administration de base de données

Pour assurer L’authentification et l’autorisation, il


faut être en mesure de bien gerer les :
 Utilisateurs
 Profiles
 Droits et privilèges
 Rôles
On est bien dans l’administration et la gestion des
17Utilisateurs de la bases de données
Gestion des utilisateurs
classification

Les types d’utilisateurs, leurs fonctions et leur nombre peuvent varier d’une base à une autre.
Néanmoins, on peut les classifier de la manière suivante :
 Le DBA (DataBase Administrator). Il en existe au moins un. Une petite base peut n’avoir
qu’un seul administrateur. Une base importante peut en regrouper plusieurs qui se
partagent les tâches suivantes :
 installation et mises à jour de la base et des outils éventuels ;
 Gestion de l’espace disque et des espaces pour les données (tablespaces) ;
 Gestion des utilisateurs et de leurs objets (s’ils ne les gèrent pas eux-mêmes) ;
 Optimisation des performances ;
 Sauvegardes, restaurations et archivages ;
 Contact avec le support technique d’Oracle.

18
Gestion des utilisateurs
classification

 L’administrateur réseaux (qui peut être le DBA) se charge de la configuration


de l’intergiciel (middleware) Oracle Net au niveau des postes clients.
 Les développeurs qui conçoivent et mettent à jour la base. Ils peuvent aussi
agir sur leurs objets (création et modification des tables, index, séquences, etc.).
Ils transmettent au DBA leurs demandes spécifiques (stockage, optimisation,
sécurité).
 Les administrateurs d’applications qui gèrent les données manipulées par
l’application ou les applications. Pour les petites et les moyennes bases, le DBA
joue ce rôle.
 Les utilisateurs qui se connectent et interagissent avec la base à travers les
applications ou à l’aide d’outils (interrogations pour la génération de rapports,
ajouts, modifications ou suppressions d’enregistrements).

19
Gestion des utilisateurs
création
 Simple Syntaxe

Une simple syntaxe SQL de création d’un utilisateur est la


suivante :

CREATE USER utilisateur IDENTIFIED { BY motdePasse


[PROFILE nomProfil ]
[PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ] ;

Syntaxe Simple très réduite :

CREATE USER utilisateur IDENTIFIED BY motdePasse

20
Gestion des utilisateurs
création (suite)

 IDENTIFIED BY motdePasse permet d’affecter un mot de passe à un utilisateur

local (cas le plus courant et le plus simple).

● PROFILE nom Profil affecte un profil (caractéristiques système relatives au CPU et aux

connexions) à l’utilisateur

- En l’absence de profil, le profil DEFAULT est affecté à l’utilisateur..

● PASSWORD EXPIRE pour obliger l’utilisateur à changer son mot de passe à la première

connexion (par défaut il est libre). Le DBA peut aussi changer ce mot de passe.

21 ● ACCOUNT pour verrouiller ou libérer l’accès à la base (par défaut UNLOCK).


Gestion des utilisateurs
création (exemple )

Instruction SQL Resultat


CREATE USER Paul Paul est déclaré « utilisateur », ses
IDENTIFIED BY Pokemon objets (pas plus de 10 MO) seront
DEFAULT TABLESPACE USERS stockés dans USERS,
QUOTA 10M ON USERS certaines de ses opérations
TEMPORARY TABLESPACE TEMP nécessiteront de ranger des données
QUOTA 5M ON TEMP dans TEMP (pas plus de 5 MO). Il
PASSWORD EXPIRE; devra changer son mot de passe à la
première connexion.

CREATE USER Paul2 Paul2 est déclaré « utilisateur », ses


IDENTIFIED BY Pokemon objets seront stockés dans USERS,
DEFAULT TABLESPACE USERS son espace temporaire est SYSTEM.
ACCOUNT LOCK; Le compte est pour l’instant bloqué
Par défaut, les utilisateurs, une fois créés n’ont aucun droit sur la base de données
22 sur laquelle ils sont connectés. La section « Privilèges » étudie ces droits.
Gestion des utilisateurs
Modification d’un Utilisateur

 Pour Modifier le mot de passe de l’utilisateur (tache la plus utilisé) on utilise la


commande suivante:

ALTER USER Nom_user IDENTIFIED BY nouveau_mot_pass

 Pour pouvoir modifier les caractéristiques d’un utilisateur (autres que celle du mot
de passe) voila la Syntaxe. Elle contient instruction qui reprend les options
étudiées lors de la création d’un utilisateur.

23
Gestion des utilisateurs
Modification d’un Utilisateur
(Suite)

ALTER USER utilisateur


[ IDENTIFIED { BY password [ REPLACE old_password ] |
[ PROFILE nomProfil ]
[ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ;

 PASSWORD EXPIRE oblige l’utilisateur à changer son mot de passe à la


prochaine connexion.

 autres changements seront opérationnels aux prochaines sessions de l’utilisateur


mais pas à la session courante (cas de l’utilisateur qui déclare un espace de travail
alors qu’il est actuellement connecté à un autre).

24
Gestion des utilisateurs
Modification d’un Utilisateur
(Exemples)
Exemples
Le tableau suivant décrit des modifications des utilisateurs créés auparavant :
Instruction SQL Résultat
ALTER USER Paul Paul a changé de mot de passe, son espace
IDENTIFIED BY X_Men temporaire est illimité dans TEMP. Il ne devra
TEMPORARY TABLESPACE TEMP plus changer son mot de passe à la première
QUOTA UNLIMITED ON TEMP; connexion.

ALTER USER Paul2 L’espace de travail de Paul2 est limité à 10


DEFAULT TABLESPACE USERS mégaoctets dans USERS. Le compte est
QUOTA 10M ON USERS débloqué.
ACCOUNT UNLOCK;

25
Gestion des utilisateurs
Suppression d’un utilisateur (DROP USER)

Syntaxe
La syntaxe SQL pour supprimer un utilisateur est la suivante :
DROP USER utilisateur [CASCADE];
Oracle ne supprime pas par défaut un utilisateur s’il possède des objets (tables, séquences,
index, déclencheurs, etc.).
L’option CASCADE force la suppression et détruit tous les objets du schéma de l’utilisateur.
Conséquences
 Les contraintes d’intégrité d’autres schémas qui référençaient des tables du schéma à
détruire sont aussi supprimées.
 Les vues, synonymes, procédures ou fonctions cataloguées définis à partir du schéma
détruit mais présents dans d’autres schémas ne sont pas supprimés mais invalidés.
 Les rôles définis par l’utilisateur à supprimer ne sont pas détruits par l’instruction DROP

26USER.
Les Profiles
Introduction

 Un profil regroupe des caractéristiques système (ressources) qu’il est possible d’affecter
à un ou plusieurs utilisateurs.
 Un profil est identifié par son nom.
 Un profil est créé par CREATE PROFILE, modifié par ALTER PROFILE et supprimé par
DROP PROFILE. Il est affecté à un utilisateur lors de sa création par CREATE USER ou
après que l’utilisateur est créé par ALTER USER. Le profil DEFAULT est affecté par
défaut à chaque utilisateur si aucun profil défini n’est précisé.

 Création d’un profil (CREATE PROFILE)

Pour pouvoir créer un profil vous devez posséder le privilège CREATE PROFILE. La syntaxe
SQL est la suivante

27
Les Profiles
Création -Syntaxe

:
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 } { entier | UNLIMITED
| DEFAULT }
| PRIVATE_SGA {entier[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 } }

28
Les Profiles
Création – Options et paramètres

Les options principales sont les suivantes :


● SESSIONS_PER_USER : nombre de sessions concurrentes autorisées.
● CPU_PER_SESSION : temps CPU maximal pour une session en centièmes de secondes.
● CPU_PER_CALL : temps CPU autorisé pour un appel noyau en centièmes de secondes.
● CONNECT_TIME : temps total autorisé pour une session en minutes (pratique pour les
examens de TP minutés).
● IDLE_TIME : temps d’inactivité autorisé, en minutes, au sein d’une même session (pour
les étudiants qui ne clôturent jamais leurs sessions).
● PRIVATE_SGA : espace mémoire privé alloué dans la SGA (System Global Area).
● FAILED_LOGIN_ATTEMPTS : nombre de tentatives de connexion avant de bloquer l’utilisateur
(pour un code PIN, c’est trois).
● PASSWORD_LIFE_TIME : nombre de jours de validité du mot de passe (il expire s’il n’est
pas changé au cours de cette période).
● PASSWORD_REUSE_TIME : nombre de jours avant que le mot de passe puisse être utilisé à
nouveau. Si ce paramètre est initialisé à un entier, le paramètre PASSWORD_REUSE_MAX
doit être passé à UNLIMITED.
29
Les Profiles
Création – Options et paramètres (suite)

 PASSWORD_REUSE_MAX : nombre de modifications de mot de passe avant de


pouvoir réutiliser le mot de passe courant. Si ce paramètre est initialisé à un entier, le
paramètre PASSWORD_REUSE_TIME doit être passé à UNLIMITED.

 PASSWORD_LOCK_TIME : nombre de jours d’interdiction d’accès à un compte


après que le nombre de tentatives de connexions a été atteint (pour la carte bleue, ça
dépend de plein de choses, de toute façon vous en recevrez une autre toute neuve
mais toute chère…).

 PASSWORD_GRACE_TIME : nombre de jours d’une période de grâce qui prolonge


l’utilisation du mot de passe avant son changement (un message d’avertissement
s’affiche lors des connexions). Après cette période le mot de passe expire.

 Les limites des ressources qui ne sont pas spécifiées sont initialisées avec les
valeurs du profil DEFAULT. Par défaut toutes les limites du profil DEFAULT sont à
UNLIMITED et on peut les changer . Il est possible de visualiser chaque paramètre
30 de tout profil en interrogeant certaines vues du dictionnaire des données (voir le
Les Profiles
Création – Options et paramètres (suite)
Exemple Le tableau suivant décrit la création d’un profil et l’explication de ses options :

Instructions SQL Explication

CREATE PROFILE profil_Etudiants LIMIT • 3 sessions simultanées autorisées.


SESSIONS_PER_USER 3 • Un appel système ne peut pas consommer plus
CPU_PER_CALL 3000 de 30 secondes de CPU.
CONNECT_TIME 45 • Chaque session ne peut excéder 45 minutes.
LOGICAL_READS_PER_CALL 1000 • Un appel système ne peut lire plus de 1 000 blocs
PRIVATE_SGA 15K de données en mémoire et sur le disque.
IDLE_TIME 40 • Chaque session ne peut allouer plus de 15 ko de
FAILED_LOGIN_ATTEMPTS 5 mémoire en SGA.
PASSWORD_LIFE_TIME 70 • Pour chaque session, 40 minutes d'inactivité maximum
PASSWORD_REUSE_TIME 60 sont autorisées.
PASSWORD_REUSE_MAX UNLIMITED • 5 tentatives de connexion avant blocage du compte.
PASSWORD_LOCK_TIME 1 • Le mot de passe est valable pendant 70 jours et il
PASSWORD_GRACE_TIME 10; faudra attendre 60 jours avant qu’il puisse être utilisé à
nouveau.
• 1 seul jour d’interdiction d’accès après que les
5 tentatives de connexion ont été atteintes.
• La période de grâce qui prolonge l’utilisation du
mot de passe avant son changement est de 10 jours.

31
Les Profiles
Modification d’un profil (ALTER PROFILE)

 L’affectation de ce profil à l’utilisateur Paul est réalisée via l’instruction ALTER


USER suivante :

ALTER USER Paul PROFILE profil_Etudiants;

 Modification d’un profil (ALTER PROFILE)


 Pour pouvoir modifier un profil, vous devez posséder le privilège ALTER PROFILE.
La syntaxe SQL est la suivante, elle utilise les options étudiées lors de la création
d’un profil :
 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


cette commande (ALTER PROFILE DEFAULT LIMIT…).
32
Les Profiles
Suppression d’un profil (DROP PROFILE)

Pour pouvoir supprimer un profil, vous devez posséder le privilège DROP PROFILE.
NB: Le profil DEFAULT ne peut pas être supprimé.

La syntaxe ,SQL de suppression est la suivante :

DROP PROFILE nomProfil [CASCADE] ;


 CASCADE permet de supprimer le profil même si des utilisateurs en sont pourvus
(optiono bligatoire dans ce cas) et affecte le profil DEFAULT à ces derniers.

33
Privilèges
Introduction (type de privilèges)

 Depuis le début du ce cours nous avons parlé de privilèges, il est temps à présent de
préciser ce que recouvre ce terme. Un privilège) (sous-entendu utilisateur est un droit
d’exécuter une certaine instruction SQL , ou un droit d’accéder à un certain objet d’un
autre schéma Les privilèges système diffèrent sensiblement d’un SGBD à un autre. En
revanche, les privilèges objets sont les mêmes et sont tous pris en charge via les
instructions GRANT et REVOKE.
Il y a deux type de privilèges :
 Privilège système : Est un droit d’exécuter une certaine instruction SQL Create Alter
, DROP , Etc …
 Privilège objet): Droit d’accéder à un certain objet d’un autre schéma SELECT,
DELETE, INSERT etc…
34
Privilèges Système
Attribution de privilèges système (GRANT)

 Attribution de privilèges système (GRANT)


 La commande GRANT permet d’attribuer un ou plusieurs privilèges à un ou
plusieurs bénéficiaires.
 Nous étudierons les rôles dans la section suivante. L’utilisateur qui exécute cette

commande doit avoir reçu lui-même le droit de transmettre ces privilèges. Dans le cas
des utilisateurs SYS et SYSTEM, la question ne se pose pas car ils ont tous les droits.
La syntaxe est la suivante :

GRANT { privilègeSystème | nomRôle | ALL PRIVILEGES }


TO { utilisateur | nomRôle | PUBLIC
[ WITH ADMIN OPTION ] ;

35
Privilèges Système
Attribution de privilèges système (suite)

 privilègeSystème : description du privilège système (exemple CREATE TABLE,


CREATE SESSION, etc.).
 ALL PRIVILEGES : tous les privilèges système.
 PUBLIC : pour attribuer le(s) privilège(s) à tous les utilisateurs.
 WITH ADMIN OPTION : permet d’attribuer aux bénéficiaires le droit de
retransmettre le(s) privilège(s) reçu(s) à une tierce personne (utilisateur(s) ou
rôle(s)).

Grant create trigger to ORA_ESTM


Grant create procedur e to TOTO
Grant create session to HR
Grant create vi ew to ORA_ESTM
grant unlimited tablespace to HR
36
Privilèges Système
Attribution de privilèges système (Exemple)

 Le tableau suivant décrit l’affectation de quelques privilèges système en donnant


les explications associées :

Administrateur Explication
GRANT CREATE SESSION, Paul peut se connecter à la base sous
CREATE SEQUENCE TO Paul; SQL*Plus par un outil (la console par
exemple), par programme. Il peut
créer des séquences.
GRANT CREATE TABLE TO Paul peut créer des tables dans son
Paul with ADMIN OPTION schéma et peut transmettre ce
privilège à un tiers.
GRANT CREATE SESSION, Paul2 peut se connecter à la base,
CREATE ANY TABLE, créer et détruire des tables dans tout
DROP ANY TABLE TO Paul2; schéma.
37
Privilèges Système
Retirer de privilèges système (REVOKE)

 Révocation de privilèges système (REVOKE)


La révocation d’un ou de plusieurs privilèges est réalisée par l’instruction REVOKE. Cette
commande permet d’annuler un privilège système ou un rôle d’un utilisateur ou d’un
rôle. Pour pouvoir révoquer un privilège ou un rôle, vous devez détenir au préalable
ce privilège avec l’option WITH ADMIN OPTION.
La syntaxe est la suivante :
REVOKE
{ privilègeSystème | nomRôle | ALL PRIVILEGES }
FROM { utilisateur | nomRôle | PUBLIC } [,{ utilisateur | nomRôle } ]… ;
Les options sont les mêmes que pour la commande GRANT.
● ALL PRIVILEGES (valable si l’utilisateur ou le rôle ont tous les privilèges système).
 PUBLIC pour annuler les privilège à tout les utilisateur

38
Privilèges Système
Retirer de privilèges système (Exemple de
revoke)

 Le tableau suivant décrit la révocation de certains privilèges acquis


des utilisateurs de notre exemple

Administrateur Explication
REVOKE Paul et Paul2 ne peuvent plus se connecter à la
CREATE SESSION base. Ils conservent néanmoins leurs autres
FROM PUAL1, privilèges. Un tiers peut ainsi créer par exemple
PAUL2; des tables dans leur schéma (ils ont tous deux le
privilège CREATE TABLE).
REVOKE ALL Commande incorrecte car Paul2 n’a pas reçu tous
PRIVILEGES les privilèges système.
FROM Paul2;

39
Privilèges Objets
Introduction

 Privilèges objets
Les privilèges objets sont relatifs aux données de la base et aux actions sur les
objets (table,vue, séquence, procédure). Chaque type d’objet a différents privilèges
associés comme l’indique le tableau suivant. Nous ne montrons ici que quelques-unes
des possibilités de privilèges objets.

40
Privilèges Objets
Syntaxe d’affectation de privilkège (Grant)

Syntaxe générale
 GRANT { privilègeObjet | nomRôle | ALL PRIVILEGES }
[(colonne1 [,colonne2]…)]
[, { privilègeObjet | nomRôle | ALL PRIVILEGES }] [(colonne1 [,colonne2]…)]…
ON { [schéma.]nomObjet TO { utilisateur | nomRôle | PUBLIC } [WITH GRANT
OPTION] ;

Syntaxe la plus utilisée

Grant { privilègeObjet | nomRôle | ALL PRIVILEGES } on {objets} to Utilisateur


41
Privilèges Objets
Syntaxe d’affectation de privilkège (Grant -suite)

 PrivilègeObjet : description du privilège objet (ex : SELECT, DELETE, etc.).


colonne précise la ou les colonnes sur lesquelles se porte le privilège INSERT,ou
UPDATE (exemple : UPDATE(typeAvion) pour n’autoriser que la modification de la
colonne typeAvion).

 ALL PRIVILEGES donne tous les privilèges avec l’option GRANT OPTION) l’objet
en question.

 PUBLIC : pour attribuer le(s) privilège(s) à tous les utilisateurs.

 WITH GRANT OPTION : permet de donner aux bénéficiaires le droit de


retransmettre les privilèges reçus à une tierce personne (utilisateur(s) ou rôle(s)).

42
43
Privilèges Objets
Retirer les privilèges (REVOKE )

 Révocation de privilèges objets


 Pour pouvoir révoquer un privilège objet, vous devez détenir au préalable cette
permission ou avoir reçu le privilège système ANY OBJECT PRIVILEGE. Il n’est
pas possible d’annuler un privilège objet qui a été accordé avec l’option WITH
GRANT OPTION.
REVOKE { privilègeObjet | ALL PRIVILEGES } [(colonne1 [,colonne2]…)]
ON { [schéma.]nomObjet | { DIRECTORY nomRépertoire
| JAVA { SOURCE | RESOURCE } [schéma.]nomObjet } }
FROM { utilisateur | nomRôle | PUBLIC
[CASCADE CONSTRAINTS] ;

44
Privilèges Objets
Retirer les privilèges (REVOKE - suite )

 Certaines options sont similaires à celles de la commande GRANT. Les autres


sont expliquées ci-après :

 CASCADE CONSTRAINTS concerne les privilèges REFERENCES ou ALL


PRIVILEGES. Cette option permet de supprimer la contrainte référentielle entre
deux tables de schémas distincts.

45
Privilèges Objets
Retirer les privilèges (REVOKE - suite )
Exemple

REVOKE UPDATE, SELECT christian_soutou ne peut plus


ON Pilote FROM christian_soutou; modifier ni lire la
table Pilote de olivier_teste.
REVOKE REFERENCES Commande incorrecte car l’option
ON Pilote FROM christian_soutou; CASCADE CONSTRAINT
doit être utilisée.
REVOKE REFERENCES christian_soutou ne peut plus
ON Pilote FROM christian_soutou bénéficier de la table
CASCADE CONSTRAINTS; Pilote pour programmer une
contrainte référentielle via une clé
étrangère.

46
Rôles
Introduction

Les rôles sont des groupes nommés de privilèges, qu’on accorde, en groupe,
à des utilisateurs ou à d’autres rôles.

 Permet de gérer les privilèges


– pour une application (ex: ensemble de privilèges nécessaires pour
exécuter l’application Paye)

– Pour un groupe d’utilisateurs (privilèges des directeurs de département,


des responsables de la paye, etc.)

47
Rôles
Exemple
 Définition du role ‘manager’ :

sql>CREATE ROLE manager;


sql>GRANT CREATE VIEW, CREATE PROCEDURE TO manager;
sql>GRANT SELECT, INSERT, UPDATE(SAL) ON emp TO manager;
sql>GRANT SELECT, INSERT, UPDATE ON dept TO manager;
GRANT manager TO user1, user2, user3;
 Pour annuler :

sql>REVOKE manager FROM user1;


sql>REVOKE INSERT ON emp FROM manager;
Pour annuler un role, il faut avoir le privilège GRANT ANY ROLE, ou avoir les
privilèges WITH ADMIN OPTION.

48
Rôles
Rôles prédéfinis

Oracle a des rôles prédéfinis :


 CONNECT : INSERT, UPDATE, DELETE, SELECT sur les relations dont
on a les privilèges. Permet de créer des vues.
 RESOURCE : crée les tables, les vues, les triggers, les procédures.
 DBA : tous les privilèges système avec ADMIN OPTION
 EXP_FULL_DATABASE : tous les privilèges pour exporter les données
de la base
 IMP_FULL_DATABASE : tous les privilèges pour importer des données.

49

Vous aimerez peut-être aussi