SpringCloud代码审计思路分析
正好将SpringCloud给学了,总结下做审计大概的思路
微服务
什么是微服务?
是一种架构风格,将单个应用作为一系列的小型服务的套件,其中每个服务都运行着自己的进程,并且通过轻量级的机制实现彼此间的通信
这些服务是围绕着业务功能构建的,可以完全自动化部署机制进行独立部署
微服务重要模块
服务注册中心
注册中心的作用一句话概括就是存放和调度服务,实现服务和注册中心,服务和服务之间的相互通信。注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。
为什么需要服务注册与发现
在一个微服务应用中,服务实例在运行时的配置也会动态变化,包括他们的网络地址。为了满足客户端向服务发送请求的需要,必须要实现服务发现机制。服务发现的关键部分是服务注册表。服务注册表是一个可用的服务实例的数据库。服务注册表提供了一个管理API和一个查询API。服务实例的注册和注销通过管理API实现,查询API用来寻找可用的服务实例
服务网关
这也是我们审计的重点
在客户端和服务端之间增加一个API网关,所有的外部请求先通过这个微服务网关,它只需跟网关进行交互,而由网关进行各个微服务的调用
服务多了后用户不可能每个请求请求到不同地址上去,服务太多了,我们需要一个统一网关来提供用户,这样用户就可以把所有请求,由网关进行分发,网关可以进行下一步分发,例如统一转换,权限校验,过滤器设置
单体项目与微服务的区别
我们简单分析下
单体项目:
微服务:
可以很明显看出微服务将每个功能点或者是业务合并在一个子模块中
并且有独立的pom文件
有独立的配置文件,并且每个服务模块的端口是不一样的
审计思路
分析大体目录
pom.xml
首先每个服务都有自己的pom文件,这肯定是首先进行审计的整个项目的pom
再去分析子模块下的pom文件
或者是单独看idea的外部库
网关模块
网关模块是我们的重点分析
可以看到这里有filter模块继承了ZuulFilter模块,我们可以分析开发者有没有进行合理的鉴权
还有下的feign这个是用来我们做服务间的调用,这里调用了User模块验证身份
网关路由转发
当我们访问一些模块需要加上前缀否则是访问不到
其他与Springboot的区别并不大,我们用户主要是通过网关的端口进行访问的,一般其他端口是不对外的