A.   Structure simplifiée d’une Instance Oracle

 

Où l’on parle de Tablespace, datafiles, users etc…

B.   Construire une « base » :

 

Un « user » peut être un utilisateur mais aussi une base de donnée au sens « ACCESS » du terme.

 

Pour créer un nouvel ensemble d’information (base au sens « access ») l’administrateur de la base de donnée crée un nouveau « user » :Base_commerciale , il lui attribue un mot de passe.

 

Il donne à l’utilisateur Base_commerciale, le rôle connect.

 

Base_commerciale aura ainsi le droit de créer des objets, et sera propriétaire de tous les objets qu’il aura créé.

 

Il se connecte en tant que Base_commerciale et exécute le script de création des tables.

 

La base « au sens ‘’Access’’ » du terme est créée.

 

Il se reconnecte en tant qu’administrateur et va créer les vrais utilisateurs :

Il a déterminé qu’il y avait plusieurs catégories d’utilisateurs :

Les clients disposent d’un droit de lecture sur la table produit.

Les représentants qui peuvent intervenir sur les commandes…(consultation, ajout, suppression, modification)

Le chef de service et son adjoint qui ont tous les droits…

 

Pour chaque catégorie, l’administrateur crée un rôle.

Pour chaque utilisateur nécessitant la connexion à cette base il crée un user avec son mot de passe et il lui attribue le rôle qui lui correspond.

 

Ces « user » réels ne sont propriétaires d’aucune table, Base_commerciale leur donne juste la possibilité d’effectuer des insert, update, delete, ou select sur les différents objets dont il est propriétaire.

 

C.   Gestion des utilisateurs 

Création

 

Create user TheBestCommercial identified by ‘’mot de passe’’ default tablespace ts_USER temporary tablespace ts_temp default role COMMERCIAL QUOTA 500 K ON ts_user QUOTA 20 K ON ts_temp;

Le quota lui donne le droit d’avoir jusqu’à 500 K0 d’information sur le tablespace ts_user.

 

Modification du mot de passe d’un utilisateur

 

Alter user TheBestCommercial identified by’nouveau mot de passe’’ ;

 

Suppression d’un utilisateur et de tous les objets dont il est propriétaire:

 

Drop user TheBestCommercial cascade;

 

D.   Attribuer des rôles et les privilèges:

La commande GRANT

 

GRANT privilège objet [, privilège objet]...

