Vault - интеграция AWS RDS Postgres - PullRequest
0 голосов
/ 01 июня 2018

Я настраиваю интеграцию между хранилищем и экземпляром postgres, работающим в AWS RDS.Моя стратегия такова:

  1. Регистрация базы данных

    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")
    
  2. Регистрация схемы

    a.Используйте хранилище, чтобы получить пользователя с ролью server_admin.б.Создайте схему

    CREATE SCHEMA IF NOT EXISTS ${schema_name} AUTHORIZATION server_admin
    

    c.Создайте 3 роли хранилища (read_only, read_write, admin)

  3. Инициализация приложения

    a.Получите пользователя базы данных из хранилища с ролью администратора и запустите миграцию flyway

    b.Получить пользователя базы данных из хранилища с ролью read_write для нормальной работы

Моя проблема заключается в том, что во время первоначальной инициализации схемы моим приложением (flyway) таблицы принадлежат динамически генерируемому пользователю.В следующий раз, когда я попытаюсь выполнить миграцию, я получу нового пользователя (через хранилище) с ролью администратора, но у него нет прав доступа к таблицам, созданным первым пользователем.

Какова рекомендуемая стратегия дляВладение базой данных / схемой / таблицей при использовании интеграции хранилища с postgresql?

...