SpringBoot應(yīng)用監(jiān)控Actuator使用隱患及解決方案
Actuator介紹
SpringBoot的Actuator 模塊提供了生產(chǎn)級(jí)別的功能,比如健康檢查,審計(jì),指標(biāo)收集,HTTP 跟蹤等,幫助我們監(jiān)控和管理Spring Boot 應(yīng)用。這個(gè)模塊是一個(gè)采集應(yīng)用內(nèi)部信息暴露給外部的模塊,如自動(dòng)化配置信息、創(chuàng)建的Spring beans信息、系統(tǒng)環(huán)境變量的配置信息以及Web請(qǐng)求的詳細(xì)信息等(上述的功能都可以通過(guò)HTTP 和 JMX 訪問(wèn))。如果使用不當(dāng)或者一些不經(jīng)意的疏忽,可能造成信息泄露等嚴(yán)重的安全隱患。(PS:樓主這里就因?yàn)槟惩碌氖韬錾暇€后被檢測(cè)到未授權(quán)訪問(wèn)然后勒令整改的)
Actuator核心是:Endpoints,它用來(lái)監(jiān)視應(yīng)用程序及交互,actuator中內(nèi)置了非常多的Endpoints(如:health、info、beans、httptrace等等),但同時(shí)也允許用戶根據(jù)自己需求自定義端點(diǎn)。
Endpoints 主要分成兩類:原生端點(diǎn)和用戶自定義端點(diǎn);自定義端點(diǎn)主要是指擴(kuò)展性,用戶可以根據(jù)自己的實(shí)際應(yīng)用,定義一些比較關(guān)心的指標(biāo),在運(yùn)行期進(jìn)行監(jiān)控。
常見(jiàn)端點(diǎn)如下表格所示
| EndPoints | 描述 |
|---|---|
| auditevents | 公開(kāi)當(dāng)前應(yīng)用程序的審核事件信息。 |
| beans | 顯示應(yīng)用程序中所有Spring bean的完整列表。 |
| caches | 暴露可用的緩存。 |
| conditions | 顯示在配置和自動(dòng)配置類上評(píng)估的條件以及它們匹配或不匹配的原因。 |
| configprops | 顯示所有的整理列表@ConfigurationProperties,查看配置屬性,包括默認(rèn)配置 |
| env | 露出Spring的屬性的各種環(huán)境變量,后面可跟/{name}查看具體的值 |
| flyway | 顯示已應(yīng)用的任何Flyway數(shù)據(jù)庫(kù)遷移。 |
| health | 顯示應(yīng)用健康信息,2.0以后需要在配置里show-details打開(kāi)開(kāi)關(guān) |
| httptrace | 顯示HTTP跟蹤信息,2.0以后需要手動(dòng)打開(kāi) |
| info | 顯示任意應(yīng)用信息,是在配置文件里自己定義的 |
| integrationgraph | 顯示Spring Integration圖。 |
| loggers | 顯示和修改應(yīng)用程序中記錄器的配置。 |
| liquibase | 顯示已應(yīng)用的任何Liquibase數(shù)據(jù)庫(kù)遷移。 |
| scheduledtasks | 顯示應(yīng)用程序中的計(jì)劃任務(wù)。 |
感興趣的小伙伴可自行查閱
使用Actuator
使用Actuator監(jiān)控只需要在Maven中引入依賴“spring-boot-starter-actuator”即可
<!-- 監(jiān)控端點(diǎn)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>在YML配置文件中配置actuator的訪問(wèn)路徑,開(kāi)放端口
management:
endpoints:
web:
# actuator的訪問(wèn)路徑,默認(rèn)/actuator
base-path: /actuator
# 設(shè)置是否暴露端點(diǎn) 默認(rèn)只有health和info可見(jiàn)
exposure:
# 如需暴漏指定端口,在下方輸入,端口名稱,多個(gè)端點(diǎn)之間用“,”分割。如:env,session。開(kāi)放所
# 有用*號(hào)表示,如下所示
include: "*"
#新開(kāi)監(jiān)控端口,不設(shè)置采取項(xiàng)目端口(默認(rèn))
server:
port: 8081
endpoint:
health:
# 顯示db、redis、rabbti連接情況等
show-details: always
shutdown:
enabled: true 到這里引入Actuator已完成,啟動(dòng)項(xiàng)目在瀏覽器地址欄輸入項(xiàng)目路徑后拼上/actuator后即可訪問(wèn)(注:如果上面配置過(guò)地址這里就不應(yīng)輸入/actuator,應(yīng)該為你配置的地址。如需查詢某一個(gè)端點(diǎn)就在/actuator后面拼接上。如env:localhost:8080/actuator/env)

配置Actuator可視化界面
看上圖所列出的讓人看得不是很清楚,這時(shí)候可以使用monitor來(lái)構(gòu)建界面,使用也很簡(jiǎn)單,只需要引入“spring-boot-monitor”即可
<dependency>
<groupId>cn.pomit</groupId>
<artifactId>spring-boot-monitor</artifactId>
<version>0.0.4</version>
</dependency>引入完成后啟動(dòng)項(xiàng)目,這個(gè)時(shí)候就不是訪問(wèn)/actuator而是/monitor來(lái)進(jìn)行訪問(wèn)。

