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

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

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 默认启用了安全性。这意味着大多数端点都需要身份验证才能访问。默认情况下,只有 healthinfo 端点是公开的,其他端点则需要通过 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.propertiesapplication.yml

application.propertiesapplication.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。

相关文章
|
2月前
|
监控 安全 Java
Spring Boot 中的 Actuator 是什么?
Spring Boot 中的 Actuator 是什么?
367 6
|
3月前
|
安全 Java 对象存储
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
60 1
|
3月前
|
监控 数据可视化 Java
springBoot:actuator&admin 图形可视化&spring 打包 (七)
本文介绍了Spring Boot Actuator及其图形化管理界面Spring Boot Admin的使用方法,包括依赖导入、服务端与客户端配置、以及如何打包为JAR和WAR文件并部署。通过这些步骤,可以实现应用的监控和管理功能。
132 0
|
5月前
|
Java Spring 监控
Spring Boot Actuator:守护你的应用心跳,让监控变得触手可及!
【8月更文挑战第31天】Spring Boot Actuator 是 Spring Boot 框架的核心模块之一,提供了生产就绪的特性,用于监控和管理 Spring Boot 应用程序。通过 Actuator,开发者可以轻松访问应用内部状态、执行健康检查、收集度量指标等。启用 Actuator 需在 `pom.xml` 中添加 `spring-boot-starter-actuator` 依赖,并通过配置文件调整端点暴露和安全性。Actuator 还支持与外部监控工具(如 Prometheus)集成,实现全面的应用性能监控。正确配置 Actuator 可显著提升应用的稳定性和安全性。
188 0
|
5月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
75 0
|
5月前
|
存储 安全 Java
|
5月前
|
安全 Java 开发者
|
NoSQL Java Spring
Spring Actuator源码分析
<div class="markdown_views"> <h3 id="actuator-endpoint">Actuator Endpoint</h3> <p>Actuator模块通过Endpoint暴露一些接口,可以是Rest方式,也可以是JMX等其他方式.</p> <p>如果使用Rest方式,通常SpringMVC是使用@RequestMapping,以及@Cont
5218 0
|
3月前
|
人工智能 自然语言处理 前端开发
SpringBoot + 通义千问 + 自定义React组件:支持EventStream数据解析的技术实践
【10月更文挑战第7天】在现代Web开发中,集成多种技术栈以实现复杂的功能需求已成为常态。本文将详细介绍如何使用SpringBoot作为后端框架,结合阿里巴巴的通义千问(一个强大的自然语言处理服务),并通过自定义React组件来支持服务器发送事件(SSE, Server-Sent Events)的EventStream数据解析。这一组合不仅能够实现高效的实时通信,还能利用AI技术提升用户体验。
277 2
|
6天前
|
Java 测试技术 应用服务中间件
Spring Boot 如何测试打包部署
本文介绍了 Spring Boot 项目的开发、调试、打包及投产上线的全流程。主要内容包括: 1. **单元测试**:通过添加 `spring-boot-starter-test` 包,使用 `@RunWith(SpringRunner.class)` 和 `@SpringBootTest` 注解进行测试类开发。 2. **集成测试**:支持热部署,通过添加 `spring-boot-devtools` 实现代码修改后自动重启。 3. **投产上线**:提供两种部署方案,一是打包成 jar 包直接运行,二是打包成 war 包部署到 Tomcat 服务器。
28 10