Я создаю приложение весенней загрузки. Миграция базы данных 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 :
Вотсуть, чтобы воспроизвести проблему: https://gist.github.com/happygrizzly/849a6a791f028ba5b191f73180ae35d1