如何做好 ​API 网关的服务安全设计?

Posted twt企业IT社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何做好 ​API 网关的服务安全设计?相关的知识,希望对你有一定的参考价值。

【摘要】 我们在上篇 中详细介绍了API网关的功能、分类以及趋势发展,本文主要阐述API网关的设计特点、重要场景。
【作者】郭利民, 派拉软件API网关产品经理,多年API网关和微服务设计和开发经验,主要专注于企业级应用集成和数据集成,熟悉nginx/Openresty/kong等软件。


API网关设计特点

一个优秀的网关设计应该具备以下特性:

  • 架构先进性,基于新一代微服务架构,可以无缝支持Service Mesh。

  • 简单易用,基于Docker化部署,以及K8S的编排,操作简单,易扩展。

  • 智能告警,集成日志分析平台,可自定义查询界面,可以界面化进行用户行为分析,并可以自动智能告警。

  • 自带WAF功能,可以实现态势感知、主动防御、调查和响应一体化的安全策略。

  • 性能卓越,由于是基于LUA开发,性能单台服务器可以实现10w并发。

  • 云原生,支持多租户、实现自动物理隔离。

  • 自带安全认证中心,可以实现API Key、Basic Auth、OAuth2、JWT的安全认证。

  • 自带日志分析监控平台,基于大数据实现的日志分析平台,主要开源组件包含Flume、Elasticsearch、Grafana。

  • 通过流量复制和流量回放,实现在线仿真生产环境业务测试。


API网关的安全防护设计

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、事前预警

如何做好 ​API 网关的服务安全设计?

2、事中防御

如何做好 ​API 网关的服务安全设计?

3、事后调查

如何做好 ​API 网关的服务安全设计?


API网关的重要场景

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

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

如何做好 ​API 网关的服务安全设计?

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

如何做好 ​API 网关的服务安全设计?

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

如何做好 ​API 网关的服务安全设计?

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

原题:《API网关与服务安全最佳实践》,首发于「派拉Paraview」
如有任何问题,可点击文末阅读原文,到社区原文下评论交流

觉得本文有用,请转发或点击“在看”,让更多同行看到


 资料/文章推荐:



http://www.talkwithtrend.com/Topic/9607


下载 twt 社区客户端 APP

与更多同行在一起

高手随时解答你的疑难问题

轻松订阅各领域技术主题

浏览下载最新文章资料

如何做好 ​API 网关的服务安全设计?

或到应用商店搜索“twt”


长按二维码关注公众号

以上是关于如何做好 ​API 网关的服务安全设计?的主要内容,如果未能解决你的问题,请参考以下文章

如何构建一个可用的企业级API网关?

如何通过zuul或任何api网关调用安全的微服务端点

一个超简洁API网关的设计思路

API网关是如何演化出来的?

如何在微服务架构中实现基于角色的安全性

如何设计实现一个轻量的开放API网关