guolimin1118
作者guolimin1118·2019-12-06 17:55
产品总监·上海派拉软件有限公司

API网关与服务安全最佳实践

字数 2369阅读 5610评论 0赞 3

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

  1. 事中防御

  1. 事后调查

重要场景

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

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

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

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

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

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

3

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

X社区推广