Vous êtes sur la page 1sur 8

Gestion des Utilisateurs

• Choisir un nom d’utilisateur


• Choisir une méthode d’authentification
• Choisir les tablespaces que l’utilisateur pourra utiliser
• Définir les quotas sur chaque tablespace
• Définir les tablespaces par défaut de l’utilisateur
• Assigner les rôles et privilèges à l’utilisateur
I. Choisir la méthode d’authentification de l’utilisateur :
- Authentification par la base de données
- Authentification par le système d’exploitation.

Authentification par la base de données :

Ce mode, le plus courant, est le mode par défaut. L’utilisateur est authentifié avec les mots de passe
stockés dans la base de données

CREATE USER scott IDENTIFIED BY tiger;

Authentification par le système d’exploitation :

Ce mode permettra à Oracle de se baser sur l’authentification de l’utilisateur par le système


d’exploitation :

CREATE SCOTT IDENTIFIED EXTERNALLY

II. Paramètres de création d’un utilisateur :


CREATE USER user_name
IDENTIFIED {BY password | EXTERNALLY}
[DEFAULT TABELSPACE tablespace]
[TEMPORARY TABESPACE tablespace]
[QUOTA {integer [K |M] | UNLIMITED} ON tablespace]…
[PASSWORD EXPIRE]
[ACCOUNT {LOCK | UNLOCK}]
Modification d’un utilisateur

Modification du mot de passe :

ALTER USER <login de l’utilisateur> IDENTIFIED BY <nouveau mot de passe>


Modification des quotas :

ALTER USER user_name


QUOTA 15M ON tablespace1
QUOTA 5M ON tablespace2;

1
Modification des TABLESPACES par défauts ;

ALTER USER scott DEFAULT TABLESPACE tablespace2


TEMPORARY TABLESPACE tmp_tablespace2;
Modification du statut d’un utilisateur :

ALTER user ACCOUNT LOCK ;

Supprimer un utilisateur :

Supprimer un utilisateur avec un schéma vide

DROP USER test ;

Supprimer un utilisateur avec son schéma

DROP USER test Cascade ;

III. Rôles et privilèges


Les rôles et privilèges sont définis pour sécuriser l’accès aux données de la base de données

Les privilèges sont deux types :

- Les privilèges niveau système

Un privilège système est le droit d'effectuer une action particulière ou d'effectuer une action sur
n'importe quel objet d'un type particulier. Les objets incluent des tables, des vues, des vues
matérialisées, des synonymes, des index, des séquences, des groupes de cache, des schémas de
réplication et des fonctions, procédures et packages PL/SQL. Seul l'administrateur de l'instance ou un
utilisateur disposant du privilège ADMIN peut accorder ou révoquer des privilèges système.

- Les privilèges niveau objet

Un privilège d'objet est le droit d'effectuer une action particulière sur un objet ou d'accéder à l'objet
d'un autre utilisateur. Les objets incluent des tables, des vues, des vues matérialisées, des index, des
synonymes, des séquences, des groupes de cache, des schémas de réplication et des fonctions,
procédures et packages PL/SQL.

Le propriétaire d'un objet possède tous les privilèges d'objet pour cet objet, et ces privilèges ne
peuvent pas être révoqués. Le propriétaire de l'objet peut accorder des privilèges d'objet pour cet
objet à d'autres utilisateurs de la base de données. Un utilisateur disposant du privilège ADMIN peut
accorder et révoquer des privilèges d'objet à des utilisateurs qui ne possèdent pas les objets sur
lesquels les privilèges sont accordés.

Les privilèges système :

Assigner les privilèges système à un utilisateur :

2
La clause with admin option : passage de privilège (quand je donne des privilèges système à un
utilisateur, ce dernier a le droit de le donner à un autre)

Assigner des privilèges système à un utilisateur :

Exemple :

GRANT CREATE SESSION TO nom_utilisateur ;

GRANT CREATE TABLE TO nom_utilisateur;

GRANT CREATE VIEW TO nom_utilisateur;

DATABASE
ALTER DATABASE Modification de la base
ALTER SYSTEM Autorise l’instruction ALTER SYSTEM

SESSIONS
CREATE SESSION Connexion à la base
ALTER SESSION Permet l’instruction ALTER SESSION

TABLES
CREATE TABLE Création de tables dans le schéma
CREATE ANY TABLE Création de tables dans n’importe quel schéma
ALTER ANY TABLE Modification des tables ou vues dans n’importe quel schéma
DROP ANY TABLE Suppression de tables dans n’importe quel schéma
SELECT ANY TABLE Interrogation des tables, vues ou vues matérialisées de n’importe quel
schéma

TABLESPACES
CREATE TABLESPACE Création de tablespace
ALTER TABLESPACE Modification de tablespace
DROP TABLESPACE Suppression de tablespace
UNLIMITED TABLESPACE Quota illimité sur le tablespace

Assigner des privilèges objet à un utilisateur

3
IV. Exemple :

