Необходимо указать пароль БД для запуска эволюции во время выполнения - Play + Slick - PullRequest
0 голосов
/ 24 января 2019

Мне нужно избегать хранения паролей в виде простого текста в файлах конфигурации, поэтому я храню пароль Postgres извне (в AWS Secrets Manager).

Аналогично решению, представленному здесь: Зашифрованный пароль базы данных в приложении Play + Slick + HikariCP , я смог переопределить dbConfig и предоставить пароль для моих классов DAO следующим образом:

trait MyDaoSlick extends MyTableDefinitions with HasDatabaseConfig[MyPostgresDriver] {
  protected val dbConfigProvider: DatabaseConfigProvider
  override protected val dbConfig: DatabaseConfig[MyPostgresDriver] = secretDbConfig(dbConfigProvider)
  def secretDbConfig(dbConfigProvider: DatabaseConfigProvider): DatabaseConfig[MyPostgresDriver] = {
    DatabaseConfig.forConfig[MyPostgresDriver]("", dbConfigProvider.get[MyPostgresDriver].config
      .withValue("db.user", ConfigValueFactory.fromAnyRef(getUN))
      .withValue("db.password", ConfigValueFactory.fromAnyRef(getPWD)))
  }
}

Это прекрасно работает для обычных запросов к БД, однако эволюция обходит это и все еще ожидает, что имя пользователя и пароль будут в файле application.conf, что отрицательно сказывается на секретности пароля.

Какой-нибудь совет о том, как эволюции могли получить учетные данные БД из функции?

...