如何 censor/hide 一个 HOCON 值不出现在 Ktor 日志中

How to censor/hide a HOCON value from appearing in Ktor logs

使用 Ktor 作为 Web 服务器并使用 (HOCON) application.conf 文件对其进行配置。

我已经在配置中设置了连接到数据库的默认密码,以及使用环境变量覆盖它的能力。

当服务器启动时,配置被打印到控制台(并且可能在将来存储在日志中),问题是密码是显而易见的。

有谁知道防止这种情况发生的方法吗?

代表application.conf:

ktor {

    deployment {
        port = 8080
        port = ${?PORT}

        databaseUrl = ${?DATABASE_URL}
        databaseUser = ${?DATABASE_USER}
        databasePassword = ${?DATABASE_PASSWORD}
        ...
    }
}

示例服务器输出

...
# env var DATABASE_PASSWORD
"databasePassword" : "mysecretpassword",
# env var DATABASE_URL
"databaseUrl" : "jdbc:postgresql://localhost:5432/postgres",
# env var DATABASE_USER
"databaseUser" : "postgres",
...

您可以将具有敏感值的参数放在 security 部分中,使它们隐藏在日志中。这是一个例子:

ktor {
    deployment {
        port = 8085
        port = ${?PORT}
    }

    security {
        databaseUrl = ${?DATABASE_URL}
        databaseUser = ${?DATABASE_USER}
        databasePassword = ${?DATABASE_PASSWORD}
    }

    application {
        modules = [ com.example.ApplicationKt.module ]
    }
}