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
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.
]]>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.
]]>