如何解决 Spring Boot Actuator 的未授权访问漏洞

2023-09-22 10:50:35

Spring Boot Actuator 的作用是提供了一组管理和监控端点,允许你查看应用程序的运行时信息,例如健康状态、应用程序信息、性能指标等。这些端点对于开发、测试 和运维团队来说都非常有用,可以帮助快速诊断问题、监控应用程序的性能,并采取必要的措施来维护和管理应用程序。

Spring Boot Actuator 未授权访问的配置

Spring Boot Actuator 提供了许多有关应用程序运行时信息的有用端点(endpoints),如/health、/info、/metrics 等。这些端点可以帮助开发人员和运维人员监控和管理 Spring Boot 应用程序。默认情况下,这些端点需要授权才能访问,以确保安全性。

如果你遇到 Spring Boot Actuator 未授权访问的问题,你可以采取以下步骤来解决:

1.添加 Spring Security 依赖

要启用授权,你可以在项目中添加 Spring Security 依赖。在 Maven 项目中,你可以添加以下依赖:

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

  在 Gradle 项目中,你可以添加以下依赖:

implementation 'org.springframework.boot:spring-boot-starter-security'

2.配置 Spring Security 权限

创建一个配置类来配置 Spring Security,以控制 Actuator 端点的访问权限。以下是一个示例配置类:

