如何 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 ]
}
}
使用 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 ]
}
}