Spring Boot actuator框架的一些安全考虑
2017-06-19 11:19
447 查看
微服务铺天盖地的来,引入Spring Boot actuator框架是为了服务作更好的监控与性能查看,Spring Boot actuator是一个为原生端点增加了更多的指标和度量信息,分为应用配置类,度量指标类。操作控制类,但是假如由于开发人员的疏忽把这些监控的请求地址都暴露出来了,攻击者会通过服务的配置信息对服务进行攻击,例如当我们访问/mappings这个返回这个服务控制器映射关系报告,可以查询到所有的服务接口信息包括参数信息,这样太可怕了 都看到了。
那么这么解决呢
1.修改原始的访问路径(在Spring Cloud Eureka环境中)
上面的思路还是感觉不妥只是重定向了~
思路是我把所有的actuator的访问地址赋予一个角色,这个角色在赋予人 这个人就拥有访问autuator的权限了。
可以使用Spring Cloud Security权限框架 和Shrio权限框架,当然可以写过滤器和拦截器都只是前两者更方便一些。
以Shrio配置为例
3.配置管理端口(推荐)
配置管理端口该端口不对外暴露
那么这么解决呢
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.配置管理端口(推荐)
配置管理端口该端口不对外暴露
相关文章推荐
- Spring Boot系列(十五) 安全框架Apache Shiro(一)基本功能
- 配置spring-boot-actuator时候遇到的一些小问题
- Spring Boot系列(十五) 安全框架Apache Shiro(二)缓存-EhCache
- Spring Boot之旅:Java安全框架Apache Shiro基本配置(一)
- springBoot框架的一些概念
- Spring Boot集成Jasypt安全框架
- spring boot配置shiro安全框架及用户登录权限验证实现
- springboot 是否是你下一个项目应当考虑的框架选型
- 详解配置spring-boot-actuator时候遇到的一些小问题
- Spring Boot系列(十五) 安全框架Apache Shiro(三)RememberMe
- Spring Boot集成Jasypt安全框架
- Spring_MVC+Hibernate的一些小记录(有错误或者不明白的可以大家相互讨论一下,本人刚刚涉足框架技术,谢谢!)
- Spring安全框架 Spring Security
- 使用 Spring Boot 快速构建 Spring 框架应用
- 使用 Spring Boot 快速构建 Spring 框架应用
- Spring Boot框架快速构建应用
- 一个Spring Boot, JWT,AugularJS接口安全验证的简单例子
- 互联网云生态下DDOS安全产品的一些考虑和测试方法(二)
- 互联网云生态下DDOS安全产品的一些考虑和测试方法(一)
- springboot框架下的上传下载