网关
网关运行分析报告
网关运行分析报告 - 2025-02-15
网关运行分析报告 - 2025-02-22
网关运行分析报告 - 2025-02-28
1.shenyu网关内外网使用
2.shenyu网关的具体使用
记一次网关线上问题之icsp访问ERP
再次思考多套ak/sk同时访问同一资源路径问题
网关接入说明
网关接入说明补充
网关分配各系统命名
网关BUG及二开
网关管理端访问地址
修改requestBody与responseBody
shenyu工程理解
获取requestBody异步问题
shenyu工程部署
排查sign插件报错500问题
shenyu数据结构设计
shenyu网关请求过程
shenyu自定义插件
记一次网关线上问题----网关无法对外提供服务
网关插件更新报错问题
网关中grayTag的使用
Exceeded limit on max bytes to buffer : 262144
网关中Divide插件中Selector中Handler中配置丢失问题
网关请求下游系统时长记录
通用测试:获取网关的sign值
网关分发主数据设想方案
铁骑主数据分发机制完善
27.GTMS&ITMS与gateway的关系
28.ZPI与gateway的关系
26.网关验签场景
29.PC端空值,服务端正常请求
30.网关requestMaxSize值
31.跨系统跨语言日志链路追踪
32.网关异步分发讨论
33.网关LoggingConsole丢失日志排查
34.网关升级shenyu-admin
35.网关异步分发插件 - 接入文档
本文档使用「觅思文档专业版」发布
-
+
首页
2.shenyu网关的具体使用
现在有个需求:icsp系统需要访问message系统、ccs系统、erp系统等。如果不配置网关,则icsp系统需要三个被访问系统的域名(及各个系统的认证逻辑)。如果采用了网关,则只需要网关一个域名(及网关的认证逻辑)。如下整理下选用网关后的配置流程: ## 1.访问资源配置 即为icsp系统分配ak与sk,限制icsp系统可以访问的路径 | 被访问系统 | 被访问路径 | | --- | --- | | ccs | /myx/integratecenter/icspQueryApi/\**\**,/myx/integratecenter/icspUpdateApi/\**\**| | message | /message/facade/\**\** | | erp | /RESTAdapter/\**\** |  如上图可知,为icsp系统分配了ak(5C534041B6CE4354B3A4E76F7A94BC12)与sk(6EE8AFA7C033431A8B8B91972B482C70),可访问资源路径如上表格。即这对ak与sk可以访问如上表格中的路径。 ## 2.认证配置 认证的方式有很多种,我们这里选用Authentication类型中的Sign插件。 ### 2.1 配置方式1  这种配置方式,认证插件(Sign)中的选择器(selector)配置的是访问系统,即一对ak与sk对应一个认证selector。 我们将资源路径分系统,演变下配置,加上系统标识符  即icsp访问ccs系统时,header中传输DSystem=CCS;访问message系统时,header中传输DSystem=MESSAGE;访问erp系统时,header中传输DSystem=ERP。在对应的规则中过滤具体的路径,如下图    选择器与规则配置汇总图  总结: 1.这种方式很直观的看得到icsp系统访问的目标系统及访问目标系统的哪些资源 2.如果icsp访问的系统增加了,则需要在icsp的selector中增加一个DSystem=目标系统的标识符,同时在rule中添加资源路径 3.如果icsp访问已有目标系统的资源更新了(减少或增加)了,只需要在rule中更新路径就行。 ### 2.2 配置方式2  这种配置方式,认证插件(Sign)中的选择器(selector)配置的是被访问系统(目标系统),即一对ak与sk对应Sign插件下多个selector。我们查看下erp这个选择器的配置  查看下erp这个选择器对应的规则配置  总结: 1.这种方式无法知道icsp系统访问的目标系统有哪些,只能从访问资源配置那里得到可以访问的资源有哪些,本身网关过滤的就是资源路径,只是我们人为的对资源路径进行了分类(按照系统分类) 2.如果icsp访问的系统增加了,则需要在Sign插件中新增个选择器及规则 3.如果icsp访问已有目标系统的资源更新了(减少或增加)了,只需要在rule中更新路径就行。 ## 3.路由转发配置 我们列举Divide插件与springCloud插件举例 ## 3.1 Divide插件场景 用于目标系统是非自研系统的场景,如ccs、srm、erp等。如下图  由上图可知,divide插件中的选择器只能配置被访问系统,这与步骤2.1的方式不同,与步骤2.2的方式相同,同样都是选择器,2.1中的选择是访问系统,2.2中是目标系统,这里只能是目标系统。我们查看下选择器配置  即通过了认证选择器之后,到达这里的服务转发选择器,会根据路径进行匹配,匹配到后转发到目标系统,选择器后的规则只是对过滤的细分。 这里我们优化下配置,加上被访问系统标识符,如下图  在规则中列举出实际的资源路径,如下图  总结: 1.选择器配置的是被访问系统,没有标注访问系统,所以这里的资源路径是所有访问系统的资源之和,举例子 | 访问系统 | 被访问系统 | 访问资源路径 | | --- | --- | --- | | icsp | ccs | /myx/integratecenter/icspQueryApi/\*\* | | icsp | ccs | /myx/integratecenter/icspUpdateApi/\*\* | | srm | ccs | /myx/integratecenter/icspUpdateApi/\*\* | | srm | ccs | /myx/integratecenter/icspCreateApi/\*\* | 由上表可知,icsp与srm都需要访问ccs系统的资源路径/myx/integratecenter/icspUpdateApi/\*\*,那么divide这里的规则中只需要配置3个资源路径就行。 问题:这种方式会不会造成资源路径不安全呢? 比如icsp访问到了/myx/integratecenter/icspCreateApi/\*\*。 解答:不会造成安全问题,因为icsp对应的访问资源路径中没有/myx/integratecenter/icspCreateApi/\*\*,所以在认证那一步就不会通过,也就不会到Divide插件这里。 ## 3.2 springCloud插件场景 用于目标系统是自研系统的场景,如message、ucenter等系统。如下图  我们发现自研系统没得DSystem=CCS这种标识符,这是因为自研系统的资源路径支持feign的方式访问。 ## 4.总结 1.认证配置我们应该选用哪种呢? 其实2.1与2.2方式都可以满足需求,目前团队倾向于方式2.1,理由如下 1>ak与sk是分配给访问系统的,控制的是访问系统可以访问那些资源 2>Sign插件的本意也是控制哪些资源可以被访问,即一套ak/sk对应一个选择器,我们通过查看选择器也能知道这套ak/sk可以访问哪些系统 <font color=red>重要提示:方式2.1有问题,详见下一篇文章《记一次网关线上问题之icsp访问ERP》</font> 2.divide插件选择器资源安全问题 由于这里的资源路径是所有访问系统的资源集合,所以一旦某个访问者略过认证了,则这里的资源全部暴露给这个访问者了,因此需要认证插件绝对安全。 由于divide插件的选择器与sign插件的选择器是通过DSystem关联起来的,假设访问系统想要略过Sign插件,则它会选择不传DSystem插件(或者随便传一个值),则认证这一步不会通过,divide插件的资源还是安全的。
李贤利
2025年1月6日 11:39
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
Word文件
PDF文档
PDF文档(打印)
分享
链接
类型
密码
更新密码
有效期