Защита конечной точки привода jolokia не работает при доступе через hawt.io

У меня установлен 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 запрашивал учетные данные?

Заранее большое спасибо!

Ваше здоровье

Оливер

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

Andy Wilkinson 16.10.2018 19:49

Спасибо за Ваш ответ. Я не использую агент jolokia jvm, а конечную точку привода jolokia для пружинной загрузки:

oliverkuntze 18.10.2018 08:58

Вы уверены, что hawt.io использует конечную точку Actuator? Как вы его настроили?

Andy Wilkinson 18.10.2018 09:38

Спасибо за Ваш ответ. Я не использую агент jolokia jvm, а конечную точку привода jolokia для пружинной загрузки: Registered '/actuator/jolokia' to jolokia-actuator-endpoint. В hawtio я добавил удаленное соединение с локальный: 8081 / исполнительный механизм / jolokia, который является конечной точкой привода пружинного ботинка. Вопрос все еще в том, почему hawtio не запрашивает у меня учетные данные для доступа к конечной точке jolokia?

oliverkuntze 18.10.2018 09:53

Я не запускаю приложение весенней загрузки с java -javaagent:agent.jar ....

oliverkuntze 18.10.2018 09:57

Я не думаю, что это важно. Как описано в документации, на которую я ссылался выше, hawt.io может динамически добавлять агент в JVM. Я подозреваю, что здесь происходит именно это.

Andy Wilkinson 18.10.2018 11:22

Я получаю такое же поведение, когда hawt.io установлен на машине коллеги, получающей доступ к моему весеннему загрузочному приложению на моей машине через http. hawtio представляла бы огромную угрозу, если бы могла удаленно добавить агент jolokia к любой виртуальной машине, работающей в сети.

oliverkuntze 22.10.2018 12:09

Что будет, если удалить management.endpoints.jmx.exposure.exclude = *? Это должно означать, что ничего из JMX / Jolokia не раскрывается.

Tadayoshi Sato 23.10.2018 03:06

Также было бы огромной угрозой, если бы он мог обойти безопасность HTTP. Возможно, вы можете обновить свой вопрос с помощью минимальный, полный и проверяемый пример, чтобы другие могли видеть именно то, что вы видите?

Andy Wilkinson 23.10.2018 09:38
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Версия Java на основе версии загрузки
Версия Java на основе версии загрузки
Если вы зайдете на официальный сайт Spring Boot , там представлен start.spring.io , который упрощает создание проектов Spring Boot, как показано ниже.
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
1
9
886
0

Другие вопросы по теме