Actuator配置安全訪問(wèn)
需要使用Actuator監(jiān)控服務(wù)端點(diǎn)情況時(shí),如果在本地的話問(wèn)題不大,但是放到線上就會(huì)有問(wèn)題。這個(gè)時(shí)候我們需要對(duì)Actuator進(jìn)行保護(hù)。
比如說(shuō)限制開(kāi)放某一端點(diǎn),我們可以在yml中配置(env舉例):
endpoint:
env:
enabled: false也可以通過(guò)搭配security模塊來(lái)進(jìn)行登錄限制。
首先引入maven依賴“spring-boot-starter-security”依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>在yml配置文件中定義賬號(hào)密碼(注:也可以不在配置文件中定義,在配置類中定義)
spring:
security:
user:
name: root
password: 123456
roles: ADMIN編寫配置類(注:SpringBoot2.0拋棄了之前的引用方式,故此使用配置類方法,該實(shí)例只針對(duì)actuator進(jìn)行攔截,各位可根據(jù)實(shí)際情況調(diào)整)
@Configuration
@EnableWebSecurity
public class WebSecurityConfigurer extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) {
http.csrf().disable();
http.formLogin().and()
.authorizeRequests()
.antMatchers("/**actuator/**","/**monitor/**")
.authenticated()
.anyRequest()
.permitAll()
.and()
.httpBasic();
}
//添加賬號(hào)、密碼、權(quán)限
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().passwordEncoder(new BCryptPasswordEncoder())
.withUser("root")
.password(new BCryptPasswordEncoder().encode("123456"))
.roles("ADMIN");
}
}啟動(dòng)項(xiàng)目訪問(wèn)該地址會(huì)自動(dòng)跳轉(zhuǎn)到登錄界面,使用配置好的賬號(hào)密碼登錄即可。

注:也可更改驗(yàn)證步驟搭配數(shù)據(jù)庫(kù)進(jìn)行登錄,在此就不多說(shuō)了感興趣的小伙伴可自行研究展開(kāi)了
Actuator安全建議
- 設(shè)置Actuator獨(dú)立端口,并且不對(duì)外開(kāi)放
- 設(shè)置特定訪問(wèn)IP地址,非設(shè)定IP自動(dòng)攔截
- 設(shè)置訪問(wèn)路徑不采取默認(rèn)路徑
- 按需開(kāi)放端點(diǎn)
- 搭配security模塊進(jìn)行訪問(wèn)加密
以上就是SpringBoot應(yīng)用監(jiān)控Actuator使用隱患及解決方案的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot Actuator使用隱患的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- SpringBoot+actuator和admin-UI實(shí)現(xiàn)監(jiān)控中心方式
- SpringBoot Actuator未授權(quán)訪問(wèn)漏洞的排查和解決方法
- Spring Boot Actuator未授權(quán)訪問(wèn)漏洞的問(wèn)題解決
- SpringBoot中的Actuator詳解
- SpringBoot Actuator未授權(quán)訪問(wèn)漏洞解決方案
- 關(guān)于SpringBoot Actuator漏洞補(bǔ)救方案
- SpringBoot監(jiān)控模塊Actuator的用法詳解
- SpringBoot Actuator未授權(quán)訪問(wèn)漏洞修復(fù)詳解
- Spring Boot Actuator入門指南
相關(guān)文章
Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過(guò)程圖解
這篇文章主要介紹了Jenkins集成sonarQube實(shí)現(xiàn)代碼質(zhì)量檢查過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09
Springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析
這篇文章主要介紹了springboot轉(zhuǎn)發(fā)重定向?qū)崿F(xiàn)方式解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03
詳解springboot通過(guò)Async注解實(shí)現(xiàn)異步任務(wù)及回調(diào)的方法
這篇文章主要介紹了springboot通過(guò)Async注解實(shí)現(xiàn)異步任務(wù)及回調(diào),文中通過(guò)一個(gè)簡(jiǎn)單示例來(lái)直觀的理解什么是同步調(diào)用,在單元測(cè)試用例中,注入?SyncTask?對(duì)象,并在測(cè)試用例中執(zhí)行?doTaskOne(),doTaskTwo(),doTaskThree()?三個(gè)方法,具體實(shí)現(xiàn)方式跟隨小編一起看看吧2022-05-05
seata-1.4.0安裝及在springcloud中使用詳解
這篇文章主要介紹了seata-1.4.0安裝及在springcloud中使用,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12
IDEA下使用MyBatisCodeHelper插件的方法詳解
這篇文章主要介紹了IDEA下使用MyBatisCodeHelper插件的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
Java實(shí)現(xiàn)視頻格式轉(zhuǎn)化的操作代碼
在當(dāng)今數(shù)字化時(shí)代,視頻已成為我們?nèi)粘I詈凸ぷ髦胁豢苫蛉钡囊徊糠?不同的設(shè)備和平臺(tái)可能支持不同的視頻格式,因此,視頻格式轉(zhuǎn)換的需求也日益增長(zhǎng),本文將介紹如何使用Java實(shí)現(xiàn)視頻格式轉(zhuǎn)換,需要的朋友可以參考下2025-01-01
Idea中maven項(xiàng)目實(shí)現(xiàn)登錄驗(yàn)證碼功能
這篇文章主要介紹了Idea中maven項(xiàng)目實(shí)現(xiàn)登錄驗(yàn)證碼功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12

