Мне нужно избегать хранения простых текстовых паролей в файлах конфигурации, поэтому я храню пароль Postgres извне (в AWS Secrets Manager).
Аналогично приведенному здесь решению: Зашифрованный пароль базы данных в Play + Slick + HikariCP application, я смог переопределить 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, что противоречит цели секретности пароля.
Любые советы о том, как эволюции могут получить учетные данные БД из функции?