Vous êtes sur la page 1sur 64

Administration Basique d’une base de

données Oracle

Module: Administration des bases de données Année universitaire: 2022/2023


Plan

❑ Dictionnaire de Données Oracle

❑ Securité d’une base de données

❑ Gestion des utilisateurs

❑ Privilère , Roles et Profiles


utilisateurs

2
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

3
Exemple
CREATE TABLE Employes (id , nom , departement );
CREATE TABLE Departements (id , nom );

SELECT e.nom as Employe, d.nom as Departement FROM Employes e,Departements d


WHERE e.departement = d.id;

Si, par contre, on crée une vue :


CREATE VIEW ToutLeMonde AS
SELECT e.nom as Employe, d.nom as Departement
FROM Employes e,Departements d
WHERE e.departement = d.id;

On pourra alors écrire la requête SELECT ci-dessus bien plus simplement, la jointure ne
sera plus visible :
SELECT * FROM ToutLeMonde ;

4
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)
✓ L’audit sur une base de données
5
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 codées
Majuscule
en MAJUSCULES.
Exp: selecte * from all_table where table_name like ‘JOBS’;

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


chaque instruction SQL du LMD (INSERT, UPDATE, DELETE, …).

6
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

7
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). 8
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 ❖TABLE
'%SEQUENCE%'; ❖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

9
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

10
Dictionnaire de Données Oracle
Recherche d’un code source

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';
11
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.
13
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

14
Dictionnaire de Données Oracle
Vues Dynamiques

Identifiées avec le préfixe V_$ (synonym V$)


• Accessible uniquement pour l’utilisateur SYS et pour
les utilisateurs ayant le privilège SYSDBA

Liste des vues dynamiques


• V$FIXED_TABLE

15
Sécurité de la base de Données
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


16
Sécurité de la base de Données
Introduction

La sécurité de l’information est vitale. Elle conditionne l’activité


économique des entreprises et la confiance dans les organismes
publics
• La divulgation volontaire ou accidentelle de données financières
ou privées peut avoir des conséquences fâcheuses sur le plan
• Economique, commercial et…juridique
• 25 % des incidents sont le fait de personnels internes
• 50 % sont consécutifs à des pertes ou des vols de matériels divers

17
Sécurité de la base de Données
Principes

Confidentialité :Empêcher la consultation de données


sensibles par des personnes non autorisées

• Qui a accès authentification ?


• Quels sont les mécanismes de contrôle d’accès ?
• Qui sont Les utilisateurs à super privilèges ?
• Les données sont-elles protégées par du chiffrement:
• Lors de leur stockage ?
• Durant leurs mouvements ?

18
Sécurité de la base de Données
Principes

Intégrité :Prévenir la modification des données par des


personnes non autorisées
Qui peut modifier l’information ?
• Quels contrôles sont en place pour limiter les accès ? Pour
donner les accès ?
• Quels sont les mécanismes permettant de vérifier si
l’information a été changée ?
• Quels moyens sont utilisés par les applications pour contrôler
la cohérence des informations ?

19
Sécurité de la base de Données
Principes

Traçabilité / Conformité
◼ Permettre de garder la trace des actions effectuées sur les
systèmes, à des fins de prévention, de dissuasion et d’audit des
incidents
◼ Qui a accédé ?
◼ Quelle information sur l’activité est capturée ?
◼ Comment sont protégés les référentiels d’audit ?
◼ Une exploitation systématique des audits est-elle en place ?

20
Sécurité de la base de Données
Principes

◼ Disponibilité
◼ Les utilisateurs ayant le droit de faire
certaines actions doivent pouvoir
accéder aux données correspondantes.
◼ Les SGBD fournissent différents
moyens pour garantir la sécurité :
authentification, contrôle d’accès,
mécanismes d’audit, vues.
21
Sécurité de la base de Données
comment appliquer ces Principes

◼ Pour appliquer ces principe : il faut

❑ Authentification

❑ Autorisation

22
Sécurité de la base de Données
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 espace de stockage des tables par défaut (default tablespace),
➢ un espace de stockage de tables temporaire (temporary tablespace),
➢ des quotas sur ces espaces.
➢Un profil délimitant l’accès aux ressources
23
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.

24
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 gêner les :
❑ Utilisateurs

❑ Profiles

❑ Droits et privilèges

❑ Rôles
On est bien dans l’administration des bases de données
25
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.


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

27
Gestion des utilisateurs
création
◼ Syntaxe Complete
La syntaxe SQL de création d’un utilisateur est la suivante :

CREATE USER utilisateur IDENTIFIED { BY motdePasse


EXTERNALLY | GLOBALLY AS 'nomExterne' }
[ DEFAULT TABLESPACE nomTablespace
[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ] ]
[TEMPORARY TABLESPACE nomTablespace
[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ].]
[PROFILE nomProfil ]
[PASSWORD EXPIRE ]
[ ACCOUNT { LOCK | UNLOCK } ] ;

