Как создать пользователя с правами только для чтения в Postgres в AWS RDS? - PullRequest
1 голос
/ 08 июля 2019

У меня запущен экземпляр Postgres в RDS, и я создал пользователя с помощью следующих команд, однако они продолжают создавать новые таблицы, и я не могу понять, как им запретить создавать.

CREATE USER my_ro_user WITH PASSWORD 'XXXXX';
GRANT CONNECT ON DATABASE "postgres" TO my_ro_user;
GRANT USAGE ON SCHEMA public TO my_ro_user;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO my_ro_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO my_ro_user;
REVOKE CREATE ON SCHEMA public FROM my_ro_user;

Я думал, что REVOKE в этой последней строке помешает им создавать новые таблицы, но, похоже, это не так. Что я делаю не так?

1 Ответ

3 голосов
/ 08 июля 2019

По умолчанию общедоступная роль также имеет права на создание общедоступной схемы. Поскольку my_ro_user является публичным участником, вам также нужно отозвать это:

REVOKE CREATE ON SCHEMA public FROM public;

Как правило, это хорошая идея для каждой производственной базы данных.

...