欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

SOFAGW 网关:安全可信的跨域 RPC/消息互通解决方案

最编程 2024-04-18 12:00:19
...
本文将介绍 SOFAGW 互通网关,首先切入在跨站点通信时碰到的核心痛点,引入 SOFAGW 互通网关的解决方案,会重点说明如何解决在安全、互通、接入成本、高效等几方面问题,介绍 SOFAGW 网关的内部实现架构,展示  SOFAGW 网关达成的业务成果。

业务痛点

随着业务发展越来越多元化,部分业务域相对比较独立,或因其业务属性,会建立成独立的站点(租户),比如:国际业务和蚂蚁保等。这些站点之间网络是隔离的,但实际业务上会存在一些通信的需求,所以我们碰到的核心问题是:网络互相隔离的多个站点之间怎么做高效可信的通信?对此我们有两种针对站点间互通的解决思路:

思路1:为每个业务创建跨域 VIP

为每个业务创建跨域 VIP,站点的业务通过 VIP 来做通信。这种方式,运维管理员要在两个网络间开很多 VIP,加访问白名单,最终网络拓扑会变成如下;将面临网络口子多、运维成本高、业务接入成本高、安全阈值低等问题。

这个方案有以下几个问题:
  1. 很多服务需要开 VIP 口子,服务多了之后,VIP 难以维护;
  2. VIP 的 ACL 控制很弱,只能基于 IP 端口或 IP 段控制,不能按业务应用或服务来做控制;
  3. 安全管控能力很弱,对请求不可审计;
  4. 业务适配改造工作量大,技术栈不统一,存在多种 RPC 框架。

思路2:实现一个高效可信的互通网关,来承接站点之间的通信代理

这就是我们采用的多站点互相通信的解决方案,下面详细介绍我们的互通方案和重点解决的问题。


解决方案:SOFAGW 互通网关


鉴于上面提到的问题,我们研发了 SOFAGW 互通网关,致力于实现一个简单高效、安全可信的跨域 RPC/消息 互通网关。

如上面的整体架构图所示,我们的解决方案是各站点部署一套 SOFAGW 网关,把站点间的通信都收敛到 SOFAGW 上,由 SOFAGW 来保证安全通信,而在研发体验上,业务方同学按照本地服务做开发,不用为跨域通信做特殊处理,做到无缝接入。
RPC 互通过程:
  1. 在 SOFAGW 网关上,申请接入需要互通的 RPC 服务。接入后,消费方 SOFAGW 网关会把这个 RPC 服务发布到本站点注册中心上,服务方 SOFAGW 网关会从注册中心订阅这个 RPC 服务提供方地址。
  2. 消费方应用通过注册中心订阅到目标服务是本站点的 SOFAGW,把请求发送到本站点的 SOFAGW。
  3. 本站点的 SOFAGW 根据 API 配置信息,把请求转发到对端站点的 SOFAGW。
  4. 对端站点的 SOFAGW 根据注册中心订阅到的地址,把请求发送给真实的服务提供方。
  5. 完成跨展达 RPC 通信。

消息互通过程
消息的互通和 RPC 互通非常类似,差别主要在于需要通过消息中心来收发消息。
  1. 在 SOFAGW 网关上,申请需要接入互通的消息服务。
  2. 客户端把消息投递到本站点的消息中心,消息中心把消息封装成 RPC 请求发送到本站点 SOFAGW。
  3. 本站点的 SOFAGW 根据 API 配置信息,把请求转发到对端站点的 SOFAGW。
  4. 对端站点的 SOFAGW 把请求发送到消息中心,消息中心再把消息投递到真实的消费方。
  5. 完成跨站点消息投递
SOFAGW  互通网关 重点解决以下几个痛点:

1、安全通信

首先我们要解决网络不可达问题。从图里可以看到:每个站点都部署了 SOFAGW 网关,网关之间可以用专线或 VIP 之类的产品打通,这样站点间把流量就收敛到了 SOFAGW 网关,避免到处开网络通道口子,便于安全管理。

网络安全

为了保证 SOFAGW 网关之间的通信安全可信,我们开启了 mTLS 双向认证,既能对数据做加密,也能确认对方的身份可信,从而确保通信安全。
数据安全
一个站点(租户)会给其他多个站点提供服务,这些暴露的服务首先要确保租户级别的水平权限隔离,也就是说,A 站点暴露给 B 站点的服务,不能被 C 站点的应用调用到。 如何做到这点?
  1. SOFAGW 网关会给不同站点提供不同的访问域名(这些域名都会解析到 SOFAGW 的 VIP 上)。
  2. SOFAGW 之间通过 mTLS 双向认证通过后,可以确认请求的域名( host )可信,也就是 C 站点的应用无法用B 站点的域名与 A 站点的 SOFAGW 网关建立 TLS 连接。
  3. SOFAGW 会通过请求头里的 host + path 路由做路由转发,C 站点的请求无法匹配上提供给 B 站点的域名,也就无法访问到提供给 B 站点的服务。

上一篇: 域名申请和备案步骤说明(阿里云)

下一篇: 光环博客增加了 CDN 加速功能