Syntaxe Simple :
CREATE USER utilisateur IDENTIFIED BY motdePasse
28
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).
◼ IDENTIFIED BY EXTERNALLY permet de se servir de l’authenticité du système
d’exploitation pour s’identifier à Oracle (cas des compte OPS$ pour Unix).
● IDENTIFIED BY GLOBALLY permet de se servir de l’authenticité d’un système
d’annuaire.
● DEFAULT TABLESPACE nomTablespace associe un espace disque de travail (appelé
tablespace) à l’utilisateur.
● TEMPORARY TABLESPACE nomTablespace associe un espace disque temporaire
(dans lequel certaines opérations se dérouleront) à l’utilisateur.
● QUOTA permet de limiter ou pas chaque espace alloué.
● PROFILE nomProfil affecte un profil (caractéristiques système relatives au CPU et aux
connexions) à 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.
● ACCOUNT pour verrouiller ou libérer l’accès à la base (par défaut UNLOCK).
29
Gestion des utilisateurs
création (suite)
◼ En l’absence de clause sur les espaces disque, le tablespace SYSTEM est
associé à l’utilisateur en tant qu’espace de travail et d’espace temporaire.
Il existe d’autres tablespaces créés par Oracle, citons USERS (celui que
vous devriez utiliser pour votre espace par défaut) et TEMP (celui que
vous devriez employer pour votre espace temporaire). Vous pouvez aussi
créer vos espaces via la console d’administration La clause ALTER USER
permet d’affecter un espace de travail ou temporaire différent de celui
du départ.

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

30
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
sur laquelle ils sont connectés. La section « Privilèges » étudie ces droits. 31
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.

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

ALTER USER utilisateur


[ IDENTIFIED { BY password [ REPLACE old_password ] |
EXTERNALLY | GLOBALLY AS 'external_name' } ]
[ DEFAULT TABLESPACE nomTablespace
[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ] ]
[ TEMPORARY TABLESPACE nomTablespace
[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ].]
[ PROFILE nomProfil ]
[ DEFAULT ROLE { rôle1 [,rôle2]… | ALL [EXCEPT rôle1 [,rôle2]…]
| NONE }
[ PASSWORD EXPIRE ] [ ACCOUNT { LOCK | UNLOCK } ] ;

33
Gestion des utilisateurs
Modification d’un Utilisateur
(Suite)
➢ PASSWORD EXPIRE oblige l’utilisateur à changer son mot de passe à la
prochaine connexion.

➢ DEFAULT ROLE affecte à l’utilisateur des rôles qui sont en fait des ensembles
de privilèges (voir la section « Rôles »). Chaque utilisateur peut changer son
propre mot de passe à l’aide de cette instruction.

➢ Les 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 couramment connecté à un autre).

34
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;

35
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
USER.
36
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:

37
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 } }

38
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.
39
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.
Il est possible de visualiser chaque paramètre de tout profil en interrogeant certaines
vues du dictionnaire des données (voir le chapitre suivant). 40
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/24 • 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.

41
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…).
42
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.

43
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…
44
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 [ IDENTIFIED BY motdePasse ]
[ WITH ADMIN OPTION ] ;

45
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.
◼ IDENTIFIED BY désigne un utilisateur encore inexistant dans la base. Cette
option n’est pas valide si le bénéficiaire est un rôle ou est PUBLIC.
◼ 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 connect to HR
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 46
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.
47
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. Nous verrons aussi que cette commande est opérationnelle pour les privilèges
objets. 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

48
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;

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

50
Privilèges Objets
Syntaxe d’affectation de privilè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 | { DIRECTORY nomRépertoire | JAVA {
SOURCE | RESOURCE } [schéma.]nomObjet } }
TO { utilisateur | nomRôle | PUBLIC } [,{ utilisateur | nomRôle |
PUBLIC } ]…
[WITH GRANT OPTION] ;
Syntaxe la plus utilisée

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


51
Privilèges Objets
Syntaxe d’affectation de privilè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)).

52
53
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] ;

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

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

REVOKE UPDATE, SELECT christian_soutou ne peut plus


ON Pilote FROM modifier ni lire la
christian_soutou; 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 bénéficier de la table
christian_soutou Pilote pour programmer une
CASCADE CONSTRAINTS; contrainte référentielle via une clé
étrangère.

56
Privilèges Objets
Transmission de privilèges (introduction )

Transmission des privilèges:

◼ On peut transmettre un privilège moins général que celui qu’on possède.

◼ Max possède le droit INSERT sur EMP, avec l’option GRANT OPTION .

◼ Il peut transmettre INSERT(NOM) sur EMP à un autre utilisateur.

◼ Un utilisateur peut obtenir le même privilège de la part de plusieurs utilisateurs

différents, et le posséder de plusieurs manières (par ex. avec ou sans option GRANT).

57
Privilèges Objets
Transmission de privilèges (Exemple )
Attribution des privilèges:
❑ Max est le propriétaire du schéma Emp, Service. Il effectue les ordres :

➢ GRANT SELECT, INSERT ON emp TO jules, lulu WITH GRANT OPTION;

➢ GRANT SELECT, INSERT ON Service TO jules, luluWITH GRANT OPTION;

❑ Jules effectue les ordres suivants :

➢ GRANT SELECT, INSERT ON emp TO zoe;

➢ GRANT SELECT ON service TO zoe;

❑ Lulu effectue les ordres suivants :

➢ GRANT SELECT, INSERT(NOM) ON emp TO zoe;

➢ GRANT SELECT ON service TO zoe;

❑ Zoé a reçu les droits SELECT sur Emp et Service de deux utilisateurs différents. Elle
a aussi reçu le droit INSERT(NOM) de deux façons différentes. 58
59
Privilèges Objets
Transmission de privilèges (Exemple suite )

Rappel sur REVOKE


◼ REVOKE peut prendre 2 options RESTRICT et CASCADE.

Lorsqu'on utilise REVOKE CASCADE, on supprime tous les privilèges transmis en


cascade. (Un privilège obtenu par transmission (grant option) est abandonné si on
supprime le privilège à celui qui l’a transmis).

◼ L’option REVOKE RESTRICT ne supprime que les privilèges qui n’ont pas été
transmis. S’ils ont été transmis, le système renvoie une erreur.

60
REVOKE SELECT,INSERT ON emp FROM lulu CASCADE; 61
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.)

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

63
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 pourimporter des données.

64

Vous aimerez peut-être aussi