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

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

来自客户端的所有请求都首先通过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安全专家能够动态到所有的项目动态。

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网关:开源

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

结论

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

参考资料

https://dzone.com/articles/the-role-of-api-gateways-in-api-security

API网关在API安全性中的作用的更多相关文章

  1. 谈谈微服务中的 API 网关(API Gateway)

    前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...

  2. 微服务中的 API 网关(API Gateway)

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...

  3. 服务中的 API 网关(API Gateway)

    我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api ...

  4. 用API网关把API管起来

    最开始只是想找个API网关防止API被恶意请求,找了一圈发现基于Nginx的OpenResty(Lua语言)扩展模块Orange挺好(也找了Kong,但是感觉复杂了点没用),还偷懒用Vagrant结合 ...

  5. .net core 微服务之Api网关(Api Gateway)

    原文:.net core 微服务之Api网关(Api Gateway) 微服务网关目录 1. 微服务引子 2.使用Nginx作为api网关 3.自创api网关(重复轮子) 3.1.构建初始化 3.2. ...

  6. .net core 实现 api网关 进行 api版本控制

    场景: 由一次大的项目改动引起的app端api不兼容问题,这时候就需要对api做版本控制了,权衡之后因为用户不多,选择了强更,没人想在已经写了8000行代码的单个svc文件中维护好几个版本的接口或者继 ...

  7. 微服务架构中API网关的角色

    [上海尚学堂的话]:本文主要讲述了Mashape的首席技术执行官Palladino对API网关的详细介绍,以及API网关在微服务中所起的作用,同时介绍了Mashape的一款开源API网关Kong. A ...

  8. 聊聊API网关的作用

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 10.5px "Trebuchet MS" } p.p2 { margin: 0.0px ...

  9. 基于.NET CORE微服务框架 -谈谈surging API网关

    1.前言 对于最近surging更新的API 网关大家也有所关注,也收到了不少反馈提出是否能介绍下Api网关,那么我们将在此篇文章中剥析下surging的Api 网关 开源地址:https://git ...

随机推荐

  1. [JOYOI1326] 剑人合一

    题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 他们飘呀飘,飘呀飘,飘呀飘,飘呀飘~~~经过七七八十一天的漂泊,残雪.夏夜和水手2 ...

  2. Java系列之注解

    Java系列之注解 Java 注解(Annotation)又称之为 Java 标注.元数据,是 Java 1.5 之后加入的一种特殊语法,通过注解可以标注 Java 中的类.方法.属性.参数.包等,可 ...

  3. Js极客之路 - 优化操作(性能优化)

    1.因为每次For循环都会计算一次arr.length,所以有必要存储数组长度以减少计算.针对这篇文章(http://www.crimx.com/2015/04/21/should-array-len ...

  4. Go中http超时问题的排查

    背景 排查 推测 连接超时 疑问 http2 解决超时 并发连接数 服务端限制 真相 重试 解决办法 问题1 背景 最新有同事反馈,服务间有调用超时的现象,在业务高峰期发生的概率和次数比较高.从日志中 ...

  5. SpringBoot整合MybatisPlus3.X之SQL注入器(九)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  6. 解开HTTPS的神秘面纱

    在说HTTP前,一定要先介绍一下HTTP,这家伙应该不用过多说明了,大家每天都在用,每一次HTTP请求,都是一次TCP连接.遗憾的是,请求的内容在TCP报文中是明文传输的,任何人截取到请求都可以读取其 ...

  7. Ajax自我总结

    一念起.万水千山皆有情. 一念灭.沧海桑田已无心.     ------ 随记 本文主要针对ajax原理介绍,很少涉及实例,主要用于对知识的梳理总结,方便以后学习和查询... Ajax 一.Ajax是 ...

  8. pythonpip的基本使用

    pip 是 Python 包管理工具,该工具提供了对Python 包的查找.下载.安装.卸载的功能.目前如果你在 python.org 下载最新版本的安装包,则是已经自带了该工具.Python 2.7 ...

  9. DataGridView内容居中显示

    DataGridView1.ColumnHeadersDefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter '标 ...

  10. API gateway 之 kong 基本介绍 (一)

    一.API网关概念介绍 API 网关,即API Gateway,是大型分布式系统中,为了保护内部服务而设计的一道屏障,可以提供高性能.高可用的 API托管服务,从而帮助服务的开发者便捷地对外提供服务, ...