主要功能

服务网关实例

服务网关实例支持私有或共享两种类型。私有表示仅实例创建者所在项目内的用户可见可用;共享则表示系统内所有用户可见可用,即任何项目的用户都可以查看共享实例,并向其注册服务。此外,服务网关也支持服务发布(即注册)审批功能。开启审批后,发布到该服务网关的服务均需系统管理员或项目管理员进行审批。系统管理员或项目管理员审批通过后,注册成功。

实例IP

在一个网关中可以创建多个网关实例。,通过对服务网关配置实例IP功能,可以实现多个网关实例的负载分担功能。

在创建网关时,可以配置多个网关IP地址,一个IP地址对应一个网关实例。配置网关的实例IP地址,则是这个网关的虚拟的IP地址(VIP)。在多个网关实例pod运行中,会从这些pod中选出一个领导者pod。该pod继承VIP地址,并绑定对应的VIP到配置中声明的选定接口上。该VIP地址为网关的对外服务地址,并在内部多个网关实例中实现流量的负载分担。

服务发布

服务发布者将自身的服务能力封装成接口,发布到服务网关,发布后即可通过该接口访问后端服务。

接口组

为了更好的将若干个共同对外提供服务的接口抽象为一个整体,实现众多接口间的逻辑隔离,并对其进行统一管理,提出了接口组的概念。一个接口组中可以包含多个接口,服务发布者在创建接口时需为接口选择所属的接口组。在接口组中,服务发布者可实现对接口的生命周期管理,如增删查、上下线等操作。

接口套餐

管理者可根据业务需要,通过打标签的方式,将当前发布到网关实例的API接口进行分类,以制作不同的套餐,订阅者可根据定制的套餐订阅一系列接口。

当前支持Oauth2AK/SKJWT认证的接口。

 

接口

APIApplication Programming Interface,应用程序编程接口)是服务网关的核心,主要包括基本信息、前后端的请求路径和参数以及请求相关协议。API提供者把API接口配置在API网关中,开放后端能力,供服务消费者访问。

接口版本管理

用于实现接口的版本管理和灰度发布功能:

超时重试

一种最常见的容错模式。在服务调用过程中,主要解决当服务出现建立网络连接或响应延迟时,不用无限等待的问题,网关可以根据事先设计的超时时间中断调用,及时释放关键资源。

代理缓存

针对很短时间内同一用户的频繁调用,可以不执行后端业务,直接从网关返回缓存信息,减少后端服务的访问压力。适用于短时间内有大量重复请求的场景。

流量控制

可以按照秒、分钟、小时、天等单位对请求接口的频率进行限制。

安全控制

1.      访问策略

服务发布者为接口配置IP过滤,允许或拒绝某IP地址/IP地址段的访问该接口。

2.      认证策略

服务发布者为接口配置认证策略,配置后,请求该接口时需要通过认证后才能访问后端服务。

服务发布者为接口配置类型为基础认证的用户名密码认证方式。此种方式的安全系数较低。

密钥认证将以key=value的形式出现在代码的Headers中。服务网关需要使用key-auth认证插件来支持这种场景。服务发布者需要在服务注册阶段,向网关提供一段自定义的KEY,用作后续接口的权限校验,并随着注册接口的响应返回服务。后续所有请求该服务的流量都需要在header或者query_string中带有此段API-KEY,才能通过网关认证。由于Key是固定不变的,因此安全系数较低,适用于机器之间的认证。

又称“HMAC认证”,需配合服务订阅使用。服务发布者选择AK/SK认证策略发布接口后,由服务消费者生成AccessKeyAK)和SecretKeySK)。服务消费者访问接口时需要通过签名的方式完成认证请求,可以防止请求内容被篡改。这种方式可以避免传输SecretKey,并且在大多数情况下签名只允许使用一次,避免了重放攻击。安全系数中等,适用于人机认证。但每次请求都需要进行签名,相对比较麻烦。

token二次认证,需配合服务订阅使用。服务发布者选择JWT认证策略发布接口后,由服务消费者生成AccessKeyAK)和SecretKeySK),根据AKSK获取一个临时的tokenJWT),之后即可使用此临时token作为调用其他业务接口的凭证。临时token有有效期限制,可以在一定程度上降低token泄露引起的安全风险。在有效期内,服务消费者应该将临时token缓存起来,以便重复使用。当token过期时,应该重新获取新的临时token。安全系数相对较高。

Oauth2认证,需配合服务订阅使用。服务发布者选择oauth2认证策略发布接口后,由服务消费者生成AccessKeyclient_id)和SecretKeyclinet_secret)。根据client_idclinet_secret以及oauth2认证策略中设定的安全密钥,访问范围等对oauth2认证策略中的访问code/token地址发起访问,获取一个access_token,之后即可使用此access_token作为调用其他业务接口的凭证。access_token有有效期限制,当token过期时,可以采用refresh_token重新获取新的access_token。安全系数相对较高。

应用集成

通过应用集成功能,可对多个服务进行编排,创建自定义的应用,并做为一个接口发布。该功能适用于可复用应用套件的定制与发布。

后端服务

指在后台运行的实际的后端服务。这些服务可能是通过企业应用部署的应用,也可以是客户原有的业务系统组件。通过后端服务,将所有需要使用的业务接口添加、导入并管理起来。同时,用户还可以对后端服务开启健康检查,检查后端服务的进程状态。

接口开发

系统提供API编排设计器,用户可以通过图形化界面对API接口进行编排设计和配置,方便整体应用流程的开发和发布。

接口告警

服务网关支持接口告警。通过创建告警规则,您可自定义告警指标与通知策略,及时了解API网关服务运行状态。

服务订阅

凭证管理

服务消费者对AK/SK进行封装,只需要指定凭证名称,系统即会自动生成一对AK/SK,用于在访问接口时完成认证。

IP黑白名单

在凭证中可以配置IP黑白名单,将不允许访问的IP地址放入黑名单,将可以访问的IP地址放入白名单。这样可以限制非法IP地址的访问,增加接口访问的安全性。

订阅接口

服务消费者通过订阅功能,可以获得对本项目私有网关实例,和系统共享网关实例中已发布接口的使用权限。仅支持订阅绑定了AK/SKJWTOauth2认证策略的接口服务。订阅后需系统管理员或项目管理员审批,审批通过,服务消费者即可使用该接口服务。

图-1 服务发布与订阅

 

订阅套餐

服务消费者可根据管理者定制的套餐筛选、订阅一系列接口。订阅成功后,可使用这些接口的服务。