GRANT
SELECT,
INSERT,
UPDATE,
DELETE
ON SYS.client
TO nom_utilisateur ;

GRANT
UPDATE(nom,prenom)
ON SYS.client
TO nom_utilisateur ;

TABLES
ALTER Modifier la définition d’une table
DELETE Supprimer des lignes de la table
INSERT Insertion de lignes dans la table
REFERENCES Création d’une contrainte d’intégrité
SELECT Interrogation d’une table
UPDATE Mise à jour de la table

Créer des rôles et leur assigner des privilèges

4
Exemple :

CREATE ROLE comptabilite

GRANT SELECT, INSERT, UPDATE , DELETE ON client TO comptabilite;

GRANT SELECT, INSERT, UPDATE ON fournisseur TO comptabilite;

GRANT comptabilite to nom_utilisateur ;

Les rôles standards :

Il existe trois rôles système :

CONNECT
RESOURCE GRANT connect TO nom_utilisateur ;
DBA

Select * from DBA_SYS_PRIVS where grantee=’CONNECT’;

Select * from DBA_SYS_PRIVS where grantee=’RESOURCE’;

Select * from DBA_SYS_PRIVS where grantee=’DBA’ order by PRIVILEGE;

Liste des rôles et privilèges assignés à un utilisateur :

La liste des rôles assignés à un utilisateur s’obtient via les vues :

DBA_ROLE_PRIVS et USER_ROLE_PRIVS

SQL> select * from DBA_ROLE_PRIVS where grantee = ‘user’;

La liste des privilèges objet assignés à un utilisateur s’obtient en interrogeant les vues :
DBA_TAB_PRIVS , ALL_TAB_PRIVS et USER_TAB_PRIVS

SQL> select * from DBA_TAB_PRIVS where grantee=’user’;

La liste des rôles assignés à l’utilisateur au cours de la session est visible via la vue SESSION_ROLES ;

SQL> select * from SESSION_ROLES ;

La liste des privilèges assignés à l’utilisateur au cours de sa session est visible via la vue
SESSION_PRIVS

SQL> select * from SESSION_PRIVS ;

Supprimer un rôle :

5
DROP ROLE nom_role;

Retirer des privilèges système :

Retirer des privilèges objets :

V. EXEMPLE :
SYS
Service DRH :
La table : Employe
L’utilisateur : User_DRH

Service DAF :
La table : Facture
L’utilisateur : User_DAF

Rôle DRH : des privilèges dans un rôle

Rôle DAF : des privilèges dans un rôle

Tablespaces :

Quota=20M (par DRH) sur le tablespace TBS_DAF

TBS_DRH

Atelier :
C:\Users\admin\sqlplus

Entrer user-name: sys as sysdba

Entrer le mot de passe :4321

Basculer vers orclpdb ou une autre pdb que vous avez créer

SQL> create user user_daf identified by daf;

SQL> create user user_drh identified by drh;

6
SQL> create role role_drh;

SQL> create role role_daf; -- par défaut n’a aucun droit

SQL> connect user_drh/drh --?

SQL> conn sys/4321 as sysdba

SQL> show user

SQL> grant create table, create session to rol_drh;

SQL> grant role_drh to user_drh;

SQL> connect user_drh/drh;

SQL> show user

SQL> create table employes (mat int, nom varchar(20)); --?

SQL> conn sys/4321@pdb01 as sysdba

SQL> grant unlimited tablespace to role_drh; ?

- REFERENCES, INDEX, SYSDBA, SYSOPER or SYSASM privilege could not be granted


to a role.
- Action: Grant privilege directly to the user.
SQL> grant role_drh to user_drh;

SQL> connect user_drh/drh

SQL> create table employes (mat int, nom varchar(20));

SQL> connect sys/4321 as sysdba

SQL> grant create table, create session, unlimited tablespace, create any table to role_daf;

SQL> grant rol_daf to user_daf;

SQL> grant unlimited tablespace to user_daf;

SQL> connect user_daf/daf

SQL> create table facture (numero int, montant float);

SQL> connect sys as sysdba

SQL> grant insert, select on user_daf.facture to user_drh;

SQL> connect user_drh/drh

SQL> insert into user_daf.facture values (1,1000);

SQL> select * from user_daf.facture;

SQL> delete from user_daf.facture; ??

SQL> connect sys as sysdba

SQL> grant update on user_drh.employe to user_daf;

SQL> connect user_daf/daf;

SQL> select * from user_drh.emplyes; ??

7
SQL> update user_drh.employe set mat=1;

SQL> delete from user_drh.employe; ??

SQL> conn sys/4321 as sysdba

SQL> desc dba_tablespaces;

SQL> select tablespace_name from dba_tablespaces;

--les quota

SQL> alter user user_drh


default tablespace tbs_drh
Quota 20M on tbs_drh;

SQL> alter user user_daf


Default tablespace tbs_daf
Quota 10M on tbs_drh;

Vous aimerez peut-être aussi