Définition droits utilisateurs sur BD Oracle

Fermé
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 - 23 juin 2003 à 10:23
 KOFFI - 7 mars 2018 à 10:03
Bonjour à tous,

Voilà, j'ai une base de données qui peut être modifiée par différentes personnes...
Chaquespersonne peut écrire dans la base et consulter des données.. mais ils ne peuvent modifier que les données qu'ils ont écrites eux-mêmes... et surtout pas celles des autres...

Après de nombreuses propositions de solutions dans mon bureau toutes plus farfelues les unes que les autres.. surtout que personne ne s'y connait vraiment, j'aimerais connaitre votre opinion parce qu'il me semble que c'est un problème simple.. enfin... peut-etre!!

Merci pour votre aide... ça va peut-etre apaiser des tensions ici !!

;D

Ma BD est sous Oracle.



Letissya

16 réponses

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
23 juin 2003 à 10:40
pas de prob

Droits d'accès : rôles et privilèges


Introduction


Les systèmes de gestion de base de données sont accessibles simultanément par plusieurs utilisateurs. Afin de conserver l'intégrité de la base de donnée, il est nécessaire de définir à chacun des utilisateurs des droits d'accès. Ces droits limitent l'accès des utilisateurs à certaines informations de la base et leurs interdisent certaines actions.
C'est l'administrateur de bases de données (DBA) qui a pour rôle de gérer les utilisateurs : il crée ou supprime des comptes utilisateurs, attribue ou retire les privilèges d'accès aux données des différents utilisateurs.[1]
Cependant, même si le DBA conserve un regard sur les actions entreprises par les utilisateurs, l'attribution des privilèges sur un objet d'une base de données est décentralisée. En effet, le créateur d'un objet possède non seulement tous les droits de lecture, de modification et de suppression de cet objet mais il peut aussi accorder des droits sur cet objet à d'autres utilisateurs. Par conséquent, chaque donnée peut être définie, soit comme confidentielle et accessible à un seul utilisateur, soit comme partageable entre plusieurs utilisateurs.
Tout utilisateur doit posséder un nom d'utilisateur et un mot de passe pour pouvoir accéder à la base. C'est ce nom d'utilisateur qui sera le lien avec les droits d'accès qui lui sont accordés. Pour consulter ces droits, l'utilisateur peut utiliser les commandes SQL suivantes :[2]

USER_TAB_GRANTS;
Droits sur les objets donnés par l'utilisateur ou dont l'utilisateur est le bénéficiaire.

USER_TAB_GRANTS_MADE;
Droits sur ses objets, tables ou vues, donnés par l'utilisateur.

USER_TAB_GRANTS_RECD;
Droits sur des objets donnés à l'utilisateur.

Il existe deux utilisateurs par défaut sur toute base Oracle :
->l'utilisateur SYS, propriétaire des tables et des vues du dictionnaire,
->l'utilisateur SYSTEM, qui a simplement le droit de consultation de ces objets.
Ces deux utilisateurs ont par défaut le rôle DBA, ce qui signifie qu'ils ont accès à tous les objets de tous les autres utilisateurs de la base et qu'ils ont le droit d'exécuter certaines commandes d'exploitation et d'administration.[3]
Nous verrons au travers les quelques lignes qui vont suivre comment sont gérés les utilisateurs et leurs droits par le DBA et ce, de la création du compte à sa suppression en passant bien évidemment par l'attribution des privilèges notamment par le biais de la commande ROLE.



1. Création d'un compte utilisateur.


CREATE USER bob IDENTIFIED BY unbreakable
DEFAULT TABLESPACE data
TEMPORARY TABLESPACE temp
QUOTA 100Mo ON data
PROFIL profil_bob;

