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

Posted

技术标签:

【中文标题】Spring Boot Actuator 隐藏 env 端点中的属性值【英文标题】:Spring Boot Actuator hides property values in env endpoint 【发布时间】:2015-04-02 17:26:31 【问题描述】:

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

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

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

任何想法如何避免掩蔽?

【问题讨论】:

【参考方案1】:

默认情况下,/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,.凭据。,vcap_services

应该清理的键。键可以是属性以或正则表达式结尾的简单字符串。

【讨论】:

【参考方案2】:

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

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

public class MyApp 
    @Autowired
    private EnvironmentEndpoint envEndPnt;

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于Spring Boot Actuator 隐藏 env 端点中的属性值的主要内容,如果未能解决你的问题,请参考以下文章

无法访问 Spring Boot Actuator“/actuator”端点

Spring Boot -- actuator

spring-boot-starter-actuator监控接口详解

spring-boot 监控 Actuator

Spring boot Actuator

spring boot actuator专题