Droits d’accès aux objets
Implicitement le créateur
d’un objet (TABLE, VUE , INDEX, etc.) est son propriétaire, et possède
tous les droits dessus : consultation, mises à jour, mais aussi suppression
complète.
GRANT et REVOKE permettent respectivement de donner ou de supprimer les droits
explicites d’accès en lecture ou mise à jour à un utilisateur
particulier, pour un objet particulier.
C'est en général
le propriétaire de l'objet peut donner des droits d'accès à
un autrer utilisateur.
exemples:
SQL> GRANT SELECT ON TAB_CLIENTS TO MARTIN
SQL> GRANT UPDATE, INSERT ON TAB_CLIENTS TO DUPONT
par
défaut un DBA ne peut pas donner des droits d'accès à un
objet qui ne lui appartient pas. Le propriétaire doit lui céder
les drois avec un grant option (!?) :
SQL> connect system/xxxx
Connected.
SQL>grant select on intranet.annuaire to scott;
ERROR at line 1: ORA-01031: insufficient privileges
Le type de privilège dépend évidemment de l'objet sur lequel il s'applique. Ceci est résumé dans le tableau suivant :
Le privilege ... s'applique sur une... | Table | Vue | Sequence | Procedure |
ALTER |
![]() |
![]() | ||
DELETE |
![]() |
![]() | ||
EXECUTE |
![]() | |||
INDEX |
![]() | |||
INSERT |
![]() |
![]() | ||
REFERENCES (1) |
![]() | |||
SELECT |
![]() |
![]() |
![]() | |
UPDATE |
![]() |
![]() | ||
GRANT SELECT ON TAB_CLIENTS
TO DUPONT WITH GRANT OPTION
(on suppose que TAB_CLIENTS est un synonyme public visible par tout le monde).
Dupont, même s'il n'est pas propriétaire pourra alors à
son tour faire :
GRANT SELECT ON TAB_CLIENTS
TO MARTIN
une
erreur très répandue consiste à référencer
un objet (dont on n'est pas proprétaire et sur lequel il n'y pas de synonyme)
par son nom, SANS le préfixer par le nom du propriétaire. exemple
: SELECT * from EMP au lieu de SELECT * FROM SCOTT.EMP ceci donne une erreur
d'accès du type 'TABLE OR VIEW DOESN'T EXISTS' (?!) même si on
a les droits de lecture...
|