Spring Boot Actuator 隐藏了 env 端点中的 属性 值

Spring Boot Actuator hides property values in env endpoint

我的问题是,env 的 Spring-Boot Actuator 端点实际上用这样的开头替换了一些属性:

"applicationConfig: [classpath:/config/application.properties]" : {
    "rest.baseurl" : "http://85.214.247.80:9912",
    "projectKey" : "******",

我不知道为什么。我在我的申请中没有任何暗示他应该隐藏它。我想有一些启发式方法可以根据 属性 名称隐藏它。

任何想法如何避免屏蔽?

默认情况下,/env 端点将隐藏任何 属性 的值,其键忽略大小写,以 passwordsecretkey。您可以使用 endpoints.env.keys-to-sanitize 属性 自定义它。 属性 的值应该是以逗号分隔的后缀或正则表达式列表,以匹配 属性 名称。例如,如果您不关心以 key 结尾的键,您可以将其设置为:

endpoints.env.keys-to-sanitize=password,secret

documentation 是这么说的:

endpoints.env.keys-to-sanitize=password,secret,key,token,.credentials.,vcap_services

Keys that should be sanitized. Keys can be simple strings that the property ends with or regex expressions.

你可以像@Andy Wilkinson 提到的那样去做。但是您会在 /env 端点的 applicationConfig 部分看到值为 "password,secret""endpoints.env.keys-to-sanitize" 属性。

为避免这种情况,您也可以使用代码设置 属性:

public class MyApp {
    @Autowired
    private EnvironmentEndpoint envEndPnt;

    @PostConstruct
    public void initApplication() {
         envEndPnt.setKeysToSanitize("password","secret");
    } 
}

因此,一旦完成所有初始化并调用 initApplication,您将获得手动设置 属性 的 EnvironmentEndPoint

现在要设置的属性是management.endpoint.env.keys-to-sanitize。要显示所有属性,只需将其设置为空即可,例如management.endpoint.env.keys-to-sanitize=