如何在 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。

相关文章
|
15天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
19天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
10天前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
|
22天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
8天前
|
人工智能 自然语言处理 前端开发
什么?!通义千问也可以在线开发应用了?!
阿里巴巴推出的通义千问,是一个超大规模语言模型,旨在高效处理信息和生成创意内容。它不仅能在创意文案、办公助理、学习助手等领域提供丰富交互体验,还支持定制化解决方案。近日,通义千问推出代码模式,基于Qwen2.5-Coder模型,用户即使不懂编程也能用自然语言生成应用,如个人简历、2048小游戏等。该模式通过预置模板和灵活的自定义选项,极大简化了应用开发过程,助力用户快速实现创意。
|
5天前
|
云安全 存储 弹性计算
|
7天前
|
云安全 人工智能 自然语言处理
|
5天前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
364 4
|
5天前
|
缓存 Linux Docker
【最新版正确姿势】Docker安装教程(简单几步即可完成)
之前的老版本Docker安装教程已经发生了变化,本文分享了Docker最新版安装教程,其他操作系统版本也可以参考官 方的其他安装版本文档。
【最新版正确姿势】Docker安装教程(简单几步即可完成)
|
10天前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。