API网关在API安全性中的作用,API安全网关是哪个部门发起需求

Tina 314 2022-07-11


从单一应用程序切换到微服务时,客户端的行为不能与客户端具有该应用程序的一个入口点的行为相同。简单来说就是微服务上的某一部分功能与单独实现该应用程序时存在不同。

目前在使用微服务时,客户端必须处理微服务体系结构带来的所有复杂性,例如聚合来自各种服务的数据,维护多个端点,客户端和服务器之间的联系增加以及对每个服务进行单独的身份验证等 ,同时客户端对微服务的依赖性也直接导致了重构服务的困难。一种直观的方法是将这些服务隐藏在新的服务层后面,并提供针对每个客户端量身定制的API。该聚合器服务层也称为API网关,它是解决此问题的常用方法。本文将介绍API网关在解决安全性方面的优势,详情请查看全文:

image.png

来自客户端的所有请求都首先通过API网关,然后网关再将请求转到适当的微服务。

典型的API网关包括

  • 安全性(身份验证和潜在的授权)

  • 管理访问配额和限制

  • 缓存(代理语句和缓存)

  • API的组成和处理

  • 路由(“中转器”)到“内部” API

  • API运行状况监视(性能监视)

  • 版本控制(自动化流程)

API网关的优势

  • 在统一的位置管理和实施

  • 将大部分问题外部化,因此简化了API源代码

  • 提供API的管理中心和视图,更方便采用一致的策略

API网关的缺点

  • 容易出现单点故障或瓶颈

  • 由于所有API规则都在一个位置,因此存在复杂性风险

  • 被锁定的风险,日后系统迁移并不简单

API的增长带来了机会和挑战

为了掌握API的飞速增长,人们只需要查看ProgrammableWeb的统计数据,该数据库自2005年以来一直在收集开放的API。2005年仅列出了大约100种API,如今已有超过10,000个公共API,这种增长越来越依赖于用户数据资料库的经济。据报道,Salesforce通过API创造了其30亿美元年收入的50%以上,以及Expedia 20亿美元年收入的近90%。

公司通过以各种方式计算对API及其背后资源的访问来获得API收入。例如,Twitter,Facebook和其他提供基于广告的API,这些API允许基于报告和分析来进行有针对性的广告,但是广告代理商和其他品牌必须为访问这些API付费。

API网关在安全性中的角色:身份验证和访问控制

访问控制是API网关技术的第一大安全驱动程序,它充当各种控制者,因此组织可以管理谁能访问API并建立有关如何处理数据请求的规则。访问控制几乎能扩展到建立其他策略,包括对某些来源的API调用的速率限制,甚至是通过API访问所有或某些资源的要求。

API网关的访问控制功能通常从身份验证机制开始,以确定任何API调用的实际来源。当前,最流行的网关是OAuth,它充当中介程序,用于访问基于Web的资源而不向服务公开密码,并且基于身份验证进行保留,在这种情况下企业可以承受丢失数据的麻烦,确保密钥完全保密。

通信安全

网关是一种通过单个通道连接所有API服务以评估,转换和保护整个组织中通讯的好方法。当所有流量都通过网关进行转接时,IT安全专家能够动态到所有的项目动态。

image.png

API网关可以在内部服务之间引入消息安全性,从而使内部服务更加安全,并且在服务之间来回传递的消息经过加密。即便使用传输层加密(TLS),忽略正确的身份验证也会导致问题。例如,在API请求中使用有效的手机号码,任何人都可以获取个人电子邮件地址和设备标识数据。像OAuth / OpenIDConnect这样的行业标准强大的身份验证和授权机制,以及TLS,都是至关重要的。

威胁防护

没有威胁防护,API网关,其API和集成服务器的本机服务基本上是不安全的。这意味着潜在的黑客,恶意软件或任何匿名的外部人员都可以轻松地尝试传播一系列攻击,例如DDoS或SQL注入。

API是企业与世界进行数字连接的网关。不幸的是,有些恶意用户旨在通过注入“额外”的命令或表达式来删除,更新甚至创建可用于API的任意数据来访问后端系统。

例如,2014年10月,Drupal宣布了一个SQL注入漏洞,该漏洞使攻击者可以访问数据库,代码和文件目录。甚至攻击最严重的程度是,攻击者可以将所有数据复制到客户端站点之外,这将对企业造成多大的影响。注入威胁的类型有很多,但最常见的是SQL注入、RegExInjection和XML注入。在现实中并不少见,我们已经不止一次地看到API在没有威胁防护的情况下上线了。

