今天我们来聊聊如何借助API网关构建高可用、高安全性的云API,充分利用API网关给我们带来的便利。
认证
从API定义上我们可以定义多种认证类型的API,除特殊API外建议定义APP认证方式或其有安全认证类型的API,这样一旦发生攻击或者大量非法调用时我们可以知道谁在调用,便于我们通过黑名单等措施及时进行限制
HTTPS
建议对数据传输安全性要求较高的API仅开放HTTPS调用方式,另外在证书选择上,强烈建议大家选购Verisign的安全证书,因为Verisign在老版本的Linux等操作系统中兼容性更好,其他的证书以及免费证书在老版本的系统中根证书授权只有十年或更短的时间,而Verisign授权时间为三十年,而这些系统很多都是十年以前的,到今天根证书授权早已过期,并且这类老版本的操作系统现在还在被大范围的应用于企业级服务器,比如Red Hat 4.1.2-50。如果API服务端使用这类证书,API调用客户端就需要手动升级客户端的openssl等证书管理软件的版本,或者选择在程序中忽略证书可靠性,这两种都不是好的或者安全的选择,通过浏览器访问的入口则不必关心此问题,主流浏览器都有自己的证书管理机制,一般都可以正确识别最新的证书供应商。因此建议大家选购证书前要做好前期证书比较与调研,避免走弯路。
流量清洗
从网络上API网关为我们提供了流量清洗功能,对常见的网络攻击进行过滤,对后端业务服务集群进行保护,目前这些都是免费开放的,并且在录入API后不需要特殊设置,默认就开启了防御功能!赞赞赞!
流量控制
API发布后建议根据后端服务的实际能力对API进行多维度的流控配置,这样即可以有效的避免后端服务被打爆,并且还可以避免某个普通用户占用过多API资源,当然对特殊高并发用户也可以进行特殊流控设置,流控设置攻略详见:https://yq.aliyun.com/articles/63132?spm=5176.100244.teamconlist.12.R3PpZp
后端签名
API网关与后端业务服务通信也是需要重点进行安全防护的链路,除了HTTP协议建议使用HTTPS外,还强烈建议大家开启后端服务调用签名功能,避免其他人通过非API网关入口调用到后端服务,做到全链路可信调用。并且一旦密钥泄露API网关还支持密钥的热替换,此过程已发布API可以不间断提供服务,开启地址:https://apigateway.console.aliyun.com/#/cn-qingdao/keys/list;帮助中心地址:https://help.aliyun.com/document_detail/29485.html?spm=5176.doc29498.2.1.OlkTQ4
高可用性
最后,对API高可用方面要求比较高的场景建议大家进行多Region部署,API网关本身对多Region有着良好的支持,目前主流的Region都有输出,并且还在以非常快的速度开放更多Region。多Region部署中前后端服务强烈建议部署在通一个Region中,并配置API网关到后端服务走内网调用,这样才可以实现真正意义的多Region提供服务、跨地域容灾,避免从客户端到后端服务的任何一个环节出现问题后对客户端造成恶劣影响,当然客户端也需要针对提供了多Region容灾服务的API进行感知并支持自动或快速手动切换,这样当某个Region的API出现问题后客户端可以继续服务,将故障影响降到最低。