Ограничить права на создание таблицы для вновь созданных пользователей в RDS PostgreSQL 9.6 - PullRequest
0 голосов
/ 27 декабря 2018

Возникла проблема при создании пользователей с правами только для чтения в RDS PostgreSQL 9.6.Я выполняю следующие команды SQL:

---- ###### CREATE ROLE ################
CREATE ROLE readonlyrole_dev;

-- Grant access to existing tables
GRANT USAGE ON SCHEMA public TO readonlyrole_dev;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO readonlyrole_dev;

-- set the privileges that will be applied to objects created in the future.
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO readonlyrole_dev;



CREATE USER readonly_dev WITH PASSWORD 'welcome1';
GRANT readonlyrole_dev TO readonly_dev;

Когда я регистрируюсь с пользователем readonly_dev, он имеет право создавать новые таблицы по умолчанию, но я не хочу этого делать.Я хочу оставить readonly_dev только для чтения.

Примечание: Чтобы отозвать доступ у пользователя, я выполняю

REVOKE CREATE ON SCHEMA public FROM PUBLIC;

, который также отменяет привилегию создания объектов для всех старых пользователей.Я хочу отозвать право на создание только у вновь созданного пользователя.

Как я могу это сделать?

1 Ответ

0 голосов
/ 28 декабря 2018

Вы не можете этого сделать, и в этом нет необходимости.

Просто запретите пользователю разрешение CREATE на все схемы.Для этого вы должны использовать группы пользователей - поместите всех пользователей, которые должны иметь право создавать таблицы, в группу, которая имеет необходимые права доступа к схеме, и отозвайте CREATE из PUBLIC.

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

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