Spring Boot Actuator 端点的未授权访问漏洞是一个安全性问题,可能会导致未经授权的用户访问敏感的应用程序信息。
可是并不用太过担心,Spring Boot Actuator 默认暴漏的信息有限,一般情况下并不会暴露敏感数据。
注册中心有些功能集成了actuator,如果同时使用eureka和actuator,可以在eureka中点击注册链接查看健康状态信息(/actuator/info)。但是删除 Spring Boot Actuator 的引用对 Eureka 注册中心本身并没有直接影响。Eureka 注册中心是用于管理微服务实例的,而 Spring Boot Actuator 提供了用于监控和管理单个微服务实例的功能。
Spring Boot Actuator 的存在与否不会影响 Eureka 注册中心的核心功能,即注册和发现微服务。删除 Spring Boot Actuator 的引用只会影响您的单个微服务实例,使您失去了通过 Actuator 暴露的一些监控和管理功能。
在默认情况下,Spring Boot Actuator 并不会暴露所有端点。您可以在配置文件中配置 management.endpoints.web.exposure.include 或 management.endpoints.web.exposure.exclude 属性,以控制哪些端点是公开的或不公开的。确保只公开需要的端点,将不必要的端点关闭。
management: endpoints: enabled-by-default: false health: enabled: true web: base-path: /myownurl exposure: exclude: '*'
您可以通过配置 Spring Security 来限制对 Actuator 端点的访问。Spring Security 可以帮助您实现身份验证和授权机制,确保只有授权的用户可以访问 Actuator 端点。
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/actuator/**").hasRole("ADMIN") // 设置只有具有 ADMIN 角色的用户可以访问 Actuator 端点 .anyRequest().permitAll() .and() .httpBasic(); // 启用基本认证 } }
Spring Boot Actuator 是 Spring Boot 框架中的一个模块,它提供了一组用于监控和管理 Spring Boot 应用程序的功能。Actuator 使开发人员能够在应用程序运行时了解应用程序的状态、性能和健康情况,以及一些管理操作。它主要有以下作用:
应用程序健康监控:Actuator 提供了 /actuator/health 端点,可以用来检查应用程序的健康状态。这对于自动化运维、监控系统和负载均衡器非常有用。您可以在应用程序发生问题时通过此端点检查应用程序是否健康,以及有关问题的更多信息。
度量指标:通过 /actuator/metrics 端点,可以获取关于应用程序运行状态的度量指标,如内存使用、线程数、HTTP 请求等。这些指标对于性能优化和容量规划很有帮助。
应用程序信息:通过 /actuator/info 端点,您可以暴露自定义的应用程序信息,如版本号、作者、描述等。这对于构建信息展示页面或者提供有关应用程序的元数据很有用。
Spring Beans 和 Endpoints 显示:通过 /actuator/beans 和 /actuator/mappings 端点,您可以查看应用程序中所有的 Spring Bean 和 Spring MVC 的映射路径,这对于调试和监控应用程序的组件很有帮助。
环境属性和配置:通过 /actuator/env 端点,可以查看应用程序的环境属性和配置信息。
日志级别管理:通过 /actuator/loggers 端点,您可以查看和修改应用程序的日志级别。
HTTP 请求跟踪:通过 /actuator/trace 端点,您可以查看最近的 HTTP 请求的跟踪信息,用于排查问题。
Spring Boot Actuator 提供了丰富的端点,以帮助开发人员更好地理解和管理他们的应用程序。它在监控、调试和运维方面提供了强大的功能,是构建可管理的 Spring Boot 应用程序的重要工具。
在默认情况下,Spring Boot Actuator 公开了一些常用的端点,但也有一些端点是不公开的。这是为了安全性考虑,避免在生产环境中泄漏敏感信息。
以下是 Spring Boot 2.x 版本默认情况下公开的一些端点:
/actuator/health:公开,默认允许所有用户访问。提供应用程序的健康状况信息。
/actuator/info:公开,默认允许所有用户访问。提供自定义的应用程序信息。
/actuator/metrics:不公开,默认不允许访问。提供各种度量指标,如内存使用、线程数、HTTP 请求等。
/actuator/mappings:不公开,默认不允许访问。展示 Spring MVC 中的所有映射路径。
/actuator/env:不公开,默认不允许访问。显示应用程序的环境属性和配置。
/actuator/beans:不公开,默认不允许访问。显示 Spring Bean 的列表。
/actuator/trace:不公开,默认不允许访问。显示最近的 HTTP 请求的跟踪信息。
/actuator/threaddump:不公开,默认不允许访问。生成当前线程的线程转储。
/actuator/auditevents:不公开,默认不允许访问。提供应用程序的审计事件信息。
/actuator/loggers:不公开,默认不允许访问。显示和修改应用程序的日志配置。
/actuator/httptrace:不公开,默认不允许访问。提供 HTTP 跟踪信息,用于记录 HTTP 请求和响应的详细信息。
您可以通过在配置文件中使用 management.endpoints.web.exposure.include 或 management.endpoints.web.exposure.exclude 属性来控制哪些端点是公开的或不公开的。默认情况下,info 和 health 是允许公开的。
例如,以下配置将会关闭 mappings 端点的公开:
关闭 mappings 端点的公开
management.endpoints.web.exposure.exclude=mappings
根据您的需求,您可以灵活地配置哪些 Actuator 端点是可以访问的。确保在生产环境中仅公开必要的端点,并保护敏感信息。
org.springframework.boot spring-boot-starter-actuator
上一篇:19 Go的时间日期