SpringBoot應用監控Actuator使用的安全隱患

轉載地址:https://xz.aliyun.com/t/2233  ,學習留存,有問題請聯繫本人刪除。

------------------------------------------------------------------------------

SpringBoot應用監控Actuator使用的安全隱患

cryin / 2018-03-30 13:53:17 / 瀏覽數 56522 安全技術 WEB安全頂(0) 踩(0)

概述

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

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的訪問路徑,如指定路徑爲/monitor:

management.context-path=/monitor

此時,運行示例,訪問/monitor/env即可查看系統環境變量的配置信息,之後再訪問/monitor/trace即可查看所有Web請求的詳細信息,包括請求方法、路徑、時間戳以及請求和響應的頭信息甚至cookie信息,如圖:

Actuator監控分成兩類:原生端點和用戶自定義擴展端點,原生的主要有:

路徑 描述
/autoconfig 提供了一份自動配置報告,記錄哪些自動配置條件通過了,哪些沒通過
/beans 描述應用程序上下文裏全部的Bean,以及它們的關係
/env 獲取全部環境屬性
/configprops 描述配置屬性(包含默認值)如何注入Bean
/dump 獲取線程活動的快照
/health 報告應用程序的健康指標,這些值由HealthIndicator的實現類提供
/info 獲取應用程序的定製信息,這些信息由info打頭的屬性提供
/mappings 描述全部的URI路徑,以及它們和控制器(包含Actuator端點)的映射關係
/metrics 報告各種應用程序度量信息,比如內存用量和HTTP請求計數
/shutdown 關閉應用程序,要求endpoints.shutdown.enabled設置爲true
/trace 提供基本的HTTP請求跟蹤信息(時間戳、HTTP頭等)

安全措施

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

endpoints.env.enabled= false

如果只想打開一兩個接口,那就先禁用全部接口,然後啓用需要的接口:

endpoints.enabled = false
endpoints.metrics.enabled = true

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

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

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

management.port=8099
management.security.enabled=true
security.user.name=admin
security.user.password=admin

安全建議

在使用Actuator時,不正確的使用或者一些不經意的疏忽,就會造成嚴重的信息泄露等安全隱患。在代碼審計時如果是springboot項目並且遇到actuator依賴,則有必要對安全依賴及配置進行復查。也可作爲一條規則添加到黑盒掃描器中進一步把控。
安全的做法是一定要引入security依賴,打開安全限制並進行身份驗證。同時設置單獨的Actuator管理端口並配置不對外網開放。

參考

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章