我尝试在application.yml
配置文件中禁用生产环境的所有执行器端点:
endpoints.enabled: false
除了/ info之外,它适用于所有端点。 如何关闭给定环境的所有端点?
更新
我正在做的项目也是Eureka的客户。 在状态页面和健康指标(http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html)部分的Spring Cloud Netflix文档中,它表示“Eureka实例默认为”/ info“和”/ health“。
是否有任何解决方案可以禁用这些端点?
我能够使用endpoints.enabled: false
禁用 / health 端点,但不能禁用 / info 端点。
答案 0 :(得分:12)
最后我设法解决了我的问题。我在执行器中只启用了/ info和/ health端点。并允许仅对具有角色ADMIN的用户访问/ info端点我需要混合执行器管理安全性和弹簧安全配置。
所以我的 application.yml 看起来像这样:
endpoints.enabled: false
endpoints:
info.enabled: true
health.enabled: true
management.security.role: ADMIN
像这样的spring安全配置(我需要将 ManagementSecurityConfig 的顺序更改为具有更高优先级):
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class SecurityConfiguration {
@Configuration
protected static class AuthenticationSecurity extends GlobalAuthenticationConfigurerAdapter {
@Autowired
private AuthenticationProvider authenticationProvider;
public AuthenticationSecurity() {
super();
}
@Override
public void init(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("admin").password("secret").roles("ADMIN");
}
}
@Configuration
@Order(Ordered.HIGHEST_PRECEDENCE + 2)
public static class ManagementSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.requestMatchers()
.antMatchers("/info/**")
.and()
.authorizeRequests()
.anyRequest().hasRole("ADMIN")
.and()
.httpBasic();
}
}
@Configuration
public static class ApiWebSecurityConfigurationAdapter extends WebSecurityConfigurerAdapter {
protected void configure(HttpSecurity http) throws Exception {
// API security configuration
}
}
}
答案 1 :(得分:0)
您的示例配置对我来说很可疑。我想你的意思是
endpoints:
enabled: true
无论如何,我只是尝试将其添加到一个vanilla Spring Boot应用程序中(使用1.3.1
并且所有端点都被禁用(正如预期的那样)。