问答题300/1053如何在 Spring Boot 中禁用 Actuator 端点安全性?

难度:
2021-11-02 创建

参考答案:

Spring Boot 中,默认情况下,Spring Boot Actuator 的一些端点(例如 /actuator/health/actuator/metrics)是受到安全控制的,尤其是在生产环境中。这是为了保护敏感的应用信息,防止未授权的访问。

如果希望禁用 Actuator 端点的安全性,或者在开发环境中简化访问,可以通过以下几种方式来配置。

1. 禁用 Actuator 安全性

如果你不想为 Actuator 端点启用任何安全限制,可以通过自定义安全配置禁用 Actuator 端点的安全性。

示例:

1import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; 2import org.springframework.context.annotation.Bean; 3import org.springframework.context.annotation.Configuration; 4import org.springframework.security.config.annotation.web.builders.HttpSecurity; 5import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 6import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; 7 8@Configuration 9@EnableWebSecurity 10public class SecurityConfig extends WebSecurityConfigurerAdapter { 11 12 @Override 13 protected void configure(HttpSecurity http) throws Exception { 14 // 禁用 Actuator 端点的安全性 15 http 16 .authorizeRequests() 17 .antMatchers("/actuator/**").permitAll() // 允许所有人访问 Actuator 端点 18 .anyRequest().authenticated() 19 .and() 20 .csrf().disable(); // 如果需要,可以禁用 CSRF 保护 21 } 22}

2. 配置 Actuator 端点暴露

你还可以配置哪些 Actuator 端点是暴露的,哪些是被保护的。默认情况下,Spring Boot Actuator 会暴露某些端点,且需要身份验证来访问这些端点。

通过 application.propertiesapplication.yml 配置,控制端点的访问方式。例如,如果希望禁用端点的安全性,可以设置:

通过 application.properties

1# 暴露 actuator 的所有端点 2management.endpoints.web.exposure.include=* 3# 禁用对 actuator 端点的安全性限制 4management.endpoint.health.show-details=always 5management.endpoints.web.exposure.exclude=security,metrics

通过 application.yml

1management: 2 endpoints: 3 web: 4 exposure: 5 include: "*" # 暴露所有端点 6 exclude: security, metrics # 排除敏感的端点 7 endpoint: 8 health: 9 show-details: always # 健康检查显示详细信息

3. 禁用 Spring Security 的所有安全配置

如果你不想使用任何 Spring Security 来保护端点,可以完全禁用 Spring Security 的配置,简单的做法是删除相关的安全配置类,或者通过以下方式禁用 Spring Security:

1# 在 application.properties 中禁用 Spring Security 2spring.security.enabled=false

4. 修改 Security 规则

如果只想禁用对特定 Actuator 端点的安全性控制,而不完全关闭 Spring Security,可以精细地调整哪些端点对外开放,哪些需要验证。

例如,配置只允许访问 healthinfo 端点:

1@Override 2protected void configure(HttpSecurity http) throws Exception { 3 http 4 .authorizeRequests() 5 .antMatchers("/actuator/health", "/actuator/info").permitAll() // 公开健康和信息端点 6 .anyRequest().authenticated(); // 其他端点需要认证 7}

最近更新时间:2024-12-11