Cet ordre crée un utilisateur nommé 'bob', et dont le mot de passe est 'unbreakable'. bob créera par défaut ses objets dans la partition 'data' (jusqu'à concurrence de '100Mo'). Son espace de travail temporaire (utilisé en interne par Oracle) sera la partition 'temp'. Lors de sa connexion, bob bénéficiera d'une session dont les caractéristiques sont définies par le profil 'profil_bob'. La commande PROFIL affecte entre autres les paramètres suivants :[4]

CONNECT_TIME
Temps de connexion autorisé (en minutes)
IDLE_TIME
Délai d'inactivité autorisé (en minutes)
LOGICAL_READS_PER_CALL
Nombre maximum de blocs mémoire ou disque par tâche




2. Les droits : attribution des rôles et des privilèges associés.


2.1 Privilège
Nous venons de voir comment créer un compte utilisateur pour bob. Pour pouvoir créer un compte utilisateur, il faut disposer du privilège CREATE USER. Il est préférable que cette commande ne soit accessible qu'au DBA. En ce qui concerne notre utilisateur bob, malgré la création de son compte, il ne peut toujours pas se connecter à la base de données. Il faut pour cela que le DBA lui accorde le privilège CREATE SESSION.

Un privilège est le droit d'exécuter un type d'instruction SQL spécifique. Quelques exemples de privilèges :
->le droit de se connecter à une base de données (autrement dit ouvrir une session),
->le droit de créer une table,
->le droit de sélectionner des lignes dans une table.

Les privilèges d'une base de données Oracle peuvent être répartis en deux catégories distinctes :
->les privilèges système,
->les privilèges objets.

Les privilèges système autorisent les utilisateurs qui en disposes à exécuter une action particulière portant sur tout le système (création d'espace de tables ou suppression des lignes de n'importe quelle table de la base, etc...). Par opposition, les privilèges objets n'accordent que des droits limités à un objet de la base. Les privilèges objets sont typiquement les droits que peuvent accorder des utilisateurs sur les objets dont ils sont les auteurs alors que les privilè- ges système sont réservés au DBA.[5]

L'instruction GRANT est toujours utilisée lors de l'attribution d'un privilège. Le grant est syntaxiquement composé de trois parties :

GRANT (type de privilège) ON (table/vue) TO (utilisateur(s))

Les types de privilège qui peuvent être accordés sont les suivants : SELECT, INSERT, UPDATE, UPDATE (col1, col2), DELETE, ALTER, INDEX, ALL.
Le mot clé ON est suivi du nom de la table ou de la vue sur laquelle sont accordés les privilèges. TO est suivi du nom du ou des utilisateurs auquel(s) sont accordés les privilèges. Le mot clé PUBLIC peut être utilisé pour désigner tous les utilisateurs. On notera que l'instruction GRANT peut être accompagnée de l'option facultative WITH GRANT OPTION qui accorde le droit à l'utilisateur de transmettre ces privilèges.[6] Ainsi, pour que bob puisse se connecter à la base, le DBA devra exécuter la commande :

GRANT CREATE SESSION TO bob

Comme nous l'avons souligné en introduction, un utilisateur peut attribuer des droits sur les objets dont il est l'auteur via la commande GRANT. Afin de faciliter l'attribution d'une série de privilèges à plusieurs utilisateurs, le DBA dispose de la commande ROLE.
2.2 Définition des rôles
On ne peut pas définir directement de groupe d'utilisateurs sous Oracle, c'est l'attribution de privilèges à un rôle qui permet de faciliter la gestion des privilèges pour des groupes d'utilisateurs. Pour accorder des privilèges à un groupe d'utilisateurs sur des ensembles de vues ou de relations, il faut d'abord les attribuer à un rôle, puis assigner ce rôle au groupe d'utilisateurs en question. Il y a neuf rôles prédéfinis afin de préserver la compatibilité entre les différentes versions d'Oracle. Ces rôles peuvent être modifiés pour permettre la création de nouveaux rôles. Voici quatre de ces rôles :

CONNECT
Autorise la connexion à une base Oracle. Parmi les privilèges associés à cette commande on trouve:
CREATE TABLE, CREATE VIEW, CREATE SESSION ...

RESOURCE
Permet, en plus de la création de table et de vue, l'utilisation de trigger et de procédure (CREATE PROCEDURE, CREATE TRIGGER ...).

DBA
Ce rôle regroupe tous les privilèges système pour la gestion des utilisateurs et de leurs tables.

Pour pouvoir créer un rôle, l'utilisateur doit avoir le privilège : CREATE ROLE. Typiquement, seul le DBA dispose de ce droit, ce qui est préférable pour des raisons de sécurité. Lorsqu'un rôle est créé, son créateur en hérite avec le privilège ADMIN OPTION ce qui lui permet de modifier, supprimer ce rôle ou de l'attribuer à des utilisateurs.[6] Il est possible, lors de la création d'un rôle, d'en protéger l'utilisation par le biais d'un mot de passe dont le contrôle se fera soit par Oracle, soit par une application, soit par le système d'exploitation. Nous n'envisagerons pas ces cas particuliers et nous verrons sur l'exemple suivant comment créer un rôle, l'attribuer à notre utilisateur bob, puis le lui enlever.

CREATE ROLE role_bob;
Création du rôle
GRANT SELECT ON acteurs TO role_bob;
GRANT UPDATE ON acteurs TO role_bob;
GRANT SELECT ON films TO role_bob;
Attributions des différents privilèges au rôle défini précédemment.
GRANT role_bob TO bob;
Attribution du rôle à l'utilisateur bob.

2.3 Gestion des privilèges
Afin de gérer et surveiller l'attribution des privilèges, le DBA peut utiliser les commandes suivantes :[7]

DBA_TAB_GRANTS
Tous les droits sont accordés sur tous les objets de la base.
DBA_USERS
Informations sur tous les utilisateurs de la base.



3. Suppression des droits : modification et suppression des rôles.


3.1 Suppression des droits par l'utilisateur
L'utilisateur ayant accordé un privilège sur ses objets à un autre utilisateur peut les lui reprendre en utilisant la commande suivante :

REVOKE PRIVILEGE ON FROM ;

3.2 Suppression d'un rôle
Les rôles peuvent être supprimés par l'utilisation de la commande DROP. Pour supprimer le rôle role_bob attribué précédemment à bob, l'instruction sera :

DROP ROLE role_bob;

3.3 Suppression d'un compte utilisateur
La suppression d'un compte utilisateur est aussi un moyen de supprimer ses droits d'accès à la base de donnée. Pour supprimer les droits d'accès de bob à la base de données ainsi que tous les objets qu'il a créés, on utilise la commande sui- vante :

DROP USER bob CASCADE;



4. Conclusion


Du point de vue sécurité, la gestion des droits d'accès aux bases de données est de loin le principal souci du DBA. Afin de gérer au mieux ces droits, il dispose, comme nous venons de le voir, d'un grand nombre de commandes SQL lui permet- tant d'attribuer sélectivement des droits aux différents utilisateurs et de surveiller les attributions réalisées par les utilisateurs eux-mêmes. La plupart des SGBD offrent en outre des moyens de gestion des droits d'accès plus conviviaux que le passage par ligne de commande SQL. Oracle propose notamment plusieurs modules pour la gestion des utilisateurs et de leurs privilèges (Server Manager, Security Manager).



5. Sources


M. Abbey, M.J. Corey, I. Abramson, ORACLE 8i - Notions fondamentales, CampusPress France http://www-ufrima.imag.fr/PLACARD/GENERAL/oracle_V8/doc/ Les deux guides suivant :
Advanced Security Administrator's Guide
Administrator's Guide
sont consultables à l'adresse suivante mais nécessite un enregistrement.
http://otn.oracle.com/docs/products/oracle9i/doc_library/release2/nav/docindex.htm






Chouba
Casque Bleu forumique
59
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
23 juin 2003 à 10:41
Caramba, grille :-)
.  .
\_/
0
salut, merci beaucoup pour les bonnes informations que vous nous donnez.
une question SVP est ce que vous peuvez me donner les information sous automatisation des taches d'administration d'oracle 9i
0
raniachamseddine Messages postés 2 Date d'inscription dimanche 27 mars 2011 Statut Membre Dernière intervention 30 mars 2011
27 mars 2011 à 13:07
merci bcp
je veux des examens
0
essekakou Messages postés 9 Date d'inscription jeudi 21 décembre 2017 Statut Membre Dernière intervention 20 juillet 2018
26 déc. 2017 à 13:01
merci pour votre fabuleux éclairage mais svp je voudrais savoir s'il était possible pour deux utilisateurs différents d'une BD Oracle]de créer deux tables portant
le même nom ?
0
Merci jai bien apprecié ces info, jespere pouvoir vous recontacter,
merci de me faire parvenir une adresse a ***@***
0
cours de sql sous oracle
http://www.langage-sql.isgreat.org/
5
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
23 juin 2003 à 10:29
Salut

