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

#1 13/10/2016 07:44:06

Geo34
Membre

Attribuer des droits sur des colonnes d'une table - pgAdmin III

Bonjour à tous,

J'utilise pgAdmin pour ma BDD postgresql et je souhaiterai savoir comment attribuer des droits en fonction de l'utilisateur sur une colonne d'une table.
J'arrive à attribuer des droits sur les tables en allant dans les propriétés de la table, droits etc. mais en procédant de la même manière pour les colonnes cela ne marche pas.
Faut il faire autrement pour les colonnes ?

Merci d'avance pour vos réponses.

Hors ligne

#2 13/10/2016 08:52:56

gleu
Administrateur

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

Vous avez quel version de PostgreSQL ? parce que les droits sur les colonnes, c'est très récent.


Guillaume.

Hors ligne

#3 13/10/2016 09:37:09

Geo34
Membre

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

Il me semble que c'est la version 9.1.5-1

Hors ligne

#4 13/10/2016 09:52:29

gleu
Administrateur

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

Donc ça existe. À mon sens, il faut aller sur la fenêtre de propriété des colonnes, colonne par colonne, et non pas par celle des tables.


Guillaume.

Hors ligne

#5 13/10/2016 11:59:49

Geo34
Membre

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

Oui à priori ça existe vu que dans propriétés des colonnes il y a l'onglet "droits" mais j'ai essayé de mettre des droits et cela ne fonctionne pas.
Si quelqu'un à la solution ..
Merci.

Hors ligne

#6 13/10/2016 16:16:10

gleu
Administrateur

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

C'est impossible de vous donner une "solution" si on ne connait pas le problème que vous rencontrez. Commencez par nous dire exactement ce que vous faites qu'on puisse essayer de reproduire. Sinon c'est peine perdue.


Guillaume.

Hors ligne

#7 14/10/2016 07:50:10

Geo34
Membre

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

Bonjour alors je vais tenter d'expliquer au mieux ce que j'ai fait.

Sur ma table en question j'ai trois groupes d'utilisateurs qui doivent mettre à jour certaines colonnes.
Je voudrais donc que certaines colonnes soient renseignées par seulement un groupe et d'autres renseignées par les deux autres groupes.

Du coup pour les droits de ma table j'ai mis ces droits:
- groupe utilisateurs 1 : INSERT SELECT UPDATE
- groupe utilisateurs 2: INSERT SELECT UPDATE
-groupe utilisateurs 3: INSERT SELECT UPDATE

Avec ces droits ces trois groupes peuvent donc mettre à jour toutes les colonnes de la table.
J'ai donc essayer de faire pareil pour les colonnes en attribuant les droits suivants:
colonne 1:
-groupe d'utilisateurs 1:INSERT SELECT UPDATE
-groupe utilisateurs 2: INSERT SELECT UPDATE
-groupe utilisateurs 3: SELECT

afin que le groupe 3 ne puisse pas modifier la colonne 1.
Après cette manip cela ne fonctionne pas car le groupe 3 peut toujours modifier la colonne 1.

Voilà j'espère avoir été assez claire .

Merci d'avance.

Hors ligne

#8 14/10/2016 08:32:03

gleu
Administrateur

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

A priori, le problème vient du fait que vous avez donné des droits au niveau de la table, ce qui surcharge les droits au niveau des colonnes.

Voici un exemple complet :

geo34=# create table t1(c1 integer, c2 integer, c3 integer);
CREATE TABLE
geo34=# create role u1 login;
CREATE ROLE
geo34=# create role u2 login;
CREATE ROLE
geo34=# grant select, insert, update (c1) on table t1 to u1;
GRANT
geo34=# grant select (c1) on table t1 to u2;
GRANT
geo34=# insert into t1 values (1, 2, 3);
INSERT 0 1
geo34=# select * from t1;
 c1 | c2 | c3 
----+----+----
  1 |  2 |  3
(1 row)

geo34=# \c - u1
You are now connected to database "geo34" as user "u1".
geo34=> select * from t1;
 c1 | c2 | c3 
----+----+----
  1 |  2 |  3
(1 row)

geo34=> insert into t1 values (4, 5, 6);
INSERT 0 1
geo34=> update t1 set c1=-c1;
UPDATE 2
geo34=> select * from t1;
 c1 | c2 | c3 
----+----+----
 -1 |  2 |  3
 -4 |  5 |  6
(2 rows)

geo34=> \c - u2
You are now connected to database "geo34" as user "u2".
geo34=> select * from t1;
ERROR:  permission denied for relation t1
geo34=> select c1 from t1;
 c1 
----
 -1
 -4
(2 rows)

geo34=> select c2 from t1;
ERROR:  permission denied for relation t1
geo34=> insert into t1 values (7, 8, 9);
ERROR:  permission denied for relation t1
geo34=> update t1 set c1=-c1;
ERROR:  permission denied for relation t1

Guillaume.

Hors ligne

#9 14/10/2016 12:54:33

Geo34
Membre

Re : Attribuer des droits sur des colonnes d'une table - pgAdmin III

Merci beaucoup pour votre aide tout fonctionne comme je souhaitais !

Hors ligne

Pied de page des forums