Как предоставить доступ к базе данных только конкретным пользователям? - PullRequest
0 голосов
/ 07 января 2019

Это, наверное, глупый вопрос, и я уверен, что это проблема с моей ментальной моделью.

В конечном итоге я хочу установить привилегии для такой роли, чтобы любые другие роли в этой роли имели CRUD-доступ ко всем текущим таблицам и автоматически ко всем будущим таблицам на неограниченный срок для указанной базы данных. но ТОЛЬКО те роли, которые были явно добавлены к указанной «групповой роли».

Непонятно, как это сделать.

1 Ответ

0 голосов
/ 07 января 2019

Нет способа получить именно то, что вы хотите, но вы можете подойти достаточно близко.

Работа с существующими таблицами достаточно проста: просто отмените все привилегии, которые были предоставлены для таблиц, и предоставьте доступ к роли вашей группы. Команда, которая делает это легко:

GRANT/REVOKE ALL
   ON ALL TABLES IN SCHEMA ... TO/FROM ...;

Чтобы иметь дело с будущими таблицами, вам нужно ограничить круг пользователей, которые могут создавать таблицы, несколькими, и для каждой из них запустите

ALTER DEFAULT PRIVILEGES FOR ROLE creating_user
   GRANT ALL ON TABLES TO ...;

Если вы не можете перечислить пользователей, которые могут создавать таблицы, триггер события, выполняющийся в конце каждого оператора CREATE, может быть альтернативой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...