У меня установлен hawtio 2.1.0, подключенный к конечной точке jolokia, предоставляемой приложением spring boot 2.0.5.
Мое приложение yaml содержит
management:
endpoints:
enabled-by-default: true
web:
exposure:
include: "jolokia"
jmx:
exposure:
exclude: "*"
endpoint:
jolokia:
enabled: true
config:
debug: true
Вдобавок у меня есть фильтр
@Configuration
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.requestMatchers(EndpointRequest.to(ShutdownEndpoint.class))
.hasRole("ADMIN")
.requestMatchers(EndpointRequest.to(HealthEndpoint.class, InfoEndpoint.class))
.permitAll()
.requestMatchers(EndpointRequest.toAnyEndpoint())
.fullyAuthenticated()
.and().httpBasic();
}
Когда я получаю доступ к конечной точке привода jolokia в моем браузере, он правильно запрашивает мои учетные данные. Таким образом, с помощью этого метода конечные точки защищены.
Когда я подключаюсь к конечной точке jolokia через веб-приложение hawt.io, мне не нужно предоставлять какие-либо учетные данные. Не имеет значения, запущен ли hawt.io на удаленном компьютере или на локальной машине, на которой запущено приложение Spring Boot. Hawt.io может получить всю информацию о MBean через jolokia.
Как это может быть? Hawt.io каким-то образом обходит защиту конечной точки исполнительного механизма jolokia.
Есть идеи, почему это так или как я могу защитить конечную точку привода jolokia, чтобы даже hawt.io запрашивал учетные данные?
Заранее большое спасибо!
Ваше здоровье
Оливер
Спасибо за Ваш ответ. Я не использую агент jolokia jvm, а конечную точку привода jolokia для пружинной загрузки:
Вы уверены, что hawt.io использует конечную точку Actuator? Как вы его настроили?
Спасибо за Ваш ответ. Я не использую агент jolokia jvm, а конечную точку привода jolokia для пружинной загрузки: Registered '/actuator/jolokia' to jolokia-actuator-endpoint. В hawtio я добавил удаленное соединение с локальный: 8081 / исполнительный механизм / jolokia, который является конечной точкой привода пружинного ботинка. Вопрос все еще в том, почему hawtio не запрашивает у меня учетные данные для доступа к конечной точке jolokia?
Я не запускаю приложение весенней загрузки с java -javaagent:agent.jar ....
Я не думаю, что это важно. Как описано в документации, на которую я ссылался выше, hawt.io может динамически добавлять агент в JVM. Я подозреваю, что здесь происходит именно это.
Я получаю такое же поведение, когда hawt.io установлен на машине коллеги, получающей доступ к моему весеннему загрузочному приложению на моей машине через http. hawtio представляла бы огромную угрозу, если бы могла удаленно добавить агент jolokia к любой виртуальной машине, работающей в сети.
Что будет, если удалить management.endpoints.jmx.exposure.exclude = *? Это должно означать, что ничего из JMX / Jolokia не раскрывается.
Также было бы огромной угрозой, если бы он мог обойти безопасность HTTP. Возможно, вы можете обновить свой вопрос с помощью минимальный, полный и проверяемый пример, чтобы другие могли видеть именно то, что вы видите?




Насколько мне известно, hawt.io не использует конечную точку Jolokia Actuator. Я считаю, что он использует Java-агент. В документации есть дополнительная информация: hawt.io/docs/faq/#how-do-i-connect-to-my-remote-jvm. То, как именно вы будете защищать вещи, будет зависеть от того, как Hawt.io установил соединение с JVM.