Vous n'êtes pas identifié(e).
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
Vous avez quel version de PostgreSQL ? parce que les droits sur les colonnes, c'est très récent.
Guillaume.
Hors ligne
Il me semble que c'est la version 9.1.5-1
Hors ligne
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
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
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
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
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
Merci beaucoup pour votre aide tout fonctionne comme je souhaitais !
Hors ligne