栏目分类
热点资讯
生活服务
你的位置:广州拼多多兼职美工网站 > 生活服务 > 主图设计 【安全鉴权】Spring Boot Actuator如何进行安全鉴权?还得是这样。
主图设计 【安全鉴权】Spring Boot Actuator如何进行安全鉴权?还得是这样。
发布日期:2024-08-29 07:46 点击次数:83
背景
spirng boot actuator是springboot程序的监控系统,可以监控很多很多的系统数据,可以查看应用配置的详细信息等功能。这么强大的功能,如果不采取一些安全措施,很容易暴露出来,被人恶意利用。故本文将讲述2种方式,来保证使用spirng boot actuator的安全。
安全措施 按需开放管理端点 加入spring security,使用actuator时需要鉴权 前提spring Boot系统已实现spring Boot Actuator,可使用其监控功能。本文不描述如何实现spring Boot Actuator,只讲解如何保证其安全性。
实现(精华) 1、 检查服务中是否有引入依赖spring-boot-starter-security,若未引入,则引入对应依赖。xml复制代码 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency>2、 新增security相关的环境变量,如图所示
图片
代码内容如下
yaml复制代码spring: security: user: name: admin password: 1234563、 确认服务中需要开放的actuator端点,根据actuator开放端点方式说明进行对应的配置。 actuator开放端点方式说明
示例1: 当需要开放的actuator端点数量较少,如info、health时,详情页设计可采用以下方式进行配置
图片
示例2: 当需要开放的actuator端点数量较多时,如除端点info、health外其他所有端点,可采用以下方式进行配置
图片
4、 确认服务中需要开启Security鉴权验证的actuator端点,维护在环境变量中。多个端点之间使用,隔开。示例:
yaml复制代码# 需要Security验证的actuator端点名,多个端点之间使用,隔开。 actuator: security: endpoints: info,prometheus5、 新建Security配置文件,代码如下
kotlin复制代码import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.actuate.autoconfigure.security.servlet.EndpointRequest; import org.springframework.context.annotation.Configuration; 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; /** * @author Q * @version 1.0 * @date 2022/3/24 16:27 */ @Configuration @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Value("${actuator.security.endpoints:#{null}}") private String endpoints; @Override protected void configure(HttpSecurity http) throws Exception { // 方式1:开放的actuator端点全部都验证 // http.requestMatcher(EndpointRequest.toAnyEndpoint()).authorizeRequests() // .anyRequest().authenticated().and().httpBasic(); // 方式2:仅验证名单中的actuator端点 http.requestMatcher(EndpointRequest.to(transformEndpoints(endpoints))).authorizeRequests() .anyRequest().authenticated().and().httpBasic(); } private String[] transformEndpoints(String endpoints) { // isEmpty判空方法 if (isEmpty(endpoints)) { return new String[0]; } return endpoints.split(","); } }验证(看看效果)
验证1: 当访问需要验证的端点时,会提示输入账号密码。正确输入上文种配置的密码即可访问。
图片
验证2: 当访问不验证的端点时,可直接访问。
图片
验证3: 当访问未开放的端点时,地址不可达。
图片
备注: actuator.security.endpoints和management.endpoints.web.exposure.include/exclude 这些值均可需要配置在application-XXX.yml中开放给运维配置,更加保证其安全性。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报。