一、介绍

由于项目中使用的仍然是比较老旧的1.5.6版本,所以本文是基于此版本进行描述。

二、Actuator使用

ActuatorActuator是Spring Boot提供的对应用系统的监控和管理的集成功能,可以查看应用配置的详细信息,例如自动化配置信息、创建的Spring beans信息、系统环境变量的配置信以及Web请求的详细信息等。如果使用不当或者一些不经意的疏忽,可能造成信息泄露等严重的安全隐患。

Actuator是Springboot提供的用来对应用系统进行自省和监控的功能模块,借助于Actuator开发者可以很方便地对应用系统某些监控指标进行查看、统计等。

Actuator 的核心是端点 Endpoint,它用来监视应用程序及交互,spring-boot-actuator 中已经内置了非常多的 Endpoint(health、info、beans、metrics、httptrace、shutdown等等),同时也允许我们自己扩展自己的 Endpoints。每个 Endpoint 都可以启用和禁用。要远程访问 Endpoint,还必须通过 JMX 或 HTTP 进行暴露,大部分应用选择HTTP。

Actuator应用监控使用只需要添加spring-boot-starter-actuator依赖即可,如下:

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

如果请求接口不做任何安全限制,会有很大的安全隐患,审计也不过关。

一般我们的配置方式如下:

#先禁用所有endpoint

endpoints.enabled = false

#按需要开启部分endpoint

endpoints.metrics.enabled = true

endpoints.dump.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管理端口并配置不对外网开放。

三、2.x与1.x

需要注意的是,Spring Boot 2.0 相对于上个版本, Actuator 发生很多变化,keys 的配置改变如下:

四、源码相关

参考:Springboot Actuator之七:actuator 中原生endpoint源码解析1 - 走看看

五、查看所有可配置的endpoints

Actuator监控分成两类:原生端点和用户自定义扩展端点,原生的主要有:

路径 描述
/loggers

查看所有的日志级别,不同包的级别。默认的日志级别为INFO

另外,可动态修改日志的打印级别

/shutdown

关闭应用程序,要求endpoints.shutdown.enabled设置为true

需要关闭,否则可否以远程关闭服务

/env

获取全部环境属性,如操作系统信息(什么操作系统,什么版本等),虚拟机信息(名称、版本、厂商等),java版本,类路径,用户信息,系统域信息(容易暴露公司信息),第三方服务信息(如数据库连接地址,redis地址等,很敏感),IP地址(很敏感)。

总之一句话,env绝对要关闭

/configprops

描述配置属性(包含默认值)如何注入Bean。

容易暴露ip地址,eureka地址,endpoints哪些可访问等

需要关闭,否则可能基于此接口间接获取到其它的信息

/heapdump 访问/heapdump 路径,返回 GZip 压缩 hprof 堆转储文件。在 Android studio 打开,会泄露站点内存信息,很多时候会包含后台用户的账号密码(包含漏洞的图片暂时没得,大家记住思路就好了..),通过泄露的账号密码,然后进入后台一番轰炸也不错的。
/trace

通过访问/trace路径,可获取用户认证字段信息,如token,cookie 等重要权限验证信息

需要关闭,否则可能暴露用户的token或cookie等权限验证信息

/dump 获取线程活动的快照
/info

获取应用程序的定制信息,这些信息由info打头的属性提供

一般不配置为空

/health 报告应用程序的健康指标,这些值由HealthIndicator的实现类提供
/mappings

描述全部的URI路径,以及它们和控制器(包含Actuator端点)的映射关系

非必要也不要打开,黑客可攻击写相关的接口(如果权限验证不当就惨了)

/metrics 报告各种应用程序度量信息,比如内存用量和HTTP请求计数
/autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过
/beans 描述应用程序上下文里全部的Bean,以及它们的关系

六、prometheus对应的endpoint

endpoints.prometheus.enabled=true

endpoint是可以自定义的,springboot对接prometheus用的就是自定义endpoint的原理,如下:

因此我们同样可以用正常endpoint开启和关闭的方式进行配置。

注意,如果我们配置了关闭endpoint,则需要显示配置去打开prometheus这个endpoint,配置方式如下:

七、动态修改日志级别

如下案例所示:

将com.iqiyi.hubble.auth.service.impl.UserAuthResServiceImpl类的日志级别修改成DEBUG

参考:

【spring cloud】【spring boot】网管服务-->配置文件添加endpoints.enabled = false,SpringBoot应用监控Actuator使用的安全隐患..._weixin_34206899的博客-CSDN博客

Springboot之actuator配置不当漏洞(autoconfig、configprops、beans、dump、env、health、info、mappings、metrics、trace)_墨痕诉清风的博客-CSDN博客_actuator dump

文章知识点与官方知识档案匹配,可进一步学习相关知识
云原生入门技能树首页概览10831 人正在系统学习中

