专栏首页工作专用1记一次混合云API暴露的反思
原创

记一次混合云API暴露的反思

近来在一次混合云架构中API接口暴露由于种种原因,遇到点波折,记录一下。

客户为金融企业对SLA要求及数据安全性很高,有限于考虑到业务的高可用性,采用混合云部署,业务流量入口为阿里金融云,前端可以添加安全设备WAF/CDN/高防IP等,之后Cname到统一入口SLB负载均衡上,后端采用虚拟服务器组,组内ECS部署在同Region的不同Zone,保障跨Zone的靠可用性,考虑到数据的安全性将数据持续化在IDC侧,阿里云与IDC通过云上部署深信服设备与IDC侧Cisco设备通过Ipsec ×××互联(考虑到稳定性目前已经实施专线互通),后端APP-Server与DB-Server部署在IDC,可参考下图:

1.1 客户需求:

客户之前由于同域名同端口下有不少业务,因此采用Nginx反向代理后端APP模式,HTTPS方式,将证书放在前端WEB-Server侧即可,或可以使用SLB的七层模式将证书放置在SLB上。但是此次部署的为一个后端的APP为HTTPS业务,是带有证书,需要将接口暴露到公网。

1.2 问题痛点:

经过测试客户在IDC侧APP-server部署的接口为HTTPS模式,Nginx采用http方式反代502证书不信任,无法反向代理成功,想到利用HTTPS方式反代,或者联系客户修改后端API接口为HTTP方式,但是金融云Web-Server也需要APP-Server的证书,客户反馈其他供应商部署短时间无法获取到,需要先忽略证书解决问题。

1.3 架构剖析:

此时修改IDC侧为HTTP方式无法进行,由于证书拿不到,金融云Web-Server侧利用HTTPS方式反向也无法进行,一度陷入僵局,继续沟通得知改接口正式环境已经在IDC侧部署完毕,但测试新功能需要暴露公网测试接口,那为何不再IDC侧有公网IP的服务器进行代理,或者防火墙DNAT进来,实现需求呢,客户反馈IDC侧IP规划已经没有,还需要协助从金融云暴漏测试接口。

1.4 解决方案:

既然Nginx反代不行,SLB后端也无法直接添加IDC侧的APP服务器,那就利用WEB-server利用iptables进行端口转发,配置DNAT和SNAT直接将流量抛过去,想到这里开始着手测试实施。

二、技术实现

具体的操作部署由于涉及到系统/网络/中间件/及阿里云产品相关操作,在此就不一样截图列举,简单列下实施步骤及注意要点。

2.1 架构图

2.2 网络互通

首选需要在金融云深信服与IDC侧思科防火墙方向对应端口及IP,实现网络互通,需要注意在阿里云需要配置到IDC侧的路由,web-server与app-server可以相关正常内网通讯。

2.3 域名及SLB

由于是测试域名前端暂时未添加WAF/高防IP等防护设备,将域名解析A记录解析至SLB公网地址,SLB配置虚拟服务器组,组内添加Web-Server,此时监听端口为Dnat端口。

2.4 IPTABLES转发

根据SLB配置的端口转发,配置响应规则,例如:

-A PREROUTING -d 10.69.xx.xx/32 -p tcp -m tcp --dport 8080 -j DNAT --to-destination 172.19.xx.xx:8080

-A POSTROUTING -d 172.19.xx.xx/32 -p tcp -m tcp --dport 8080 -j MASQUERADE

配置完成可以从公网利用postman测试接口。

三、反思

由于受限与种种业务原因,这边列举下具体的可实施方案,可供以后参考:

  • 如果可能可直接在IDC侧有公网服务器进行反代暴露接口
  • 在IDC侧Cisco 设备Dnat映射业务端口进行暴露接口
  • 在阿里金融云如果有证书可以采用HTTPS反代暴露接口
  • 更改后端APP-server为HTTP方式,可以在阿里云侧采用HTTP方式反代暴露接口
  • 在WEB-server采用iptables 转发进行HTTPS方式暴露接口。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么采用HTTPS是如此重要

    随着越来越多的数据泄露事件被披露,网络安全和隐私问题成为信息安全的雷区。从而迫使越来越多人放弃标准的HTTPS协议,使用更安全的HTTPS安全加密协议。

    迅达集团
  • k8s实践6:从解决报错开始入门RBAC

    字面上理解,用户kubernetes在api Group里没有权限,无法获取资源pod列表.

    迅达集团
  • Delphi中使用python脚本读取Excel数据

    前段时间,在正式项目中使用Python来读取Excel表格的数据。具体需求是,项目数据库中有些数据需要根据Excel表格里面的数据进行一些调整,功能应该比较简单...

    迅达集团
  • CVE-2018-2628 Weblogic反序列化POC重构详解

    xfkxfk
  • 报表王者终入移动市场,迟来的哒咔办公能否力挽狂澜?

    久其软件,中国统计报表领域当中的绝对王者。国内500强的企业当中超过半数都在使用久其的报表系统,在这一领域久其堪称行业翘楚。然而,在移动办公风暴愈演愈烈的当下,...

    人称T客
  • JavaSE(八)之Collection总结

      前面几篇把集合中的知识大概都详细的说了一遍,但是我觉得还是要总结一下,这样的话,可以更好的理解集合。 一、Collection接口 首先我们要一张图来说明:...

    用户1195962
  • Java中list<Object[]>、list<Student>、list<Map<String,String>>排序

    1:list<Object[]>的排序 public static void main(String[] args) { // TODO Auto-gene...

    cMusketeer
  • JVM知识学习与巩固

    JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模...

    用户3003813
  • Flutter跨平台移动端开发丨WillPopScope、InheritedWidget、Theme

    通过 InheritedWidget 数据可以在 Widget 树中从上向下共享与传递,组件之间也可实现跨级传递数据

    码脑
  • 使用Identity Server 4建立Authorization Server (5)

    之前的配置都是在内存中, 下面将如何把这些数据存储到Sql Server数据库, 这样更适合生产环境. 这部分基本完全参考官方文档: https://ident...

    solenovex

扫码关注云+社区

领取腾讯云代金券