如何在 Spring Boot 中禁用 Actuator 端点安全?

举报
wljslmz 发表于 2024/11/26 15:36:02 2024/11/26
【摘要】 Spring Boot Actuator 是一个非常有用的模块,它提供了许多生产就绪的功能,如健康检查、度量指标、审计等。默认情况下,Actuator 的某些端点是受保护的,需要身份验证才能访问。然而,在某些开发或测试环境中,你可能希望禁用这些端点的安全性,以便更方便地进行调试和测试。本文将详细介绍如何在 Spring Boot 中禁用 Actuator 端点的安全性。 1. 什么是 Spr...

Spring Boot Actuator 是一个非常有用的模块,它提供了许多生产就绪的功能,如健康检查、度量指标、审计等。默认情况下,Actuator 的某些端点是受保护的,需要身份验证才能访问。然而,在某些开发或测试环境中,你可能希望禁用这些端点的安全性,以便更方便地进行调试和测试。本文将详细介绍如何在 Spring Boot 中禁用 Actuator 端点的安全性。

1. 什么是 Spring Boot Actuator?

Spring Boot Actuator 是 Spring Boot 的一个子项目,旨在帮助开发者监控和管理其应用程序。它提供了许多生产就绪的功能,如:

  • 健康检查:检查应用程序的健康状态。
  • 度量指标:收集应用程序的性能数据。
  • 审计:记录应用程序的操作日志。
  • 环境属性:查看应用程序的配置属性。
  • HTTP 跟踪:记录 HTTP 请求和响应。
  • 日志级别:动态调整日志级别。

这些功能通过一系列的端点(Endpoints)来实现。端点可以通过 HTTP 或 JMX 访问。

2. 默认的安全设置

为了保护敏感信息,Spring Boot Actuator 默认启用了安全性。这意味着大多数端点都需要身份验证才能访问。默认情况下,只有 health 和 info 端点是公开的,其他端点则需要通过 Spring Security 进行身份验证。

3. 禁用 Actuator 端点安全

在开发或测试环境中,你可能希望禁用 Actuator 端点的安全性,以便更容易地进行调试和测试。以下是如何禁用 Actuator 端点安全的详细步骤。

3.1 添加依赖

首先,确保你的 pom.xml(Maven)或 build.gradle(Gradle)文件中包含 Spring Boot Actuator 的依赖。

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-actuator'
3.2 配置 application.properties 或 application.yml

在 application.properties 或 application.yml 文件中,添加以下配置来禁用 Actuator 端点的安全性。

application.properties:

# 禁用所有端点的安全性
management.endpoints.web.exposure.include=*

# 禁用 Spring Security 对 Actuator 端点的保护
management.endpoint.health.show-details=always

application.yml:

management:
  endpoints:
    web:
      exposure:
        include: "*"
  endpoint:
    health:
      show-details: always
3.3 配置 Spring Security(如果使用)

如果你的应用程序中使用了 Spring Security,还需要进一步配置以确保 Actuator 端点不受保护。在 SecurityConfig 类中,添加以下配置:

import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
            .antMatchers("/actuator/**").permitAll() // 允许访问所有 Actuator 端点
            .anyRequest().authenticated()
            .and()
            .formLogin()
            .and()
            .httpBasic();
    }
}
3.4 重启应用程序

完成上述配置后,重启你的 Spring Boot 应用程序。现在,所有的 Actuator 端点都应该可以无需身份验证直接访问。

4. 验证端点

打开浏览器或使用 curl 命令,访问 Actuator 端点以验证配置是否生效。

例如,访问 health 端点:

curl http://localhost:8080/actuator/health

你应该会看到类似以下的 JSON 响应:

{
  "status": "UP",
  "components": {
    "diskSpace": {
      "status": "UP",
      "details": {
        "total": 250790436864,
        "free": 202077614080,
        "threshold": 10485760
      }
    },
    "ping": {
      "status": "UP"
    }
  }
}

5. 注意事项

虽然禁用 Actuator 端点的安全性在开发和测试环境中非常方便,但在生产环境中这样做可能会带来严重的安全风险。因此,强烈建议在生产环境中启用 Actuator 端点的安全性,并使用适当的身份验证和授权机制来保护这些端点。

结论

通过本文,你已经学会了如何在 Spring Boot 中禁用 Actuator 端点的安全性。这对于开发和测试环境中的调试和测试非常有用。然而,请务必在生产环境中重新启用这些安全性措施,以确保应用程序的安全性。希望本文能帮助你在实际项目中更好地利用 Spring Boot Actuator。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。