一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于SpringBoot應用監控Actuator安全隱患及解決方式

基于SpringBoot應用監控Actuator安全隱患及解決方式

2021-10-20 11:09lucky jaler Java教程

這篇文章主要介紹了SpringBoot應用監控Actuator安全隱患及解決方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

概述

微服務作為一項在云中部署應用和服務的新技術是當下比較熱門話題,而微服務的特點決定了功能模塊的部署是分布式的,運行在不同的機器上相互通過服務調用進行交互,業務流會經過多個微服務的處理和傳遞,在這種框架下,微服務的監控顯得尤為重要。

而Actuator正是Spring Boot提供的對應用系統的監控和管理的集成功能,可以查看應用配置的詳細信息,例如自動化配置信息、創建的Spring beans信息、系統環境變量的配置信息以及Web請求的詳細信息等。

如果使用不當或者一些不經意的疏忽,可能造成信息泄露等嚴重的安全隱患。

Actuator使用

Actuator應用監控使用只需要添加spring-boot-starter-actuator依賴即可,如下:

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

可以在application.properties中指定actuator的訪問端口、訪問路徑等信息:

# 訪問示例:http://localhost:9595/monitor
management:
  endpoints:
    web:
      # actuator的訪問路徑,替換默認/actuator
      base-path: /monitor
      # 設置是否暴露端點 默認只有health和info可見
      exposure:
        # include: env   # 方式1: 暴露端點env,配置多個以,隔開
        include: "*"     # 方式2: 包括所有端點,注意需要添加引號
        # 排除端點
        exclude: shutdown
  server:
    port: 9595  #新開監控端口,不和應用用同一個端口
  endpoint:
    health:
      show-details: always # 顯示db、redis、rabbti連接情況等
    shutdown:
      enabled: true  #默認情況下,除shutdown以外的所有端點均已啟用。手動開啟

此時,運行示例,訪問/monitor/即可查看所有端點信息,再訪問/monitor/env即可查看該應用全部環境屬性,如圖:

基于SpringBoot應用監控Actuator安全隱患及解決方式

基于SpringBoot應用監控Actuator安全隱患及解決方式

Endpoints(端點)介紹

Endpoints 是 Actuator 的核心部分,它用來監視應用程序及交互,spring-boot-actuator中已經內置了非常多的Endpoints(health、info、beans、httptrace、shutdown等等),同時也允許我們擴展自己的端點。

Endpoints 分成兩類:原生端點和用戶自定義端點;自定義端點主要是指擴展性,用戶可以根據自己的實際應用,定義一些比較關心的指標,在運行期進行監控。

原生端點是在應用程序里提供的眾多 restful api 接口,通過它們可以監控應用程序運行時的內部狀況。原生端點又可以分成三類:

  • 應用配置類:可以查看應用在運行期間的靜態信息:例如自動配置信息、加載的spring bean信息、yml文件配置信息、環境信息、請求映射信息;
  • 度量指標類:主要是運行期間的動態信息,例如堆棧、請求連、一些健康指標、metrics信息等;
  • 操作控制類:主要是指shutdown,用戶可以發送一個請求將應用的監控功能關閉。

Actuator 默認提供了以下接口,具體如下表所示:

ID

描述

默認啟用

默認公開

auditevents 公開當前應用程序的審計事件信息 Yes No
beans 顯示應用程序中所有Spring bean的完整列表 Yes No
conditions 顯示在配置和自動配置類上評估的條件以及它們是否匹配的原因 Yes No
configprops 顯示所有@ConfigurationProperties對照的列表 Yes No
env 從Spring的ConfigurableEnvironment中公開屬性 Yes No
flyway 顯示已應用的任何Flyway數據庫遷移 Yes No
health 顯示應用程序健康信息 Yes Yes
httptrace 顯示HTTP跟蹤信息(默認情況下,最后100個HTTP請求-響應交互) Yes No
info 顯示任意應用程序信息 Yes Yes
loggers 顯示和修改應用程序中記錄器的配置 Yes No
liquibase 顯示已應用的任何Liquibase數據庫遷移 Yes No
metrics 顯示當前應用程序的“指標”信息 Yes No
mappings 顯示所有@RequestMapping路徑對照的列表 Yes No
scheduledtasks 顯示應用程序中調度的任務 Yes No
sessions 允許從Spring Session支持的會話存儲中檢索和刪除用戶會話 Yes No
shutdown 讓應用程序優雅地關閉 No No
threaddump 執行線程轉儲 Yes No

