一、介绍

由于项目中使用的仍然是比较老旧的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. MySQL进阶篇:详解存储引擎MyISAM

    MySQL进阶篇:第一章_一.三_存储引擎特点_MyISAM 1.1 存储引擎特点 1.1.2 MyISAM 1). 介绍 MyISAM是MySQL早期的默认存储引擎.. 2). 特点 不支持事务,不 ...

  2. 【菜鸟必看】stm32定时器的妙用

    摘要:本文为你带来关于stm32定时器的使用的便利和优势之处. 使用定时器去计算获取一条的时间 一.初步了解定时器 stm32定时器时钟图如下: 定时器2-7:普通定时器定时器1.8:高级定时器 二. ...

  3. 绝了,华为云服务器“The 3”出道,每款都很能打

    近年来,随着企业上云转型.互联网信息产业技术不断发展与革新,云服务器在主机市场逐渐占领主导地位,云服务器品牌层出不穷,各家云厂商都想占据一席之地,这也就对各云厂商的提供的云服务器算力和云端服务能力的要 ...

  4. 华为云MVP朱有鹏:做IoT开发乐趣无穷,年轻开发者更要厚积薄发

    [摘要] 可以预见的是,AIoT会是未来一段时间主流的技术趋势方向,当前也有不少科技巨头涌入其中,蓄势待发,而5G的到来加速了AIoT产业的扩张速度,所以如华为云MVP朱有鹏所说,年轻的开发者应该要拥 ...

  5. 带你彻底搞懂高性能网络模式Reactor 和 Proactor

    ​​​​摘要:无论是 Reactor,还是 Proactor,都是一种基于「事件分发」的网络编程模式,区别在于 Reactor 模式是基于「待完成」的 I/O 事件,而 Proactor 模式则是基于 ...

  6. 华为云数据库GaussDB(for Influx)揭秘第二期:解密GaussDB(for Influx)的数据压缩

    摘要:物联网设备产生的数据是典型的时序数据,而时序数据库是存储时序数据的专业数据库系统,因此数据压缩对时序数据库来说是一项必不可少的能力. 本文分享自华为云社区<华为云数据库GaussDB(fo ...

  7. grep 文本搜索工具

    参考百度百科 1.简介 grep (缩写来自Globally search a Regular Expression and Print)是一种强大的文本搜索工具,它能使用特定模式匹配(包括正则表达式 ...

  8. 最火前端Web组态软件(可视化)

    ​ 友情提示:本文为原创文章,转载请注明出处,商务合作请私信!!! 前言: 随着物联网.大数据等技术高速发展,我们逐步向数字化.可视化的人工智能(AI)时代的方向不断迈进.智能时代是工业 4.0 时代 ...

  9. 灵魂拷问std::enable_shared_from_this,揭秘实现原理

    参考博客: std::enable_shared_from_this原理浅析 引言 在C++编程中,使用智能指针是一种安全管理对象生命周期的方式.std::shared_ptr是一种允许多个指针共享对 ...

  10. 你真的懂Linux内核中的阻塞和异步通知机制吗?

    @ 目录 阻塞/非阻塞简介 阻塞/非阻塞例程 等待队列简介 等待队列相关函数 定义等待队列 初始化等待队列头 定义并初始化一个等待队列项 将队列项添加到等待队列头 将队列项从等待队列头移除 等待唤醒 ...