Postgres: предоставление доступа к роли / пользователю для будущих таблиц, созданных другой ролью / пользователем - PullRequest
0 голосов
/ 03 октября 2019

Я создаю приложение весенней загрузки. Миграция базы данных Flyway выполняется при запуске приложения.

Я решил использовать две разные роли: role__app ( права чтения / записи права на таблицы, последовательности в app схеме) и role__migration ( расширенные права в app / миграция схемы).

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

ALTER DEFAULT PRIVILEGES IN SCHEMA app GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO role__app;
ALTER DEFAULT PRIVILEGES IN SCHEMA app GRANT USAGE ON SEQUENCES TO role__app;

Но когда новые таблицы добавляются в схему app , user__app (принадлежит Роль__app ) не имеет доступа к таблицам.

Возможно ли поддерживать такой поток (с приложением, пользователями / ролями миграции) с помощью Postgres или любым другим способом?


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

REVOKE CREATE ON SCHEMA public FROM PUBLIC;
REVOKE ALL ON DATABASE myDb FROM PUBLIC;

Обновление 1

Я добавил предложение FOR ROLE,Тем не менее, я все еще получаю сообщение об отказе в разрешении для созданной таблицы ( app.property ) в схеме приложения для пользователя user__app . Владелец таблицы: user__mig .

Обновление 2

После входа в систему как пользователь postgres в dbeaver мы видим, что user__mig имеет все необходимоеотмечены разрешения, тогда как user__app вообще не имеет разрешений для таблицы app.property :

enter image description here


Вотсуть, чтобы воспроизвести проблему: https://gist.github.com/happygrizzly/849a6a791f028ba5b191f73180ae35d1

1 Ответ

1 голос
/ 03 октября 2019

Вы должны написать

ALTER DEFAULT PRIVILEGES FOR USER role__migration ...

Если вы опустите предложение FOR USER, привилегии предоставляются только для объектов, созданных пользователем, который запустил ALTER DEFAULT PRIVILEGES.

. оператор, привилегии предоставляются, когда role__migration создает объект. Это не распространяется на членов роли role__migration.

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