我需要避免将纯文本密码存储在配置文件中,因此我将 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 中,这违背了密码作为秘密的目的。
关于进化如何从函数中获取数据库凭据的任何建议?