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
端点将隐藏任何具有以 password
、secret
或 key
结尾的键的属性的值,忽略大小写。您可以使用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”端点