信息保护

许多API开发人员都习惯使用200代表成功请求,404代表所有失败,500代表内部服务器错误,在某些极端情况下,在详细的堆栈跟踪之上使用200代表带有失败消息的主体。当堆栈跟踪以程序包名称,类名称,框架名称,版本,服务器名称和SQL查询的形式揭示底层设计或体系结构实现时,可能会向恶意用户泄漏信息。

合适的做法是返回一个“平衡”的错误对象,该对象具有正确的HTTP状态代码,所需的最少错误消息,并且在错误情况下不进行堆栈跟踪。这将改善错误处理并保护API实施细节免受攻击者的侵害。API网关可用于将后端错误消息转换为标准化消息,从而使所有错误消息看起来都标准化,这也消除了公开后端代码结构的麻烦和危险。

白名单和允许白名单的方法

考虑IP地址级别的API流量,应该有设备,服务器,网络和客户端IP地址的已知列表。根据网络的紧密程度,此列表的大小会有所不同。

RESTful服务很常见,它允许多种方法访问该实体上不同操作的给定URL。例如,GET请求可能会读取实体,而PUT将更新现有实体,POST将创建新实体,而DELETE将删除现有实体。

对于服务来说,适当地限制允许动词很重要,这样只有允许的动词请求才能起作用,而其他所有动词都将返回正确的响应码(例如,403 Forbidden)。

讯息大小

有消息大小限制是很好的。如果你十分确认知道不会接收大文件消息(例如,超过2MB),那限制大小过滤掉大文件消息能尽可能避免一些未知攻击。

SQL注入

SQL注入保护使你可以阻止可能导致SQL注入攻击的请求。

JSON威胁防护

JavaScript对象表示法(JSON)容易受到内容级别的攻击。此类攻击试图使用巨大的JSON文件淹没解析器,并最终使服务崩溃。

XML威胁防护

对XML应用程序的恶意攻击通常涉及较大的递归有效负载,XPath / XSLT或SQL注入,以及CData,以淹没解析器并最终使服务崩溃。有关输入验证的更多信息,请访问此处。

限速

需要对所有API用户进行身份验证,并记录所有API调用,从而使API提供程序可以限制所有API用户的使用率。许多API网关都允许你限制可以对任何单个API资源进行API调用的数量,以秒,分钟,天或其他相关约束条件来指定消耗量。

API网关:开源

以下是一些值得使用的产品:

  • GOKU API Gateway

  • Kong API Gateway

  • Tyk API Gateway

结论

在谈论API安全性时,我们必须了解,安全性是公司、组织、机构和政府机构考虑向其API基础结构投资更多资源以及保护现有工作的头等大事。同时,在现有API提供商投资API基础结构方面,它也是最不足的领域。许多公司都在自行构建API作为产品,以部署Web,移动,IoT和其他应用程序,但是在此过程中的每一步都需要保护信息的安全性,而API网关是针对这些应用程序的最受欢迎且最有效的解决方案之一。


API安全网关是哪个部门发起需求


在这篇文章中将我们一起来探讨当前的API网关的作用。 一、API网关的用处 API网关我的分析中会用到以下三种场景。


Open API 企业需要将自身数据、能力等作为开发平台向外开放,通常会以rest的方式向外提供,最好的例子就是淘宝开放平台、腾讯公司的QQ开发平台、微信开放平台。 Open API开放平台必然涉及到客户应用的接入、API权限的管理、调用次数管理等,必然会有一个统一的入口进行管理,这正是API网关可以发挥作用的时候。


微服务网关 微服务的概念最早在2012年提出,在Martin Fowler的大力推广下,微服务在2014年后得到了大力发展。 在微服务架构中,有一个组件可以说是必不可少的,那就是微服务网关,微服务网关处理了负载均衡,缓存,路由,访问控制,服务代理,监控,日志等。API网关在微服务架构中正是以微服务网关的身份存在。


API服务管理平台 上述的微服务架构对企业来说有可能实施上是困难的,企业有很多遗留系统,要全部抽取为微服务器改动太大,对企业来说成本太高。 但是由于不同系统间存在大量的API服务互相调用,因此需要对系统间服务调用进行管理,清晰地看到各系统调用关系,对系统间调用进行监控等。 API网关可以解决这些问题,我们可以认为如果没有大规模的实施微服务架构,那么对企业来说微服务网关就是企业的API服务管理平台。


