如何在 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 是什么?
247 6
|
3月前
|
安全 Java 对象存储
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
安全性考量:Spring Security与Netflix OSS在微服务安全中的作用
56 1
|
3月前
|
监控 数据可视化 Java
springBoot:actuator&admin 图形可视化&spring 打包 (七)
本文介绍了Spring Boot Actuator及其图形化管理界面Spring Boot Admin的使用方法,包括依赖导入、服务端与客户端配置、以及如何打包为JAR和WAR文件并部署。通过这些步骤,可以实现应用的监控和管理功能。
122 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 可显著提升应用的稳定性和安全性。
181 0
|
5月前
|
测试技术 Java Spring
Spring 框架中的测试之道:揭秘单元测试与集成测试的双重保障,你的应用真的安全了吗?
【8月更文挑战第31天】本文以问答形式深入探讨了Spring框架中的测试策略,包括单元测试与集成测试的有效编写方法,及其对提升代码质量和可靠性的重要性。通过具体示例,展示了如何使用`@MockBean`、`@SpringBootTest`等注解来进行服务和控制器的测试,同时介绍了Spring Boot提供的测试工具,如`@DataJpaTest`,以简化数据库测试流程。合理运用这些测试策略和工具,将助力开发者构建更为稳健的软件系统。
67 0
|
5月前
|
存储 安全 Java
|
5月前
|
安全 Java 开发者
|
3月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
198 1
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
131 62
|
20天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
101 13