微服务铺天盖地的来,引入Spring Boot actuator框架是为了服务作更好的监控与性能查看,Spring Boot actuator是一个为原生端点增加了更多的指标和度量信息,分为应用配置类,度量指标类。操作控制类,但是假如由于开发人员的疏忽把这些监控的请求地址都暴露出来了,攻击者会通过服务的配置信息对服务进行攻击,例如当我们访问/mappings这个返回这个服务控制器映射关系报告,可以查询到所有的服务接口信息包括参数信息,这样太可怕了 都看到了。

那么这么解决呢

1.修改原始的访问路径(在Spring Cloud Eureka环境中)

endpoints.info.path=/appInfo
endpoint.health.path=/checkHealth

eureka.instance.statusPageUrlPath=/${endpoints.info.path}
eureka.instance.healthCheckUrlPath=/${endpoint.health.path}
2.角色管理 

  上面的思路还是感觉不妥只是重定向了~

   思路是我把所有的actuator的访问地址赋予一个角色,这个角色在赋予人 这个人就拥有访问autuator的权限了。

可以使用Spring Cloud Security权限框架 和Shrio权限框架,当然可以写过滤器和拦截器都只是前两者更方便一些。

以Shrio配置为例

filterChainDefinitionMap.put("/notice/refresh", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/pause", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/env", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/env/reset", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/restart", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/autoconfig", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/metrics", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/metrics/**", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/info", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/dump", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/logfile", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/beans", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/health", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/configprops", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/env", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/env/**", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/trace", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/mappings", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/heapdump", "userAuth,roleAuth");
filterChainDefinitionMap.put("/notice/resume", "userAuth,roleAuth");

3.配置管理端口(推荐)

  配置管理端口该端口不对外暴露
  

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