Обложка канала

Хмельной Девопс

Будничный хаос и мрак при поддержке ИТ систем.

Хмельной Девопс

8 лет назад
Открыть в
Никому не рекомендую сталкиваться с системой разграничения прав в постгресе. Но если уж столкнулись, то моя заметка может вам помочь не сойти с ума.
Итак, несколько поинтов, как выдавать права:
1. Права выдавайте через роли, иначе, после сотого раза grant select on all tables in schema public to user, есть вероятность запутаться. Создаем роль create role schema_read
2. Назначаем права на текущие таблицы и последовательности в нужной схеме (возьмем public, к примеру):
grant all privileges on all tables in schema public to schema_read
grant all privileges on all sequences in schema public to schema_read
3. А теперь ход конем. При создании новой таблицы, она получает права из default privileges, посмотреть их можно с помощью \ddp запроса в постгресе. Добавим-ка нашей роли права на чтение всех новых таблиц и последовательностей:
alter default privileges in schema public grant select on tables to schema_read;
alter default privileges in schema public grant select on sequences to schema_read;
4. Ну и добавляем нашего пользователя в группу schema_read:
grant schema_read to user

Чуть не забыл, если у вас не public схема, то выдайте еще права роли на ее использование:
grant usage on schema schema_name to schema_read