保护Spring Boot 2执行器Prometheus端点

问题描述 投票:0回答:1

我有一个已经配置了Micometer / Spring Actuator的带有Spring Security微服务的Spring Boot 2。当我在antMatcher(“ / actuator / **”)端点上允许使用All()时,一切都很好。我能够通过正确配置的Prometheus yaml文件检索Prometheus指标。

但是,我的微服务不在防火墙后面,因此对世界开放。我只希望Prometheus能够访问我的微服务“ / actuator / prometheus”端点。

我具有以下配置:

在我的Spring Boot 2微服务ResourceServerConfig类中:

@Configuration
@EnableResourceServer
public class ResourceServerConfig extends ResourceServerConfigurerAdapter {

  @Autowired
  private JdbcTokenStore tokenStore;

  @Override
  public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
    resources.resourceId("springsecurity").tokenStore(tokenStore);
  }

  public void configure(HttpSecurity http) throws Exception {
    http.anonymous().and().authorizeRequests()
      .antMatchers("/actuator/**").hasRole("ENDPOINT_ADMIN")
      .antMatchers("/**").authenticated();
  }

对于application.properties文件,我有:

spring.security.user.name=user
spring.security.user.password=password
spring.security.user.roles=ENDPOINT_ADMIN

# For Prometheus (and other data loggers)
management.endpoint.metrics.enabled=true
management.endpoints.web.exposure.include=*
management.endpoint.prometheus.enabled=true
management.metrics.export.prometheus.enabled=true

然后使用我的Prometheus YAML文件:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
    - targets: ["localhost:9090"]

  - job_name: 'myservice'
    metrics_path: '/actuator/prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:8080']
    basic_auth:
      username: 'user'
      password: 'password'

当我在Prometheus中进入/ targets时,出现“服务器返回HTTP状态401”。

我完全假设我不太了解某些正确的内容。我有办法正确执行此操作吗?非常感谢。

java spring-security oauth prometheus spring-boot-actuator
1个回答
0
投票

是内部网络中的Prometheus系统和服务系统。如果它们位于同一内部网络中,则可以使用内部IP获取执行器数据。

© www.soinside.com 2019 - 2024. All rights reserved.