[ (colonne [, colonne)...

ON [schéma.]objet

TO {utilisateur | rôle | PUBLIC [, {utilisateur | rôle | PUBLICI]...

[WITH GRANT OPTION]

 

L'option WITH GRANT OPTION permet au bénéficiaire des privilèges d'attribuer un ou plusieurs de ses privilèges à d'autres utilisateurs.

 

Les privilèges possibles sur les objets d'un schéma sont illustrés dans le tableau suivant:

 

Table

Vue

Séquence

Procédure Fonction Package

Snapshot

ALTER

X

 

X

 

 

DELETE

X

X

 

 

 

EXECUTE

 

 

 

X

 

INDEX

X

 

 

 

 

INSERT

X

X

 

 

 

REFERENCES

X

 

 

 

 

SELECT

X

X

X

 

X

UPDATE

X

X

 

 

 

 

Les privilèges INDEX et REFERENCES ne peuvent pas être attribués à un rôle. Il est possible d'attribuer tous les privilèges objets à un utilisateur en spécifiant ALL ou ALL PRIVILEGES dans la liste des privilèges,

 

Exemple . Attribuer l'interrogation et l'insertion de données de la table COMMANDE à l'utilisateur Dominique, en lui donnant  la possibilité d'attribuer les mêmes privilèges à d'autres utilisateurs.

 

GRANT SELECT, INSERT ON alain.commande TO Dominique WITH GRANT OPTION;

 

Le retrait de privilèges d'objets d'un ou de plusieurs utilisateurs se fait par la commande suivante :

 

REVOKE privilège objet [, privilège objet]...

ON [schéma.1objet

FROM {utilisateur | rôle | PUBLIC  [,{utilisateur | rôle | PUBLIC)]...

[CASCADE]

 

L'option CASCADE  pratique dans le cas du WITH GRANT OPTIONpermet de supprimer tous les droits qu’ils ont attribué.

 

Exemple: Retirer le privilège INSERT sur la table COMMANDE de l'utilisateur Dominique.

 

REVOKE INSERT ON commande

FROM Dominique ;

 

1.      LES RÔLES

 

Un rôle est une agrégation de droits d'accès aux données et de privilèges système qui renforce la sécurité et réduit significativement la difficulté et le coût de son administration.

CRÉATION D'UN RÔLE

 

Un rôle est un ensemble nommé de privilèges qui peut être attribué à des utilisateurs et/ou à d'autres rôles. Il offre une facilité de gestion des privilèges d'accès aux données. L'administrateur peut donc centraliser la gestion de privilèges par la création de plusieurs rôles et l'attribution de ces rôles en fonction de l'utilisateur, d'où une maintenance facile et structurée.

 

La création d'un rôle peut servir deux aspects : application et utilisateur. Un rôle d'application regroupe tous les privilèges nécessaires à l'exécution d'une application. Il peut être composé d'autres rôles, chacun d'eux offre un ensemble de privilèges d'accès à des données différentes de l'application. Un rôle utilisateur gère des privilèges communs nécessaires aux utilisateurs de la base, comme la création de session.

 

La création d'un rôle se fait par la commande suivante

 

CREATE ROLE rôle

                NOT IDENTIFIED

                | IDENTIFIED {BY mot de_passe | EXTERNALLY}

 

Un rôle est créé initialement sans aucune caractéristique, puis alimenté par des ordres SQL GRANT. Il peut être protégé par un mot de passe qui sera demandé chaque fois que le créateur décide de l'activer par la commande SET ROLE. L'authenticité des rôles dans Oracle est équivalente à celle des utilisateurs.

 

Oracle crée automatiquement quelques rôles qu'il attribue à SYS et SYSTEM. Ces rôles ne

sont que des privilèges système des anciennes versions CONNECT, RESOURCE et DBA.

L'importation et l'exportation de données ont été mises dans les rôles respectifs

IMP  FULL  DATABASE et EXP FULL DATABASE. Les privilèges système attribués à ces

rôles sont illustrés dans le tableau suivant :

Rôle

Privilèges système 1

CONNECT

ALTER SESSION, CREATE CLUSTER, CREATE DATABASE LINK

 

, CREATE SEQUENCE, CREATE SESSION

 

, CREATE SYNONYM, CREATE TABLE, CREATE VIEW.

 

 

RESOURCE

CREATE CLUSTER, CREATE PROCEDURE, CREATE

 

SEQUENCE, CREATE TABLE, CREATE TRIGGER,

 

UNLIMITED TABLESPACE

DBA

Tous les privilèges

 

EXP-FULL-DATABASE

SELECT ANY TABLE, BACKUP ANY TABLE,

 

 

IMP-FULL-DATABASE

BECOME-USER

 

Exemple: Créer un rôle nommé rutil1.

 

CREATE ROLE rutil1

IDENTIFIED BY ‘’LMD65> :’’.

 

 

2.     ACTIVATION D'UN RÔLE

 

Avant que les privilèges associés à un rôle deviennent disponible à l'utilisateur de la session, il faut que le rôle soit activé. La commande qui permet d'activer ou de désactiver un rôle est la suivante :

 

SET ROLE (rôle [IDENTIFIED BY mot_de_passel

   rôle [IDENTIFIED BY mot  de passe]

   ALL [EXCEPT rôle [, rôle] ...

   NONE}

 

Par défaut, Oracle établit au moment de la connexion tous les privilèges d'un utilisateur. Ces privilèges ont été attribués soit directement en passant par des GRANT objets, soit indirectement par des GRANT rôles. La première catégorie ne peut pas être activée et désactivée d'une façon sélective ; autrement dit, pour retirer les privilèges d'accès à une table quelconque, il faut l'expliciter par la commande REVOKE à tous les utilisateurs. En revanche, la seconde catégorie, qui concerne les privilèges attribués par des rôles, peut être sélective par le mécanisme d'activation et de désactivation et offre ainsi une meilleure sécurité qui dépend de la tâche courante de l'utilisateur.

 

L'utilisation des options ALL et ALL EXCEPT nécessitent que tous les rôles ne possèdent pas de mot de passe ou utilisent une authentification par système d'exploitation.

 

1Le rôle qui ne figure pas dans la liste est considéré comme désactivé. Il n'existe pas de commande spécifique pour désactiver explicitement un rôle.

 

Exemple : Activer les rôles rutill et rutil2.

 

SET ROLE rutil 1 IDENTIFIED BY malek, rutil2;

 

Nous constatons que seulement le premier rôle nécessite un mot de passe. Ceci dépend de sa définition (création).

 

3.      MODIFICATION D'UN RÔLE

 

Il est possible de  modifier le mot de passe  d'un rôle existant.

 

ALTER ROLE rôle

   NOT IDENTIFIED

   | IDENTIFIED {BY mot de passe | EXTERNALLY}

 

Exemple: Mettre le rôle rutil 1 sans mot de passe.

 

ALTER ROLE rutil 1 NOT IDENTIFIED;

 

4.     SUPPRESSION D'UN RÔLE

 

Pour supprimer un rôle existant, il faut utiliser la commande suivante

 

DROP ROLE rôle

 

Exemple: Supprimer le rôle rutil1.

 

DROP ROLE rutil1;

 

E.   Travaux dirigés :

 

Créez les utilisateurs, rôles, tables, et vues en rapport avec l ‘extrait de base  suivante :

 

 

Les règles suivantes seront adoptées :

 

Liste des utilisateurs du service gestion du personnel :

Liste des utilisateurs du service paye :

1.      Lmartin

2.      Jprost

3.      Rlanoe

 

Vous utiliserez la vue all_users pour trouver tous les utilisateurs de la base.

 

Vous détaillerez chaque étape et justifierez votre démarche.

Présentez un ensemble de requêtes avec leur résultat prouvant que les droits sont correctement définis.