Spring Boot Actuator未授權(quán)訪問漏洞的問題解決
1.問題
Spring Boot Actuator 端點(diǎn)的未授權(quán)訪問漏洞是一個(gè)安全性問題,可能會(huì)導(dǎo)致未經(jīng)授權(quán)的用戶訪問敏感的應(yīng)用程序信息。
可是并不用太過擔(dān)心,Spring Boot Actuator 默認(rèn)暴漏的信息有限,一般情況下并不會(huì)暴露敏感數(shù)據(jù)。
注冊(cè)中心有些功能集成了actuator,如果同時(shí)使用eureka和actuator,可以在eureka中點(diǎn)擊注冊(cè)鏈接查看健康狀態(tài)信息(/actuator/info)。但是刪除 Spring Boot Actuator 的引用對(duì) Eureka 注冊(cè)中心本身并沒有直接影響。Eureka 注冊(cè)中心是用于管理微服務(wù)實(shí)例的,而 Spring Boot Actuator 提供了用于監(jiān)控和管理單個(gè)微服務(wù)實(shí)例的功能。
Spring Boot Actuator 的存在與否不會(huì)影響 Eureka 注冊(cè)中心的核心功能,即注冊(cè)和發(fā)現(xiàn)微服務(wù)。刪除 Spring Boot Actuator 的引用只會(huì)影響您的單個(gè)微服務(wù)實(shí)例,使您失去了通過 Actuator 暴露的一些監(jiān)控和管理功能。
2. 解決方案
2.1 關(guān)閉不必要的端點(diǎn)
在默認(rèn)情況下,Spring Boot Actuator 并不會(huì)暴露所有端點(diǎn)。您可以在配置文件中配置 management.endpoints.web.exposure.include 或 management.endpoints.web.exposure.exclude 屬性,以控制哪些端點(diǎn)是公開的或不公開的。確保只公開需要的端點(diǎn),將不必要的端點(diǎn)關(guān)閉。
management: endpoints: enabled-by-default: false health: enabled: true web: base-path: /myownurl exposure: exclude: '*'
2.2 添加訪問權(quán)限控制
您可以通過配置 Spring Security 來限制對(duì) Actuator 端點(diǎn)的訪問。Spring Security 可以幫助您實(shí)現(xiàn)身份驗(yàn)證和授權(quán)機(jī)制,確保只有授權(quán)的用戶可以訪問 Actuator 端點(diǎn)。
@Configuration @EnableWebSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/actuator/**").hasRole("ADMIN") // 設(shè)置只有具有 ADMIN 角色的用戶可以訪問 Actuator 端點(diǎn) .anyRequest().permitAll() .and() .httpBasic(); // 啟用基本認(rèn)證 } }
3. 了解actuator
3.1 概念
Spring Boot Actuator 是 Spring Boot 框架中的一個(gè)模塊,它提供了一組用于監(jiān)控和管理 Spring Boot 應(yīng)用程序的功能。Actuator 使開發(fā)人員能夠在應(yīng)用程序運(yùn)行時(shí)了解應(yīng)用程序的狀態(tài)、性能和健康情況,以及一些管理操作。它主要有以下作用:
應(yīng)用程序健康監(jiān)控:Actuator 提供了 /actuator/health 端點(diǎn),可以用來檢查應(yīng)用程序的健康狀態(tài)。這對(duì)于自動(dòng)化運(yùn)維、監(jiān)控系統(tǒng)和負(fù)載均衡器非常有用。您可以在應(yīng)用程序發(fā)生問題時(shí)通過此端點(diǎn)檢查應(yīng)用程序是否健康,以及有關(guān)問題的更多信息。
度量指標(biāo):通過 /actuator/metrics 端點(diǎn),可以獲取關(guān)于應(yīng)用程序運(yùn)行狀態(tài)的度量指標(biāo),如內(nèi)存使用、線程數(shù)、HTTP 請(qǐng)求等。這些指標(biāo)對(duì)于性能優(yōu)化和容量規(guī)劃很有幫助。
應(yīng)用程序信息:通過 /actuator/info 端點(diǎn),您可以暴露自定義的應(yīng)用程序信息,如版本號(hào)、作者、描述等。這對(duì)于構(gòu)建信息展示頁面或者提供有關(guān)應(yīng)用程序的元數(shù)據(jù)很有用。
Spring Beans 和 Endpoints 顯示:通過 /actuator/beans 和 /actuator/mappings 端點(diǎn),您可以查看應(yīng)用程序中所有的 Spring Bean 和 Spring MVC 的映射路徑,這對(duì)于調(diào)試和監(jiān)控應(yīng)用程序的組件很有幫助。
環(huán)境屬性和配置:通過 /actuator/env 端點(diǎn),可以查看應(yīng)用程序的環(huán)境屬性和配置信息。
日志級(jí)別管理:通過 /actuator/loggers 端點(diǎn),您可以查看和修改應(yīng)用程序的日志級(jí)別。
HTTP 請(qǐng)求跟蹤:通過 /actuator/trace 端點(diǎn),您可以查看最近的 HTTP 請(qǐng)求的跟蹤信息,用于排查問題。
Spring Boot Actuator 提供了豐富的端點(diǎn),以幫助開發(fā)人員更好地理解和管理他們的應(yīng)用程序。它在監(jiān)控、調(diào)試和運(yùn)維方面提供了強(qiáng)大的功能,是構(gòu)建可管理的 Spring Boot 應(yīng)用程序的重要工具。
3.2 配置詳情
在默認(rèn)情況下,Spring Boot Actuator 公開了一些常用的端點(diǎn),但也有一些端點(diǎn)是不公開的。這是為了安全性考慮,避免在生產(chǎn)環(huán)境中泄漏敏感信息。
以下是 Spring Boot 2.x 版本默認(rèn)情況下公開的一些端點(diǎn):
/actuator/health:公開,默認(rèn)允許所有用戶訪問。提供應(yīng)用程序的健康狀況信息。
/actuator/info:公開,默認(rèn)允許所有用戶訪問。提供自定義的應(yīng)用程序信息。
/actuator/metrics:不公開,默認(rèn)不允許訪問。提供各種度量指標(biāo),如內(nèi)存使用、線程數(shù)、HTTP 請(qǐng)求等。
/actuator/mappings:不公開,默認(rèn)不允許訪問。展示 Spring MVC 中的所有映射路徑。
/actuator/env:不公開,默認(rèn)不允許訪問。顯示應(yīng)用程序的環(huán)境屬性和配置。
/actuator/beans:不公開,默認(rèn)不允許訪問。顯示 Spring Bean 的列表。
/actuator/trace:不公開,默認(rèn)不允許訪問。顯示最近的 HTTP 請(qǐng)求的跟蹤信息。
/actuator/threaddump:不公開,默認(rèn)不允許訪問。生成當(dāng)前線程的線程轉(zhuǎn)儲(chǔ)。
/actuator/auditevents:不公開,默認(rèn)不允許訪問。提供應(yīng)用程序的審計(jì)事件信息。
/actuator/loggers:不公開,默認(rèn)不允許訪問。顯示和修改應(yīng)用程序的日志配置。
/actuator/httptrace:不公開,默認(rèn)不允許訪問。提供 HTTP 跟蹤信息,用于記錄 HTTP 請(qǐng)求和響應(yīng)的詳細(xì)信息。
您可以通過在配置文件中使用 management.endpoints.web.exposure.include 或 management.endpoints.web.exposure.exclude 屬性來控制哪些端點(diǎn)是公開的或不公開的。默認(rèn)情況下,info 和 health 是允許公開的。
例如,以下配置將會(huì)關(guān)閉 mappings 端點(diǎn)的公開:
關(guān)閉 mappings 端點(diǎn)的公開
management.endpoints.web.exposure.exclude=mappings
根據(jù)您的需求,您可以靈活地配置哪些 Actuator 端點(diǎn)是可以訪問的。確保在生產(chǎn)環(huán)境中僅公開必要的端點(diǎn),并保護(hù)敏感信息。
3.3 注意事項(xiàng)
- springboot項(xiàng)目不會(huì)默認(rèn)導(dǎo)入Spring Boot Actuator
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
- 如果其他組件有引入但是不知道是哪個(gè)組件,使用傳遞依賴引入,進(jìn)入項(xiàng)目根目錄,使用
mvn dependency:tree
列出所有依賴項(xiàng)及其傳遞依賴項(xiàng)。
到此這篇關(guān)于Spring Boot Actuator未授權(quán)訪問漏洞的問題解決的文章就介紹到這了,更多相關(guān)Spring Boot Actuator未授權(quán)訪問漏洞內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot應(yīng)用監(jiān)控Actuator使用隱患及解決方案
- SpringBoot+actuator和admin-UI實(shí)現(xiàn)監(jiān)控中心方式
- SpringBoot Actuator未授權(quán)訪問漏洞的排查和解決方法
- SpringBoot中的Actuator詳解
- SpringBoot Actuator未授權(quán)訪問漏洞解決方案
- 關(guān)于SpringBoot Actuator漏洞補(bǔ)救方案
- SpringBoot監(jiān)控模塊Actuator的用法詳解
- SpringBoot Actuator未授權(quán)訪問漏洞修復(fù)詳解
- Spring Boot Actuator入門指南
相關(guān)文章
Elasticsearch QueryBuilder簡單查詢實(shí)現(xiàn)解析
這篇文章主要介紹了Elasticsearch QueryBuilder簡單查詢實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08xxl-job定時(shí)任務(wù)配置應(yīng)用及添加到springboot項(xiàng)目中實(shí)現(xiàn)動(dòng)態(tài)API調(diào)用
XXL-JOB是一個(gè)分布式任務(wù)調(diào)度平臺(tái),其核心設(shè)計(jì)目標(biāo)是開發(fā)迅速、學(xué)習(xí)簡單、輕量級(jí)、易擴(kuò)展,本篇文章主要是對(duì)xuxueli的xxl-job做一個(gè)簡單的配置,以及將其添加到自己已有的項(xiàng)目中進(jìn)行api調(diào)用,感興趣的朋友跟隨小編一起看看吧2024-04-04SpringBoot+layui實(shí)現(xiàn)文件上傳功能
Spring Boot是由Pivotal團(tuán)隊(duì)提供的全新框架,其設(shè)計(jì)目的是用來簡化新Spring應(yīng)用的初始搭建以及開發(fā)過程。這篇文章主要介紹了SpringBoot+layui實(shí)現(xiàn)文件上傳,需要的朋友可以參考下2018-09-09JMS簡介與ActiveMQ實(shí)戰(zhàn)代碼分享
這篇文章主要介紹了JMS簡介與ActiveMQ實(shí)戰(zhàn)代碼分享,具有一定借鑒價(jià)值,需要的朋友可以參考下2017-12-12Spring Boot 動(dòng)態(tài)數(shù)據(jù)源示例(多數(shù)據(jù)源自動(dòng)切換)
本篇文章主要介紹了Spring Boot 動(dòng)態(tài)數(shù)據(jù)源示例(多數(shù)據(jù)源自動(dòng)切換),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02java中循環(huán)刪除list中元素的方法總結(jié)
下面小編就為大家?guī)硪黄猨ava中循環(huán)刪除list中元素的方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12java門禁系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了java門禁系統(tǒng)面向?qū)ο蟪绦蛟O(shè)計(jì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01