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