Мне нужно избегать хранения паролей в виде простого текста в файлах конфигурации, поэтому я храню пароль 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, что отрицательно сказывается на секретности пароля.
Какой-нибудь совет о том, как эволюции могли получить учетные данные БД из функции?