Notion de Lcd-Oracle
Notion de Lcd-Oracle
Notion de Lcd-Oracle
LE LCD
∀Privilège au niveau système : qui donne le droit d’exécuter une action particulière sur
n’importe quel objet. Le privilège CREATE TABLE, par exemple, permet de créer des tables. Le
privilège GRANT ANY PRIVILEGE permet d’accorder des privilèges à d’autres utilisateurs.
∀Privilège au niveau objet : qui donne le droit d’exécuter une action donnée sur un objet
spécifique. Le privilège SELECT, par exemple, permet d’exécuter une opération SELECT sur une
table, une vue, une séquence (ou un snapshot sous Oracle).
La norme SQL2 propose trois fonctions pour connaître l'utilisateur connecté : SYSTEM_USER
(nom de l’utilisateur connecté), SESSION_USER (nom d’utilisateur qui a ouvert la session),
CURRENT_USER (nom de l’utilisateur courant). On utilise ces fonctions avec une commande
SELECT.
à des groupes, ou des profils qui permettent de définir un ensemble de privilèges à attribuer à
des utilisateurs de la base de données.
On considère un utilisateur défini comme suit :
Pour le moment simon ne peut exécuter aucune action car il ne possède pas de privilèges de
niveau système.
∀CONNECT : Pour les utilisateurs occasionnels qui n’ont normalement pas besoin de créer des
tables (même s’ils pourront le faire). Ce rôle autorise simplement d’utiliser Oracle : il permet
de créer des tables, des vues, des séquences, des clusters, des synonymes, des sessions et
des liens vers d’autres bases de données.
∀RESOURCE : Pour les utilisateurs réguliers. Accorde des droits supplémentaires pour la
création de tables, de séquences, de procédures, de déclencheurs, d’index et de clusters.
∀DBA : Regroupe tous les privilèges de niveau système avec des quotas d’espace illimités et la
possibilité d’accorder n’importe quel privilège à un autre utilisateur. Le compte système est
employé par un utilisateur disposant d’un rôle DBA.
3. Les privilèges
(La liste des privilèges figure en annexes.)
GRANT <privilège_système> | <rôle> [,<privilège_système> | <rôle>, …] TO <utilisateur> |
<rôle> [,<utilisateur> | <rôle>, …] [WITH ADMIN OPTION]
La commande GRANT permet d’accorder n’importe quel privilège système ou rôle à un
utilisateur, à un rôle, ou au groupe d’utilisateurs PUBLIC. Si la clause WITH ADMIN OPTION est
spécifiée, le bénéficiaire peut à son tour assigner le privilège ou le rôle qu’il a reçu à d’autres
utilisateurs ou rôles. Celui qui attribue un privilège à un rôle peut aussi le révoquer :
REVOKE <privilège_système> | <rôle> [,<privilège_système> | <rôle>, …] TO <utilisateur> |
<rôle> [,<utilisateur> | <rôle>, …] …
Un utilisateur qui dispose du rôle de DBA peut révoquer les privilèges CONNECT, RESSOURCE,
DBA ou tout autre privilège ou rôle accordés à un autre utilisateur ou administrateur de base
de données. Cette commande est donc très dangereuse, c’est pourquoi les privilèges DBA
doivent être accordés uniquement aux personnes dont la fonction l’exige.
Nota : Révoquer tous les privilèges d’un utilisateur ne supprime ni son compte ni les objets
qu’il possède. Cela l’empêche simplement d’y accéder. Les autres utilisateurs disposant d’un
accès aux objets de cet utilisateur peuvent continuer à y accéder comme si de rien n’était.
Pour supprimer l’utilisateur et tous les objets qu’il possède (CASCADE) :
4. Création de synonyme
Pour éviter de créer une vue sur une table (ou une vue) simplement dans le but d’en simplifier
le nom d’utilisation, on peut simplement créer un synonyme :
Administration paramétrée
1. Création de rôles
On peut ajouter à la liste des rôles par défaut d’Oracle (CONNECT, RESOURCE, DBA) des rôles
comprenant des privilèges de niveau système ou objet, ou une combinaison des deux.
Pour pouvoir créer des rôles il faut avoir le privilège système CREATE ROLE.
Lorsqu’ils viennent d’être créés, les rôles ne sont associés à aucun privilège.
Privilège UPDATE :
Le privilège UPDATE peut être limité à certaines colonnes :
Par exemple : GRANT UPDATE (codeprod, libelleprod) ON produit to judy;