API网关是Infini API平台系列核心产品之一,我们在上篇《API网关探索和实践中》中详细介绍了API网关的功能、分类以及趋势发展,本文主要从API网关设计特点、主要功能、重要场景、高可用几个方面进行阐述。
API网关设计特点
Infini API智能安全网关主要是基于Kong自研的分布式网关,由于Kong是基于OpenResty的升级改造,具备高性能、易扩展、稳定可靠、产品概念良好的特性。
那么Infini API智能安全网关主要具有哪些特色呢?
● 架构先进性,主要是基于新一代微服务架构,可以无缝支持Service Mesh。
● 简单易用,基于Docker化部署,以及K8S的编排,操作简单,易扩展。
● 智能告警,集成日志分析平台,可自定义查询界面,可以界面化进行用户行为分析,并可以自动智能告警。
● 自带WAF功能,可以实现态势感知、主动防御、调查和响应一体化的安全策略。
● 性能卓越,由于是基于LUA开发,性能单台服务器可以实现10w并发。
● 云原生,支持多租户、实现自动物理隔离。
● 自带安全认证中心,可以实现API Key、Basic Auth、OAuth2、JWT的安全认证。
● 自带日志分析监控平台,基于大数据实现的日志分析平台,主要开源组件包含Flume、Elasticsearch、Grafana。
● 通过流量复制和流量回放,实现在线仿真生产环境业务测试。
功能介绍
Infini API软件主要包含:API网关、API管理平台、API门户三大模块,整体逻辑功能如下图:
安全、认证、流控、格式转换、协议转换、微服务、监控和分析。
API网关 是最核心的模块之一,他是整个产品的主要骨架,主要包含了路由转发、安全、认证、格式转换、WAF、微服务网关功能。
API管理平台 主要是API治理层面,实现了API设计、API开发、API测试、API部署、API销毁的全生命周期管理。还包含了API网关管理配置、日志监控、日志分析、BI报表等管理的功能。
API门户 主要包括了服务目录、API申请、计费管理、文档管理、授权管理等功能。
软件产品设计中,可插拔机制是一个非常重要的特性,我们实现的API网关就是基于这种机制进行的实现,所有功能插件都是只有配置的时候立即生效。
API网关目前的公共组件功能分为6大块,他们是安全、认证、流控、格式转换、协议转换、微服务、监控和分析。
API网关中有一个比较核心的功能是安全,这个安全主要是外部用户调用网管内的API,通过API网关实现用户认证、安全、WAF、流量控制等功能。
根据客户的需求整理了一些插件主要包含如下:
OAuth2认证,通过外部认证中心(开源Kong中没有实现)
MD5验签
Kafka日志插件
针对API全局流控插件
接口缓存插件
灰度发布插件
WAF插件(IP拦截、SQL注入等)
RBAC插件
Dubbo&gRPC转换插件
流量复制和流量回放
安全防护设计
组件中认证和安全防护是API网关最重要的一个产品功能,API网关是所有流量入口的一道重要防线,为企业内的业务系统服务保驾护航。
下面主要从两个方面来阐述下,如何实现用户认证和API鉴权以及安全防护:
(一)Oauth2安全认证是互联网非常成熟的认证,结合API网关可以实现统一的身份认证和授权的统一管理。
主要的步骤说明如下:
第一步:获取Token
1. 消费者填写用户名和密码,在界面进行登录,消费者携带用户名和密码以及client_id以及client_secret发送给Kong网关;
2. Kong网关负责将请求代理转发给后端应用;
3. 后端应用将用户名和密码发送给统一身份认证中心进行认证,认证成功后返回True;
4. 认证成功后通过client_id、client_secret、provision_key发送给Kong获取Token;
5. Kong根据请求的header头参数,进行参数验证;
6. 验证通过,将Token返回给后端应用;
7. 后端应用将Token返回Kong;
8. Kong将Token返回给消费者。
第二步:验证Token,并请求后端资源服务
1. 消费者携带Token,请求需要访问的资源服务;
2. Kong将请求的Token进行验证;
3. 验证通过,代理转发到后端服务,如果后端服务是多实例的,可以负载分发到后端实例;
4. 后端实例根据请求的参数,返回后端服务资源;;
5. 后端服务资源内容有Kong转发给消费者。
第三步:获取刷新Token
1. 消费者将client_id和client_secret发送给Kong进行获取refresh_token;
2. Kong根据请求参数进行验证,验证通过将refresh_token返回给消费端。
关注点:
1. 认证中心需要调用API网关Token 服务才能获取Token,因为API网关需要记录Token值,才能在二次调用的时候进行验证。
2. API鉴权中心和API网关进行分离,实现产品设计中的松耦合特性。
(二)通过WAF组件、日志分析模块、告警模块、日志监控模块可以实现事前预警、事中防御、事后调查和分析。
1. 事前预警
2. 事中防御
3. 事后调查
重要场景
1. 打通企业云上云下本地应用,重塑业务架构。
2. 对外开放企业能力,建设企业API生态圈,实现API能力变现,整合内外服务能力,快速响应业务变化。
3. 保证API应用安全,实现态势感知、主动防御。
3. 保证API应用安全,实现态势感知、主动防御。
企业的架构总是在不断的进行演进,从集中式SOA架构、分布式微服务架构、到云原生的服务网格,业务是企业架构演进的动力,无论架构如何变化,API网关做为微服务的流量统一入口,为调用提供安全、高效、可视化的监控保障。相信越来越多的企业在践行CI/CD的过程中会越来越重视API网关,通过API网关打通云上、云上、企业内部、第三方,实现企业内部服务赋能,敏捷响应企业的业务变化。