Я настраиваю интеграцию между хранилищем и экземпляром postgres, работающим в AWS RDS.Моя стратегия такова:
Регистрация базы данных
a.Используйте основные учетные данные RDS для создания роли с именем server_admin:
CREATE ROLE server_admin WITH LOGIN PASSWORD '${password}' CREATEROLE CREATEDB
b.Зарегистрируйте базу данных в хранилище, используя роль server_admin postgres (библиотека Python hvac):
vault.write("database/config/{0}".format(database_identifier),
plugin_name=plugin_name,
connection_url=connection_url,
allowed_roles="*")`
c.Затем создайте роль хранилища для администрирования (создание схемы):
vault.write("database/roles/{0}".format(role_name),
db_name=database_identifier,
creation_statements='"CREATE ROLE \"{{name}}\" WITH LOGIN INHERIT PASSWORD '{{password}}' IN ROLE SERVER_ADMIN;"',
default_ttl="10000h")
Регистрация схемы
a.Используйте хранилище, чтобы получить пользователя с ролью server_admin.б.Создайте схему
CREATE SCHEMA IF NOT EXISTS ${schema_name} AUTHORIZATION server_admin
c.Создайте 3 роли хранилища (read_only, read_write, admin)
Инициализация приложения
a.Получите пользователя базы данных из хранилища с ролью администратора и запустите миграцию flyway
b.Получить пользователя базы данных из хранилища с ролью read_write для нормальной работы
Моя проблема заключается в том, что во время первоначальной инициализации схемы моим приложением (flyway) таблицы принадлежат динамически генерируемому пользователю.В следующий раз, когда я попытаюсь выполнить миграцию, я получу нового пользователя (через хранилище) с ролью администратора, но у него нет прав доступа к таблицам, созданным первым пользователем.
Какова рекомендуемая стратегия дляВладение базой данных / схемой / таблицей при использовании интеграции хранилища с postgresql?