Vous n'êtes pas identifié(e).

#1 27/05/2010 04:27:36

Alain V.
Membre

[Débutant] Comment organiser un groupe?

Bonjour le forum,

Je ne sais pas trop comment formuler mes recherches dans la documentation.

Ce que je veux faire :
- une database de plusieurs tables accessibles à au moins trois users.
- l'un deux ne pourrait que lire (select?) les tables et les vues
- l'autre pourrait altérer (insérer/droper/updater/truncater?) toutes les colonnes, les tuples et bien sûr les tables.
- un troisième ne pourrait qu'insérer et updater quelques colonnes seulement sans possibilité de détruire des données (ajouts + modifs autorisés mais pas de suppressions).
Ce que j'ai fait :
Sous l'utilisateur postgres j'ai commencé par créer un groupe en croyant que ce groupe ne devrait pas avoir de login (aucune entrée dans /etc/password) et en commençant pas deux users :
create database role legroupe role leuser1, leuser2;

Ensuite je patauge allègrement pour attribuer une database à ce groupe sous un autre proprio que postgres tout en grantant des droits différents à chacun des users sur les tables.
J'ai compris que les privilèges accordés aux users sont distincts que ceux du groupe auquel ils appartiennent.
J'ai tenté de tester dans tous les sens (jusqu'à le vider) le pg_hba.conf avec la désagréable sensation que ce ne doit pas être la bonne voie car les accès ne semblent pas être affectés.
Sinon, hormis cette tentative d'avoir un groupe, le pg_hba.conf semble bien correspondre à ce que j'en attends.

Dans cette doc http://docs.postgresqlfr.org/8.2/sql-grant.html je n'ai compris que la possiblité de granter un user sur une table et non plusieurs users sur plusieurs tables au sein d'une seule database.

Je suis désolé si ma description est tordue, mal ou incomplètement formulée.
Est-ce que quelqu'un aurait un lien vers un tuto qui parle de groupes / d'utilisateurs avec des exemples montrant des droits différents sur les tables?

Merci beaucoup par avance de me mettre sur des voies de recherche ou de m'expliquer ce que je n'ai pas compris dans la doc.

Hors ligne

#2 27/05/2010 09:36:18

gleu
Administrateur

Re : [Débutant] Comment organiser un groupe?

Alain V. a écrit :

Ce que je veux faire :
- une database de plusieurs tables accessibles à au moins trois users.
- l'un deux ne pourrait que lire (select?) les tables et les vues
- l'autre pourrait altérer (insérer/droper/updater/truncater?) toutes les colonnes, les tuples et bien sûr les tables.
- un troisième ne pourrait qu'insérer et updater quelques colonnes seulement sans possibilité de détruire des données (ajouts + modifs autorisés mais pas de suppressions).

Tout ceci est possible. En ce qui concerne les droits sur les colonnes, ce n'est disponible qu'à partir de la version 8.4.

Alain V. a écrit :

Ce que j'ai fait :
Sous l'utilisateur postgres j'ai commencé par créer un groupe en croyant que ce groupe ne devrait pas avoir de login (aucune entrée dans /etc/password) et en commençant pas deux users :

La création de groupe pour les droits dans PostgreSQL n'a absolument rien à voir avec des fichiers systèmes Linux.

Alain V. a écrit :

create database role legroupe role leuser1, leuser2;

Je ne sais pas du tout ce que vous entendez par là.

Alain V. a écrit :

Ensuite je patauge allègrement pour attribuer une database à ce groupe sous un autre proprio que postgres tout en grantant des droits différents à chacun des users sur les tables.

À partir du moment où le groupe est propriétaire de la base, le groupe a tous les droits sur cette base. Cela étant dit, le groupe n'a pas besoin d'être propriétaire de la base, d'après la description que vous avez fait ci-dessus.

Alain V. a écrit :

J'ai compris que les privilèges accordés aux users sont distincts que ceux du groupe auquel ils appartiennent.

Dans quel sens ? les utilisateurs ont des droits, les groupes en ont d'autres. Un utilisateur membre d'un groupe aura les droits de ce groupe (automatiquement si l'utilisateur a l'attrobut INHERIT et à la demande si l'utilisateur n'a pas cet attribut.

Alain V. a écrit :

J'ai tenté de tester dans tous les sens (jusqu'à le vider) le pg_hba.conf avec la désagréable sensation que ce ne doit pas être la bonne voie car les accès ne semblent pas être affectés.

Le pg_hba.conf sert bien à protéger les accès à la base. Mais pas à forcer certaines contraintes configurées par les droits.

Alain V. a écrit :

Sinon, hormis cette tentative d'avoir un groupe, le pg_hba.conf semble bien correspondre à ce que j'en attends.

Dans cette doc http://docs.postgresqlfr.org/8.2/sql-grant.html je n'ai compris que la possiblité de granter un user sur une table et non plusieurs users sur plusieurs tables au sein d'une seule database.

Ceci n'existe pas avant la future 9.0. Il faut le faire utilisateur par utilisateur (ou tous les utilisateurs). D'où l'intérêt de créer des groupes et de rendre certains utilisateurs membres de ces groupes.

Alain V. a écrit :

Je suis désolé si ma description est tordue, mal ou incomplètement formulée.
Est-ce que quelqu'un aurait un lien vers un tuto qui parle de groupes / d'utilisateurs avec des exemples montrant des droits différents sur les tables?

Le mieux qu'on a, c'est ça : http://blog.postgresql.fr/index.php?post/drupal/137


Guillaume.

Hors ligne

#3 27/05/2010 10:18:08

Alain V.
Membre

Re : [Débutant] Comment organiser un groupe?

gleu a écrit :
Alain V. a écrit :

create database role legroupe role leuser1, leuser2;

Je ne sais pas du tout ce que vous entendez par là.

Effectivement je suis en train de mélanger la notion de groupe avec celle d'une database!

Merci pour le lien. Je  vais m'y accrocher.

Hors ligne

Pied de page des forums