SpringBoot应用监控Actuator使用的安全隐患
字数 1355 2025-08-29 08:32:09

Spring Boot Actuator 安全使用指南

1. Actuator 概述

Spring Boot Actuator 是 Spring Boot 提供的对应用系统的监控和管理集成功能,主要用于微服务架构下的应用监控。它能够提供应用配置的详细信息,包括:

  • 自动化配置信息
  • 创建的 Spring beans 信息
  • 系统环境变量的配置信息
  • Web 请求的详细信息

2. Actuator 基本使用

2.1 添加依赖

在项目中添加以下依赖即可启用 Actuator:

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

2.2 自定义访问路径

可以在 application.properties 中指定 Actuator 的访问路径:

management.context-path=/monitor

设置后,访问端点需要使用 /monitor 前缀,如 /monitor/env

3. Actuator 原生端点

Actuator 提供了一系列原生监控端点:

路径 描述
/autoconfig 提供自动配置报告,记录哪些自动配置条件通过/未通过
/beans 描述应用程序上下文里全部的 Bean 及其关系
/env 获取全部环境属性
/configprops 描述配置属性如何注入 Bean
/dump 获取线程活动的快照
/health 报告应用程序的健康指标
/info 获取应用程序的定制信息
/mappings 描述全部的 URI 路径及其与控制器(包含 Actuator 端点)的映射关系
/metrics 报告各种应用程序度量信息
/shutdown 关闭应用程序(需显式启用)
/trace 提供基本的 HTTP 请求跟踪信息

4. Actuator 安全隐患

如果不加限制地使用 Actuator,可能导致以下安全问题:

  1. 敏感信息泄露:通过 /env 可获取系统环境变量、数据库密码等敏感信息
  2. 请求信息泄露:通过 /trace 可查看所有 Web 请求的详细信息,包括请求头、cookie 等
  3. 应用配置暴露:通过 /configprops 可查看应用的详细配置
  4. 应用关闭风险:如果启用了 /shutdown 端点,攻击者可关闭应用

5. 安全防护措施

5.1 禁用特定端点

可以禁用不需要的端点:

endpoints.env.enabled=false

5.2 选择性启用端点

先禁用所有端点,再启用需要的:

endpoints.enabled=false
endpoints.metrics.enabled=true

5.3 添加安全依赖

引入 Spring Security 依赖:

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

5.4 配置安全验证

application.properties 中配置:

management.port=8099  # 使用独立管理端口
management.security.enabled=true  # 启用安全
security.user.name=admin  # 设置用户名
security.user.password=admin  # 设置密码

5.5 网络层防护

  1. 将管理端口设置为内网访问
  2. 通过防火墙限制管理端口的访问来源
  3. 不在公网暴露管理端口

6. 安全建议

  1. 必须 引入 security 依赖并启用安全限制
  2. 必须 设置身份验证机制
  3. 建议 使用独立的管理端口
  4. 建议 限制管理端口的网络访问
  5. 建议 在生产环境中禁用不必要的端点
  6. 建议 将 Actuator 安全配置纳入代码审计范围

7. 参考资源

Spring Boot Actuator 安全使用指南 1. Actuator 概述 Spring Boot Actuator 是 Spring Boot 提供的对应用系统的监控和管理集成功能,主要用于微服务架构下的应用监控。它能够提供应用配置的详细信息,包括: 自动化配置信息 创建的 Spring beans 信息 系统环境变量的配置信息 Web 请求的详细信息 2. Actuator 基本使用 2.1 添加依赖 在项目中添加以下依赖即可启用 Actuator: 2.2 自定义访问路径 可以在 application.properties 中指定 Actuator 的访问路径: 设置后,访问端点需要使用 /monitor 前缀,如 /monitor/env 。 3. Actuator 原生端点 Actuator 提供了一系列原生监控端点: | 路径 | 描述 | |------|------| | /autoconfig | 提供自动配置报告,记录哪些自动配置条件通过/未通过 | | /beans | 描述应用程序上下文里全部的 Bean 及其关系 | | /env | 获取全部环境属性 | | /configprops | 描述配置属性如何注入 Bean | | /dump | 获取线程活动的快照 | | /health | 报告应用程序的健康指标 | | /info | 获取应用程序的定制信息 | | /mappings | 描述全部的 URI 路径及其与控制器(包含 Actuator 端点)的映射关系 | | /metrics | 报告各种应用程序度量信息 | | /shutdown | 关闭应用程序(需显式启用) | | /trace | 提供基本的 HTTP 请求跟踪信息 | 4. Actuator 安全隐患 如果不加限制地使用 Actuator,可能导致以下安全问题: 敏感信息泄露 :通过 /env 可获取系统环境变量、数据库密码等敏感信息 请求信息泄露 :通过 /trace 可查看所有 Web 请求的详细信息,包括请求头、cookie 等 应用配置暴露 :通过 /configprops 可查看应用的详细配置 应用关闭风险 :如果启用了 /shutdown 端点,攻击者可关闭应用 5. 安全防护措施 5.1 禁用特定端点 可以禁用不需要的端点: 5.2 选择性启用端点 先禁用所有端点,再启用需要的: 5.3 添加安全依赖 引入 Spring Security 依赖: 5.4 配置安全验证 在 application.properties 中配置: 5.5 网络层防护 将管理端口设置为内网访问 通过防火墙限制管理端口的访问来源 不在公网暴露管理端口 6. 安全建议 必须 引入 security 依赖并启用安全限制 必须 设置身份验证机制 建议 使用独立的管理端口 建议 限制管理端口的网络访问 建议 在生产环境中禁用不必要的端点 建议 将 Actuator 安全配置纳入代码审计范围 7. 参考资源 Spring Boot Actuator 官方文档 定期检查 Spring Boot 安全公告,获取最新安全建议