quelques sites intéressants

http://projetsql.levillage.org/droitsacces.html

http://lifc.univ-fcomte.fr/~lasalle/OracleV7/page4.htm

Chouba
Casque Bleu forumique
2
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793
23 juin 2003 à 10:31
Donc en conclusion, rien de plus simple,ca marche tout seul, c'est ca?

.  .
\_/
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
23 juin 2003 à 10:37
je n'irais pas jusque là... 8)

Chouba
Casque Bleu forumique
0
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
23 juin 2003 à 10:39
choubaka, désolée, mais je ne peux pas consulter le premier site : le filtre web m'en empêche!!

teebo : pas compris ta réflexion !

Letissya
0
teebo Messages postés 33491 Date d'inscription jeudi 14 octobre 2004 Statut Modérateur Dernière intervention 24 février 2011 1 793 > letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005
23 juin 2003 à 10:40
Elle se rapporte au premier site :-S
Attend, bouge pas :o)

.  .
\_/
0
comment l'administrateur BD gere la base?
comment la connaitre?
comment savoir de quoi elle est constituée?
Le DBA intervient dans qu'elle partie de la base?
c'est quoi les objets, vues,synonymes,trigger et leurs roles dans la base de données?

merci
2

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J'aimerai savoir comment activé la fonction audit sur Oracle 9i. Svp la procedure.
1
Je pense qu'en définissant les droits des utilisateurs, vous ne leurs avez pas donné tous les droits "GRANT ALL PRIVILEGES ..."
1
letissya Messages postés 89 Date d'inscription mercredi 16 avril 2003 Statut Membre Dernière intervention 8 novembre 2005 5
23 juin 2003 à 10:58
donc si j'ai bien compris...

