Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/12/2010, 16h33   #1
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 417
Points : 2 803
Points : 2 803
Par défaut Gestion des droits

Bonjour

Il y a très longtemps que je n'ai pas utilisé PostgreSQL
depuis la sortie de la V8.0 si ma mémoire ne me fait pas défaut.

bref une éternité et le passage par MySQL et Oracle font que je ne sais plus comment m'y prendre pour gérer les droits.

J'ai installé la V9.0.1.1 J'ai créé un rôle "Test" qui a le droit de créer des bases
mais ne peux pas ce connecter
J'ai créer un rôle de connexion "perso" (user) qui est membre de "Test" et qui peut se connecter de plus il hérite des droits. et à ma surprise il ne peut créer de base.
je n'ai donc visiblement pas compris la notion de rôle et d'héritage
je lui ai donné les droit de création de base.

j'ai créé un rôle de connexion "other" qui est membre de "Test"qui peut se connecter mais pas créer de base.

je me suis connecté "Perso" j'ai créé une base et j'ai fixé les droit par défaut
j'ai ajouté "other" avec tous les droits sur les tables, les fonctions etc.

puis j'ai crée un table et l'utilisateur "other" ne peut y accéder
la encore je ne comprends pas le fonctionnement des droits par défaut
en ajoutant "other" dans les droits par défaut pour les tables je m'attendait à ce que lorsque je créé une table elle hérite de ces droits par défaut ce qui n'est pas le cas.

la façon de gérer les droits d'un outils de base à un autre est tellement différents que je me suis perdu.

voici ce que j'ai l'habitude de faire.
L'admin à tous les droits.
pour chaque projets je crée un user projectAdm et un groupe project
et un ou plusieurs user dev
tous les utilisateurs du projet sont dans le groupe project.
le projectAdmin est le seul à pouvoir créer des bases dans le projet
les utilisateurs dev peuvent créer des tables, des vues, des fonction etc.
et tous les dev peuvent voir les création des autres dev
enfin je crée un ou plusieurs user simpleUser qui peut lire et écrire des données utiliser les fonctions etc.

je n'ai visiblement pas bien saisie les évolution du modèle de postgreSQL et je n'obtient pas les effets désirés. c'est comme si à chaque fois que je créais quelque chose sous un nom donnée je dois objet par objet re donner tous les droits à chaque utilisateur.

en lisant la doc je me disait que la notion de group (rôle) me permettrait de définir un groupe "projet" un groupe "dev" du projet un groupe "simpleuser" et ainsi créer des user et le mettre dans un groupe.

soit ce n'est pas possible et j'ai vraiment mal compris la doc.
soit ça l'est mais là je n'ai pas compris comment le mettre en oeuvre.

A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 22h59   #2
Modérateur
 
Inscription : octobre 2008
Messages : 1 504
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 1 504
Points : 2 033
Points : 2 033
Citation:
J'ai créer un rôle de connexion "perso" (user) qui est membre de "Test" et qui peut se connecter de plus il hérite des droits. et à ma surprise il ne peut créer de base.
Si l'utilisateur a le privilège CREATEDB (qui se positionne par CREATE USER ou ALTER USER, mais pas par GRANT), il a le droit de créer une base, sinon non. Il n'y a pas d'héritage de cette notion.

Citation:
je me suis connecté "Perso" j'ai créé une base et j'ai fixé les droit par défaut
j'ai ajouté "other" avec tous les droits sur les tables, les fonctions etc.
puis j'ai crée un table et l'utilisateur "other" ne peut y accéder
Le problème est peut-être qu'on ne peut pas mettre des droits sur des objets non encore créés. Mais quand un objet est créé on peut le transférer à quelqu'un d'autre avec une commande du style
Code :
ALTER TABLE nomtable OWNER TO projet
Dans ton cas ça peut être une solution plus simple que de faire des GRANT, à voir.
estofilo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 20h08   #3
Expert Confirmé
 
Avatar de sekaijin
 
Femme
Urbaniste
Inscription : juillet 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 48
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Urbaniste
Secteur : Santé

Informations forums :
Inscription : juillet 2004
Messages : 1 417
Points : 2 803
Points : 2 803
A quoi sert alors la notion de groupe (rôle qui ne peut se connecter) ?

merci tout de même
A+JYT
sekaijin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 22h33   #4
Expert Confirmé Sénior
 
Avatar de Sve@r
 
Homme Frédéric
Ingénieur développement logiciels
Inscription : février 2006
Messages : 3 055
Détails du profil
Informations personnelles :
Nom : Homme Frédéric
Âge : 44
Localisation : France, Oise (Picardie)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 3 055
Points : 4 931
Points : 4 931
A centraliser tout un ensemble de droits.
Imaginons que t'aies 500 utilisateurs (user1, user2, user3, ..., user500) qui aient besoin de faire de l'update sur ta table toto
2 solutions
solution 1:
Code :
1
2
3
4
5
6
CREATE TABLE toto (...);
GRANT UPDATE ON toto TO user1;
GRANT UPDATE ON toto TO user2;
GRANT UPDATE ON toto TO user3;
...
GRANT UPDATE ON toto TO user500;
Ok, tu me diras "c'est pas la mort". Mais oups, l'user18 et l'user55 disparaissent
Code :
1
2
3
4
REVOKE UPDATE ON toto FROM user18;
REVOKE UPDATE ON toto FROM user55;
DROP role user18;
DROP role user55;
Et oups, il faut aussi qu'ils aient le droit delete. Et aussi les mêmes droits sur une table titi. Là, ça commence déjà doucement à bien me faire ch...

solution 2
Code :
1
2
CREATE TABLE toto (...);
GRANT UPDATE ON toto TO groupUser;
Puis, à chaque utilisateur
Code :
CREATE role userX login IN role groupUser;  => chaque userX héritera des droits du groupe "groupUser"
Ou à chaque suppression
Oups, il faut aussi une table titi
Code :
1
2
CREATE TABLE titi (...);
GRANT UPDATE ON titi TO groupUser;   => tous les userX appartenant au groupe "groupUser" hériteront du droit UPDATE sur titi
Oups, il faut aussi du delete
Code :
1
2
GRANT DELETE ON toto TO groupUser;
GRANT DELETE ON titi TO groupUser;
Oups, ils n'ont maintenant plus le droit update sur toto
Code :
REVOKE UPDATE ON toto FROM groupUser;
Et c'est maintenant beaucoup plus simple (enfin pour moi quoi)...
__________________
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Tout ce qu'un individu reçoit sans rien faire pour l'obtenir, un autre individu a dû travailler pour le produire sans en tirer profit.
Tout Pouvoir ne peut distribuer aux uns que ce qu'il a préalablement confisqué à d'autres car on n'accroît pas les biens en les divisant.
Quand la moitié d'un peuple croit qu'il ne sert à rien de faire des efforts car l'autre moitié les fera pour elle, et quand cette dernière moitié se dit qu'il ne sert à rien d'en faire car ils bénéficieront à d'autres, cela s'appelle le déclin et la fin d'une nation.
Dr. Adrian Rogers, 1931
Sve@r est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h16.


 
 
 
 
Partenaires

Hébergement Web