Doctorfistool
Дата: 23.12.2014 11:46:57
Добрый день, прошу помочь разобраться в назначении прав на конкретную БД на сервере postgresql.
Суть задачи - назначить права (например на чтение) пользователю к БД "целиком" за минимальное количество действий.
Прочитаны другие ответы, но не устраивает:
1) рекомендуют для настраиваемой БД сменить владельца на требуемого пользователя (мне кажется совсем плохо);
2) рекомендации настройки через групповую роль - по этой рекомендации сделал следующее
- создал обычного пользователя test
- создал групповую роль test_gr
- включил пользователя test в test_gr,
- создал БД test_db,
в БД test_db 2 схемы - public и test_sch, в каждой схеме - наборы таблиц
далее пробую дать права групповой роли test_gr к БД test, допустим все права
GRANT ALL PRIVILEGES on DATABASE test_db to test_gr;
при этом права к БД задаются, ответ на psql \l:
test_db | postgres | UTF8 | ru_RU.UTF-8 | ru_RU.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres+
| | | | | test_gr=CTc/postgres
для таблиц ответ на psql \z :
Права доступа
Схема | Имя | Тип | Права доступа | Права доступа к столбцам
--------+------+---------+---------------+--------------------------
public | tst1 | таблица | |
public | tst2 | таблица | |
при этом права на таблицы из схемы test_sch не отображаются в выводе вообще, запросы делаю от postgres ;
от пользователя test подключение к БД test_db возможно, но запрос к таблицам невозможен.
Вопрос - какой командой можно назначить права на БД, так чтобы разрешения для групповой или обычной роли распространялись и на все объекты БД ?
Или права должны назначаться на отдельные объекты БД ?
Maxim Boguk
Дата: 23.12.2014 14:00:45
Doctorfistool,
GRANT (чего уж вам надо) ON ALL TABLES IN SCHEMA (список нужных схем через запятую) TO test_gr;
+
GRANT USAGE ON SCHEMA (список нужных схем через запятую) TO test_gr;
ВНИМАНИЕ - это не значит что таблицы созданные после этой комманды тоже получат эти права.
Для автовыдачи прав для всех будущих таблиц почитайте про ALTER DEFAULT PRIVILEGES
PS: вообще почитате в psql
\h grant
\h ALTER DEFAULT PRIVILEGES
там все что надо есть.
--Maxim Boguk
www.postgresql-consulting.ru
Doctorfistool
Дата: 23.12.2014 14:13:39
Maxim Boguk,
список схем получить командой \dn ?
а если схем много, то для каждой выполнять указанные в ответе шаги ?