[转帖]总结:Springboot监控Actuator相关的更多相关文章

  1. springboot 监控 Actuator

    springboot 提供了对项目的监控功能. 1.首先添加依赖包 <!-- https://mvnrepository.com/artifact/org.springframework.boo ...

  2. SpringBoot系列: Actuator监控

    Sprng Boot 2 actuator变动加大, 网上很多资料都都已经过期. ============================配置项============================ ...

  3. SpringBoot集成Actuator监控管理

    1.说明 本文详细介绍Spring Boot集成Actuator监控管理的方法, 基于已经创建好的Spring Boot工程, 然后引入Actuator依赖, 介绍监控管理相关功能的使用. Sprin ...

  4. Springboot监控之一:SpringBoot四大神器之Actuator

    介绍 Spring Boot有四大神器,分别是auto-configuration.starters.cli.actuator,本文主要讲actuator.actuator是spring boot提供 ...

  5. 【spring cloud】【spring boot】网管服务-->配置文件添加endpoints.enabled = false,SpringBoot应用监控Actuator使用的安全隐患

    转载:https://xz.aliyun.com/t/2233 ==================================================================== ...

  6. Springboot监控之二:Spring Boot Admin对Springboot服务进行监控

    概述 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖后, Spring Boot 会默认配置一些通用的监控,比如 jvm 监控.类加载.健 ...

  7. springboot集成Actuator

    Actuator监控端点,主要用来监控与管理. 原生端点主要分为三大类:应用配置类.度量指标类.操作控制类. 应用配置类:获取应用程序中加载的配置.环境变量.自动化配置报告等与SpringBoot应用 ...

  8. SpringBoot 之Actuator.

    一.Actuator 介绍 Actuator 是 SpringBoot 项目中一个非常强大一个功能,有助于对应用程序进行监视和管理,通过 restful api 请求来监管.审计.收集应用的运行情况. ...

  9. SpringBoot 开启 Actuator

    在生产环境中,需要实时或定期监控服务的可用性.spring-boot 的actuator(监控)功能提供了很多监控所需的接口.简单的配置和使用如下: 1.引入依赖: <dependency> ...

  10. springboot配置server相关配置&整合模板引擎Freemarker、thymeleaf&thymeleaf基本用法&thymeleaf 获取项目路径 contextPath 与取session中信息

    1.Springboot配置server相关配置(包括默认tomcat的相关配置) 下面的配置也都是模板,需要的时候在application.properties配置即可 ############## ...

随机推荐

  1. 浅学GoF23种设计模式

    long long ago 买了设计模式的书,一直没看,平常工作虽然涉及到,但是不够系统,工作之余抽空学习一下. 一.创建型模式 01.单例(Singleton) 02.工厂方法(Factory Me ...

  2. 读书笔记丨远程服务调用和RESTful,如何分析和抉择?

    摘要:相信未来REST规范将会变得更加流行和普及. 本文分享自华为云社区<云原生时代,远程服务调用和RESTful,如何分析和抉择?>,作者:breakDawn . 随着云原生的概念越来越 ...

  3. 18篇文章系统解读:中台规划如何撬动企业IT基础设施转型升级

    摘要:通过这个系列,让大家对中台的价值.针对的问题痛点.中台规划的方法思路和技巧.一些中台业务实践有个基本的认识,让客户清楚的意识到企业中台的业务价值,进而通过企业中台规划牵引客户IT基础设施投资. ...

  4. 认识一下MRS里的“中间人”Alluxio

    摘要:Alluxio在mrs的数据处理生态中处于计算和存储之间,为上层spark.presto.mapredue.hive计算框架提供了数据抽象层,计算框架可以通过统一的客户端api和全局命名空间访问 ...

  5. webpack性能优化(2):splitChunks用法详解

    之前写的<webpack性能优化(0):webpack性能优化概况-优化构建速度>.<webpack性能优化(1):分隔/分包/异步加载+组件与路由懒加载> 如果使用vue-c ...

  6. 听说火山引擎推出的 DataLeap,已经可以支持万级表的数据血缘图谱了!

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 数据来源广.量级大.场景多,导致数据之间关系变得异常复杂. 经过读取.清洗.存储.计算等一系列流程之后,数据最终汇 ...

  7. PPT 笔刷:让你的PPT充满视觉冲击

    其实就是下载的AI效果 辅助文字展示 辅助图片展示 创意展示图片,增强视觉冲击力 使用 删除外面的边框 https://www.bilibili.com/video/BV1ha411g7f5?p=16

  8. Spring Boot CMD 运行日志输出中文乱码

    Spring Boot 在Windows CMD 中运行,日志输出中文乱码name="CONSOLE" 设置成 charset utf-8 ,在windows cmd 中运行时,l ...

  9. 【Flask】cbv源码分析 flask模板使用 flask请求与响应 session及源码分析 闪现flash 请求扩展

    目录 上节回顾 今日内容 1 cbv分析 1.1 源码分析 2 模板 2.1 app.py 2.2 index.html 3 请求与响应 4 session及源码分析 4.1 session的使用 4 ...

  10. 关于_beginthreadex和CreateThread的区别

    关于_beginthreadex和CreateThread的区别 在 Win32 API 中,创建线程的基本函数是 CreateThread,而 _beginthread(ex) 是 C++ 运行库的 ...