技术干货 | API网关与服务安全最佳实践

Posted 信息安全洞察

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术干货 | API网关与服务安全最佳实践相关的知识,希望对你有一定的参考价值。

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,通过API网关实现用户认证、安全、WAF、流量控制等功能。


根据客户的需求整理了一些插件主要包含如下:


✔ OAuth2认证,通过外部认证中心(开源Kong中没有实现)

✔ MD5验签

✔ Kafka日志插件

✔ 针对API全局流控插件

✔ 接口缓存插件

✔ 灰度发布插件

✔ WAF插件(IP拦截、SQL注入等)

✔ RBAC插件

✔ Dubbo&gRPC转换插件

✔ 流量复制和流量回放


安全防护设计


组件中认证和安全防护是API网关最重要的一个产品功能,API网关是所有流量入口的一道重要防线,为企业内的业务系统服务保驾护航。


下面主要从两个方面来阐述下,如何实现用户认证和API鉴权以及安全防护:


(一)Oauth2安全认证是互联网非常成熟的认证,结合API网关可以实现统一的身份认证和授权的统一管理。


技术干货 | 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. 事前预警

技术干货 | API网关与服务安全最佳实践


2. 事中防御

技术干货 | API网关与服务安全最佳实践


3. 事后调查

技术干货 | API网关与服务安全最佳实践


重要场景


1. 打通企业云上云下本地应用,重塑业务架构。


技术干货 | API网关与服务安全最佳实践


2. 对外开放企业能力,建设企业API生态圈,实现API能力变现,整合内外服务能力,快速响应业务变化。


技术干货 | API网关与服务安全最佳实践


3. 保证API应用安全,实现态势感知、主动防御。


技术干货 | API网关与服务安全最佳实践


4. 实现数据共享和传递,数据价值变现。



企业的架构总是在不断的进行演进,从集中式SOA架构、分布式微服务架构、到云原生的服务网格,业务是企业架构演进的动力,无论架构如何变化,API网关做为微服务的流量统一入口,为调用提供安全、高效、可视化的监控保障。相信越来越多的企业在践行CI/CD的过程中会越来越重视API网关,通过API网关打通云上、云上、企业内部、第三方,实现企业内部服务赋能,敏捷响应企业的业务变化。



往期 精彩回顾






以上是关于技术干货 | API网关与服务安全最佳实践的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点#SpringCloud技术专题「Gateway网关系列」微服务网关服务的Gateway全流程开发实践指南(2.2.X)

.NET Core开发实战 微服务架构最佳实践

API网关实践-网易云轻舟微服务

7 个 Python API 最佳实践

技术干货 | 漫谈API网关——API网关探索与实践

接受付款最佳实践