import org.springframework.context.annotation.Bean; 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/**").hasRole("ACTUATOR") .anyRequest().authenticated() .and() .httpBasic(); } }

这个示例配置允许授权用户访问以"/actuator/"开头的所有 URL,并要求用户具有"ACTUATOR"角色。你可以根据自己的需求进行自定义配置。

3.配置 Actuator 端点的角色

在 Spring Boot 的应用属性文件(如 application.properties 或 application.yml)中,你可以配置 Actuator 端点的角色要求。例如,在 application.properties 中:

management.endpoint.health.roles=ACTUATOR management.endpoint.metrics.roles=ACTUATOR

这将指定只有具有"ACTUATOR"角色的用户才能访问/actuator/health 和/actuator/metrics 端点。

4.为用户分配角色

确保为授权用户分配了正确的角色。你可以在自己的用户认证和授权服务中配置角色。

5.测试访问

使用具有正确角色的凭证(用户名和密码)进行测试,以确保访问受限制的 Actuator 端点时不再出现未授权访问的问题。通过这些步骤,你可以配置 Spring Boot Actuator 以要求授权访问,并限制只有特定角色的用户才能访问这些端点。这有助于保护你的应用程序的敏感信息。

注意事项

在使用 Spring Boot Actuator 时,你需要注意以下事项:

  • 角色分配:确保为授权用户分配了正确的角色,以便访问 Actuator 端点。角色的分配可以在用户认证和授权服务中进行。
  • 版本兼容性:不同版本的 Spring Boot Actuator 可能会有一些配置差异,因此在升级或降级时要谨慎检查文档和配置。
  • 安全性:Spring Boot Actuator 端点包含敏感信息,因此请确保适当地保护它们,以防止未授权的访问。

使用 Apifox 测试和管理接口

Apifox 是一个比 Postman 更强大的接口测试工具,Apifox = Postman + Swagger + Mock + JMeter,它支持调试 http(s)、WebSocket、Socket、gRPC、Dubbo 等协议的接口,并且集成了 IDEA 插件。在开发完接口后,可以通过 Apifox 的 IDEA 插件一键自动生成接口文档,多端同步,非常方便测试和维护。

知识扩展:

参考链接:

更多推荐

CSS复习之选择器

目录一、常用选择器1.1元素选择器1.2id选择器1.3class选择器二、复合选择器2.1交集选择器2.2并集选择器三、关系选择器3.1子元素选择器3.2后代选择器3.3兄弟选择器四、属性选择器五、伪类选择器六、伪元素的选择器七、超链接的伪类一、常用选择器1.1元素选择器作用:根据标签名来选中指定的元素语法:标签名{

固定资产管理措施怎么写

固定资产管理措施是指企业在进行固定资产管理时所采取的各种措施和方法。以下是一些常见的固定资产管理措施:加强固定资产的安全保护。该公司采取了多种安全措施建立完善的固定资产管理制度。制定明确的资产采购、使用、维护、报废等流程和标准,确保资产管理的规范性和透明度。采用先进的资产管理软件。通过数字化手段对固定资产进行管理和监控

unity打包后无法读取Excel解决方法

一、前言最近几乎遇到了所有能遇到的unity读取Excel的问题。因为使用的是unity5.4,而且还是32位。所以出现各种问题在所难免。废话不多说,现有的现象是:在unity的编辑器里可以完美运行,读取Excel不成问题,但是打包成exe后就无法读取到对应路径下的Excel表格了。二、解决办法第一种,未能解决:在脚本

BANI时代下,项目如何实现价值交付?

随着时代的变化,继VUCA时代后、新的语言出现:BANI一词逐渐流行起来。BANI,取自四个英文单词Brittle(脆弱的)、Anxious(焦虑的)、Nonlionear(非线性的)、Incomprehensible(费解的)首字母的大写。Brittleness(脆弱性):在BANI时代,系统和组织可能会突然、且无预

晨控CK-FR102系列与汇川AC800系列MODBUSTCP通讯手册

晨控CK-FR102系列与汇川AC800系列MODBUSTCP通讯手册晨控CK-FR102AN系列是一款基于射频识别技术的高频双通道读写器,读写器工作频率为13.56MHZ,支持对I-CODE2、I-CODESLI等符合ISO15693国际标准协议格式标签的读取。高频双通道读写器支持标准工业通讯协议ModbusTCP,

Arduino程序设计(十一)8×8 共阳极LED点阵显示(74HC595)

8×8共阳极LED点阵显示前言一、74HC595点阵模块1、74HC595介绍2、74HC595工作原理3、1088BS介绍4、74HC595点阵模块二、点阵显示实验1、点阵显示初探2、点阵显示进阶3、点阵显示高阶3.1点阵显示汉字(方法1)3.2点阵显示汉字(方法2)补充前言本文主要介绍8×8共阳极LED点阵显示实验

Python模拟登录豆瓣:轻松探索海量文化资源!

豆瓣是一个集电影、音乐、图书、活动等众多文化内容于一身的知名网站。在本文中,将介绍如何使用Python模拟登录豆瓣,以便获取更多的个性化推荐和参与社区活动。跟随下面的步骤,让我们一起来探索豆瓣的海量文化资源吧!一、安装必要的库在开始之前,需要确保已安装以下库:requests:发送HTTP请求,并处理登录和数据获取。B

libevent学习——event_base

event_base使用libevent函数之前需要分配一个或者多个event_base结构体。每个event_base结构体持有一个事件集合,可以检测以确定哪个事件是激活的。如果设置event_base使用锁,则可以安全地在多个线程中访问它。然而,其事件循环只能运行在一个线程中。如果需要用多个线程检测IO,则需要为每

【k8s】kube-proxy 工作模式

文章目录Userspace模式:iptables模式:负载均衡(LoadBalancing)LB轮询(RoundRobin):SessionAffinity:最少连接(LeastConnection):IP哈希(IPHash):SessionAffinity和IP哈希的异同自定义负载均衡器:IPVS模式:IPVS架构I

vue入门-->前后端分离&vue简介,vue入门,vue生命周期

前后端分离&vue简介vue入门vue生命周期1.前后端分离&vue简介什么是前后端分离?前后端分离,是开发模式上的前后端分离。当然还有项目架构方面的前后端分离,也就是在考虑请求并发,服务器性能,处理请求的效率等因素,从而进行前后端分离,对于初学者的理解来说不是那么友好,因此我们只讨论开发模式上的分离。先下定义:前后端

多位数按键操作(闪烁)数码管显示

/*-----------------------------------------------内容:按键加减数字,多个数码管显示------------------------------------------------*/#include<reg52.h>//包含头文件,一般情况不需要改动,头文件包含特殊功能

热文推荐