SpringBoot Actuator的配置和使用

摘要

目前springBoot是微服务不可缺少的一个框架,目前在很多企业的项目中已经广泛使用了,我们今天就说说Actuator 在springBoot中的使用,以及踩过的一个安全性坑。

目前springBoot是微服务不可缺少的一个框架,目前在很多企业的项目中已经广泛使用了,我们今天就说说Actuator 在springBoot中的使用,以及踩过的一个安全性坑。

Actuator正是SpringBoot提供的对应用系统的监控功能的是一个服务,我们的系统注册了Actuator服务,就可以查看应用的相关配置信息,系统的配置信息,应用的接口请求信息以及我们的服务使用的内存等信息,这个配置非常简单易用,但是如果配置不当,就会造成信息泄露等严重的安全隐患。

要是用Actuator,我们先创建一个SpringBoot Admin的一个监控服务,结构如下:


image.png

SpringBootAdminApplication 内容:

package com.xx.app.admin;

import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@EnableAdminServer
public class SpringBootAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootAdminApplication.class, args);
    }

}

pom.xml内容如下:需要这2个核心的包

image.png

application.properties中配置一下服务运行端口:

server.port=8878
server.servlet.context-path=/spring

监控服务就创建好了,使用maven编译打包,编译一个jar包,上传到服务器上启动运行, nohup java -jar xxx.jar &


然后我们其他的业务微服务就可以接入到上面的监控服务。

在我们的业务微服中加入下面包:

<dependency>
    <groupId>de.codecentric</groupId>
    <artifactId>spring-boot-admin-starter-client</artifactId>
    <version>2.0.1</version>
</dependency>

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

在业务微服务的application.properties中配置我们的监控服务:

spring.application.name=integral-web
#监控服务地址
spring.boot.admin.client.url=http://ip:8878/spring
management.endpoints.web.exposure.include=*

在浏览器中访问http://ip:8878/spring/env 查看系统环境变量的配置信息

访问 http://ip:8878/spring/trace 

可查看所有Web请求的详细信息,包括请求方法、路径、时间戳以及请求和响应的头信息甚至cookie信息:


88.jpg


安全措施


如果上述请求接口不做任何安全限制,安全隐患显而易见。实际上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=admin123

安全建议

在使用Actuator时,不正确的配置或者疏忽,就会造成严重的信息泄露等安全隐患。

所以在提交在代码安全审计时,如果采用的是springboot架构并且使用了actuator,就一定要对安全依赖和配置进行检查。

安全的做法可以加入security,打开安全限制并进行身份验证。

最好做法就是设置单独的Actuator管理端口并配置不对外网开放,这样安全性问题就不会暴露在公网



IT家园
IT家园

网友最新评论 (0)

发表我的评论
取消评论
表情