rechte für eine Spalte entziehen

Hallo,

ich habe eine Datenbank auf die verschieden User der Gruppe ‘leser’ von außen Leserechte besitzen, geregelt über ‘grant select on all tables in schema’ und ‘grant usage on schema’. Nun würde ich gerne der Gruppe die Rechte für eine spezielle Spalte einer Tabelle entziehen. Ist das möglich? d.h. sie sollen die tabelle sehen und lesen können, nicht aber die Einträge in der speziellen Spalte. Habe es mit Revoke all (spalte) on table from group leser versucht…klappt aber nicht.

test=# create schema oppia04;
CREATE SCHEMA
test=*# create table oppia04.test(a int primary key, b int, c int);
CREATE TABLE
test=*# grant select on all tables in schema oppia04 to dummy_user;
GRANT
test=*# grant usage on schema oppia04 to dummy_user;
GRANT
test=*# revoke select on table oppia04.test from dummy_user;
REVOKE
test=*# grant select (a,b) on oppia04.test to dummy_user;
GRANT
test=*# commit;
COMMIT
test=# insert into oppia04.test values (1,2,3);
INSERT 0 1
test=*# commit;
COMMIT
test=# \q

und nach psql -p 5436 test -U dummy_user

test=> select * from oppia04.test;
ERROR:  permission denied for table test
test=*> select a,b from oppia04.test;
 a | b 
---+---
 1 | 2
(1 row)

test=*>

perfect, that works! I tried it also this way before but was not aware to get restriction when select * . When I select only the not restricted columns everything works fine. Thank you!

you are welcome. Und ich kann auch deutsch.

oh, ist mir gar nicht aufgefallen :slight_smile: