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

时间:2015-02-03 13:34:16

标签: configuration spring-boot

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

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

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

任何想法如何避免掩盖?

2 个答案:

答案 0 :(得分:20)

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

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

这是documentation所说的:

  

endpoints.env.keys到了sanitize =密码,保密,钥匙,令牌。凭证。,VCAP_SERVICES

     

应该消毒的钥匙。键可以是属性结束的简单字符串或正则表达式。

答案 1 :(得分:2)

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

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

public class MyApp {
    @Autowired
    private EnvironmentEndpoint envEndPnt;

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

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