Spring Boot Actuator: защита конечных точек HTTP
Вы должны позаботиться о защите конечных точек HTTP так же, как и любого другого конфиденциального URL. Если Spring Security присутствует, конечные точки защищены по умолчанию с использованием стратегии согласования содержимого Spring Security. Если вы хотите настроить пользовательскую безопасность для конечных точек HTTP, например, разрешить доступ к ним только пользователям с определенной ролью, Spring Boot предоставляет несколько удобных объектов RequestMatcher, которые можно использовать в сочетании с Spring Security.
Типичная конфигурация Spring Security может выглядеть примерно так:
@Configuration(proxyBeanMethods = false)
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) ->
requests.anyRequest().hasRole("ENDPOINT_ADMIN"));
http.httpBasic();
}
}
Предыдущий пример использует EndpointRequest.toAnyEndpoint() для сопоставления запроса с любой конечной точкой, а затем гарантирует, что все имеют роль ENDPOINT_ADMIN. Несколько других методов сопоставления также доступны в EndpointRequest.
Если вы развертываете приложения за брандмауэром, вы можете предпочесть, чтобы все ваши конечные точки actuator были доступны без аутентификации. Вы можете сделать это, изменив свойство management.endpoints.web.exposure.include следующим образом:
application.properties
management.endpoints.web.exposure.include=*
Кроме того, если Spring Security присутствует, вам необходимо добавить пользовательскую конфигурацию безопасности, которая разрешает неаутентифицированный доступ к конечным точкам, как показано в следующем примере:
@Configuration(proxyBeanMethods = false)
public class ActuatorSecurity extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests((requests) ->
requests.anyRequest().permitAll());
}
}
Читайте также:
- Spring Boot Actuator: функции готовности к производственной работе
- Spring Boot Actuator: конечные точки (endpoints)
- Spring Boot Actuator: включение конечных точек
Комментарии
Отправить комментарий