如何在Spring启动时禁用Jolokia的写操作?

时间:2018-06-01 14:36:49

标签: java spring-boot spring-boot-actuator jolokia

我有一个基于Spring启动(v1.5.9)的应用程序,由Spring启动执行器提供Jolokia。

Jolokia工作正常。我可以读取值,例如:

http://localhost:8080/jolokia/read/java.lang:type=ClassLoading/Verbose

给了我:

{"request":{"mbean":"java.lang:type=ClassLoading","attribute":"Verbose","type":"read"},"value":false,"timestamp":1527859447,"status":200}

我想要的是禁用写入操作,例如:

http://localhost:8080/jolokia/write/java.lang:type=ClassLoading/Verbose/true

spring boot配置如下所示:

management.security.enabled=false
management.endpoints.jmx.exposure.exclude=* 
management.endpoints.web.exposure.include=jolokia,metrics
management.endpoint.jolokia.config.policyLocation=classpath:/jolokia.xml

Jolokia在WEB-INF \ classes \ jolokia.xml中的策略(根据https://jolokia.org/reference/html/security.html所产生的战争)包含:

<restrict>
    <commands>
        <command>read</command>
        <command>list</command>
        <command>version</command>
        <command>search</command>
    </commands>
</restrict>

尽管如此,我在应用程序的日志中看到以下注释:

jolokia: No access restrictor found, access to any MBean is allowed

上面例子中的写操作工作正常。

我做错了什么?我应该将策略文件放在其他地方吗?是否可以直接从Spring启动配置配置Jolokia的策略?

1 个答案:

答案 0 :(得分:1)

看起来你无意中使用了Spring Boot 1.5.x的Spring Boot 2.0配置属性。在1.5中,您应该使用jolokia.config.policyLocationreference documentation中有更多信息。