二、API网关在企业整体架构中的地位 一个企业随着信息系统复杂度的提高,必然出现外部合作伙伴应用、企业自身的公网应用、企业内网应用等,在架构上应该将这三种应用区别开,三种应用的安排级别、访问方式也不一样。 因此在我的设计中将这三种应用分别用不同的网关进行API管理,分别是:API网关(OpenAPI合伙伙伴应用)、API网关(内部应用)、API网关(内部公网应用)。 


三、企业中在如何应用API网关 1、对于OpenAPI使用的API网关来说,一般合作伙伴要以应用的形式接入到OpenAPI平台,合作伙伴需要到 OpenAPI平台申请应用。 因此在OpenAPI网关之外,需要有一个面向合作伙伴的使用的平台用于合作伙伴,这就要求OpenAPI网关需要提供API给这个用户平台进行访问。 如下架构: 


当然如果是在简单的场景下,可能并不需要提供一个面向合作伙伴的门户,只需要由公司的运营人员直接添加合作伙伴应用id/密钥等,这种情况下也就不需要合作伙伴门户子系统。 2、对于内网的API网关,在起到的作用上来说可以认为是微服务网关,也可以认为是内网的API服务治理平台。 当企业将所有的应用使用微服务的架构管理起来,那么API网关就起到了微服务网关的作用。 而当企业只是将系统与系统之间的调用使用rest api的方式进行访问时使用API网关对调用进行管理,那么API网关起到的就是API服务治理的作用。 架构参考如下: 


3、对于公司内部公网应用(如APP、公司的网站),如果管理上比较细致,在架构上是可能由独立的API网关来处理这部分内部公网应用,如果想比较简单的处理,也可以是使用面向合作伙伴的API网关。 如果使用独立的API网关,有以下的好处: • 面向合作伙伴和面向公司主体业务的优先级不一样,不同的API网关可以做到业务影响的隔离。 • 内部API使用的管理流程和面向合作伙伴的管理流程可能不一样。 • 内部的API在功能扩展等方面的需求一般会大于OpenAPI对于功能的要求。 基于以上的分析,如果公司有能力,那么还是建议分开使用合作伙伴OPEN API网关和内部公网应用网关。


四、API网关解决方案 私有云解决方案如下: • Kong是基于Nginx+Lua进行二次开发的方案 https://konghq.com/ • Eolinker和Kong比较接近,但是因为是国内公司开发的,后续的技术支持和培训比较友好。 https://www.eolinker.com • Netflix Zuul,zuul是spring cloud的一个推荐组件, https://github.com/Netflix/zuul • orange,这个开源程序也是国人开发的,不过这个是个人开发不是公司。 http://orange.sumory.com/ 公有云解决方案: • Amazon API Gateway, https://aws.amazon.com/cn/api-gateway/ • 阿里云API网关, https://www.aliyun.com/product/apigateway/ • 腾讯云API网关, https://cloud.tencent.com/product/apigateway 自开发解决方案: • 基于Nginx+Lua+ OpenResty的方案,可以看到Eolinker,Kong,orange都是基于这个方案。 • 基于Netty、非阻塞IO模型。通过网上搜索可以看到国内的宜人贷等一些公司是基于这种方案。 • 基于Node.js的方案。这种方案是应用了Node.js天生的非阻塞的特性。 • 基于java Servlet的方案。zuul基于的就是这种方案,这种方案的效率不高,这也是zuul总是被诟病的原因。 五、企业怎么选择API网关 现在的亚马逊、阿里、腾讯云都在提供基础公有云的API网关,当然这些网关的基础功能肯定是没有问题,但是二次开发,扩展功能、监控功能可能就不能满足部分用户的定制需求了。 另外很多企业因为自身信息安全的原因,不能使用外网公有网的API网关服务,这样就只有选择私有云的方案了。 在需求上如果基于公有云的API网关只能做到由内部人员为外网人员申请应用,无法做到定制的合作伙伴门户,这也不适合于部分企业的需求。 如果作为微服务网关,大多数情况下是希望网关服务器和服务提供方服务器是要在内网的,在这里情况下也只有私有云的API网关才能满足需求。 综合上面的分析,基础公有云的API网关只有满足一部分简单客户的需求,对于很多企业来说私有云的API网关才是正确的选择。




版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:国产最强开源 API 网关,开源API网关参数转换原理
下一篇:高并发系统设计——API网关技术选型,api网关和网关区别
相关文章

 发表评论

暂时没有评论,来抢沙发吧~