安全措施

如果上述請求接口不做任何安全限制,安全隱患顯而易見。實際上Spring Boot也提供了安全限制功能。比如要禁用/env接口,則可設置如下:

endpoint:
 env:
    enabled: false

另外也可以引入spring-boot-starter-security依賴

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

在application.properties中開啟security功能,配置訪問權限驗證,這時再訪問actuator功能時就會彈出登錄窗口,需要輸入賬號密碼驗證后才允許訪問。

spring:
 security:
    user:
      password: 123456
      name: jaler

為了只對actuator功能做權限驗證,其他應用接口不做認證,我們可以重新定制下SpringSecurity

package com.jaler.common.common.config; 
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
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 ActuatorSecurityConfig extends WebSecurityConfigurerAdapter {
 
  @Autowired
  Environment env;
 
  @Override
  protected void configure(HttpSecurity security) throws Exception { 
        String contextPath = env.getProperty("management.endpoints.web.base-path");
        if(StringUtils.isEmpty(contextPath)) {
            contextPath = "";
        }
        security.csrf().disable();
        security.authorizeRequests()
                .antMatchers("/**"+contextPath+"/**")
                .authenticated()
                .anyRequest()
                .permitAll()
                .and()
                .httpBasic(); 
     }
}

再次訪問http://localhost:9595/monitor,此時需要進行權限驗證,如下圖:

基于SpringBoot應用監控Actuator安全隱患及解決方式

安全建議

1.只開放某些無敏感信息的端點。

2.打開安全限制并進行身份驗證,訪問Actuator接口時需要登錄。

3.Actuator訪問接口使用獨立端口,并配置不對外網開放。

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/u013087026/article/details/109536552

延伸 · 閱讀

精彩推薦
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
主站蜘蛛池模板: 女明星放荡高h日常生活 | 91动漫在线观看 | chinese456老人gay china外卖员gay国产xnxx | 午夜爱爱爱爱爽爽爽视频网站 | 国产午夜一区二区在线观看 | 三级无删减高清在线影院 | 99精品国产久热在线观看66 | 91短视频在线观看2019 | 777午夜精品免费播放 | 女bbbbxxx孕妇 | 暖暖免费高清完整版观看日本 | 免费又爽又黄禁片视频在线播放 | 成人欧美一区二区三区 | 亚洲AV久久无码精品蜜桃 | tk白嫩玉足脚心vk | 亚洲色影| 久久精品热在线观看30 | 全彩调教侵犯h本子全彩妖气he | 精品无码久久久久久久久 | 欧美午夜精品 | 午夜福利理论片在线播放 | 亚洲日本久久一区二区va | 国产91第一页 | 999久久久免费精品国产牛牛 | 日本一区二区三区在线 视频 | 亚洲精品中文字幕第一区 | 视频在线播放 | 国产日韩精品一区二区在线观看播放 | 涩涩成人 | 国产高清在线精品一区 | 国产女同精品 | 好男人资源大全免费观看 | 深夜成人 | www国产91| 国产精品免费拍拍拍 | 国产另类视频一区二区三区 | 王的视频视ivk | 亚洲剧情在线观看 | 午夜精品久久久久久中宇 | 91精品国产亚洲爽啪在线影院 | 欧美又硬又粗又长又大 |