TP ORACLE : Droits d'accés

Oracle permet à plusieurs utilisateurs de travailler sur la même base de données en toute sécurité. Deux commandes sont à ce titre particulièrement importantes: GRANT et REVOKE et permettent de définir les droits de chaque utilisateur sur les objets de la base.

Tout utilisateur accède à la base à l'aide de son nom utilisateur et de son mot de passe. C'est le nom utilisateur qui permet de déterminer les droits d'accès aux objets de la base de données.

Deux utilisateurs dess1 et dess2 ont été créés par le DBA et sont autorisés à se connecter à la base Oracle. Ils ont aussi les privilèges de créer des objets de schéma de base de données utilisateur (tables, vues, contraintes etc).

Depuis le début de la séance, vous avez travaillé sous le nom d'utilisateur dess1 et vous avez donc été > avec vous-même.

Nous allons vérifier que le SGBD gère la concurrence d'accès à des objets de la base entre plusieurs utlisateurs différents.

Tout utilisateur qui crée des objets est propriétaire de ces objets (table\_name, owner de USER_tables dans le dictionnaire des données).

Le créateur d'un objet peut décider de donner (ou de supprimer) certains droits d'accès à cet objet à tout autre utilisateur de sa connaissance.

L'ordre GRANT

GRANT privilege ON table/vue TO utilisateur [WITH GRANT OPTION] ;

Cet ordre permet de ``donner'' le privilège concerné sur la table ou la vue à l'utilisateur.

Exemple : dess1 a créé la table SOCIETE et veut autoriser dess2 à lire cette table. Il passe alors l'ordre :

GRANT SELECT ON SOCIETE TO dess2;

Les privilèges qui peuvent être donnés sont les suivants:

SELECT: droit de lecture,

INSERT: droit d'insertion de lignes,

UPDATE: droit de modification de lignes,

DELETE: droit de suppression de lignes,

ALTER: droit de modification de la définition de la table,

INDEX:droit de création d'index,

ALL: tous les droits ci-dessus.

Un utilisateur ayant reçu un privilège avec la mention facultative WITH GRANT OPTION peut les transmettre à son tour à un autre utilisateur.

Exemples d'application :

  • dess1 (dess2) donne les droits de lecture de ``sa'' table concernant les sociétés  à l'utilisateur dess2 (dess1)
  • dess1 (dess2) donne les droits de modification de ``sa'' table EMPLOYE à l'utilisateur dess2 (dess1)
  • Vérifier que les privilèges ont été bien accordés
  • Testez vos nouveaux droits (les objets que vous interrogerez et dont vous n'êtes pas propriétaire sont désignés par leur nom complet nompropriétaire.nomobjet).
  1. L'ordre REVOKE

Un utilisateur ayant accordé un privilège peut le reprendre à tout moment à l'aide de l'ordre REVOKE.

REVOKE privilege ON table/vue FROM utilisateur ;

Exemples d'application :

  • Enlever les privilèges précédemment accordés
  • Vérifier que les privilèges ont bien été supprimés
Article publié le 26 Avril 2010 Mise à jour le Mercredi, 05 Mai 2010 03:07 par GC Team