chaque utilisateur est propriétaire des objets qu'il a créés...
et si je veux qu'un autre utilisateur les modifient, il faut que l'utilisateur "créateur" lui autorise ... et cela meme pour la consultation (SELECT) ? ou c'est pas nécessaire ?

Teebo a raison ça fait presque tout tout seul !!! ?



Letissya
0
choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
23 juin 2003 à 11:37
apparemment c'est nécessaire

Chouba
Casque Bleu forumique
0
salut,je voit que la cause de votre probleme est que votre base de donnee est modifiable par n'importe qui!!!!c'est tres deconseiller vous avez bsoin d'une seul personne(un administrateur) a laquel sera attribuer ce droit et si quelqun veut modifier quelque chose dans la BD il doit consulter l'administrateur ....
jespere que jai reussi a te repondre
0
les droits utilisateurs permet de bien préciser le travail pour chaque utilisateur .et sert à proteger notre base de donnée
surtout .
0
ok j'ai un problm aussi
0
Bonjour,

titulaire d un bts informatique de gestion option devpeur je cherche une formation pr devenir administrateur de base de données. Merci de vos réponses
-1
je voudrais avoir des cours administrations de base de donees oracles . merci.
-1
je voudrais avoir des cours administrations de base de donees oracles . merci.
-1
Bonjour,
que ce que vous pensez du systeme d'exploitation 'unix'? je sais que dans quelques annees il ny aura que lui dans le monde dinformatique,mais suis pas vraiment convaincu je voi qui il est trop compliquer et pour l'administration reseau c'est quoi lavantage du 'unix'
enfin,si vous avez quelques conseils ou un cours simple pour ladministration reseau sous unix je serai ravi..........
-3
pour la formation je te conseille d'aller a EMSI(Ecole Marocaine des Sciences de l'Ingénieur) a bir anzaran maarif en face a résidence khribga
-3