API网关在API安全中的作用
现在,在使用微服务时,客户端必须处理来自微服务架构的所有复杂性,例如聚合来自各种服务的数据,维护多个端点,增加客户端和服务器的干扰,以及为每个服务单独进行身份验证。
客户端对微服务的依赖直接使得重构服务变得困难。一种直观的方法是在新服务层后面隐藏这些服务,并提供为每个客户定制的API。
此聚合器服务层也称为API网关,它是解决此问题的常用方法。
基于API网关的微服务架构模式。
客户的所有请求首先通过API网关。然后它将请求路由到适当的微服务。
典型的API网关包括:
• 安全性(身份验证和潜在授权)
• 管理访问配额和限制
• 缓存(代理语句和缓存)
• API组成和处理
• 路由(可能处理)到“内部”API
• API健康监测(性能监测)
• 版本控制(可能是自动化)
API网关的优点
• 在一个地方实施
• 简化API源代码本身,因为这些问题是外部化的
• 提供API的中央和独特视图,因此更有可能允许一致的策略
API网关缺点
• 可能的单点故障或瓶颈
• 由于所有API规则都在一个地方,因此存在复杂性风险
• 锁定和迁移的风险可能并不简单
API增长创造了机会,漏洞
为了掌握API的失控增长,我们只需要查看自2005年以来一直在跟踪公开暴露的API的ProgrammableWeb的统计数据。那时,只列出了大约100个API; 今天,有超过10,000个公开的API。
这种增长越来越多地依赖于依赖用户数据宝库的经济。据报道,Salesforce.com通过其API获得了30亿美元年收入的50%以上,以及Expedia每年20亿美元收入的近90%。
公司通过以各种方式计量对API及其背后的资源的访问来产生API收入。例如,Twitter,Facebook和其他提供基于广告的API,允许基于报告和分析的目标广告,但广告代理商和其他品牌必须支付访问这些API的费用。
API网关在安全性中的角色:身份和访问
访问控制是API网关技术的头号安全驱动程序,可作为各种调控器,因此组织可以管理谁可以访问API并建立有关如何处理数据请求的规则。
Cheshire表示,访问控制几乎总是延伸到建立其他策略,包括来自某些来源的API调用的速率限制,甚至是通过API访问所有或某些资源的支付要求。
当所有流量通过网关路由时,IT安全专家会更加确信他们能够了解组织的脉搏。
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将删除现有实体。
对于服务来说,正确限制允许的动词非常重要,这样只有允许的动词可以工作,而其他所有动词都会返回正确的响应代码(例如,a403 Forbidden)。
输入验证
利用松散的输入验证,允许黑客找到系统中的空白。使用现有输入,攻击者将探索接受或拒绝的内容,并推动可能的内容,直到他们找到进入API的方式并破坏系统的完整性。
以下是最常见的输入验证。
邮件大小
消息大小限制很好。如果您100%确定您不会收到大邮件(例如,超过2MB),为什么不过滤掉它们?
SQL注入
SQL注入保护允许您阻止可能导致SQL注入攻击的请求。
JSON威胁防护
JavaScript Object Notation(JSON)易受内容级攻击。此类攻击尝试使用巨大的JSON文件来压倒解析器并最终使服务崩溃。
XML威胁防护
对XML应用程序的恶意攻击通常涉及大型递归有效负载,XPath / XSLT或SQL注入,以及CData压倒解析器并最终导致服务崩溃。
有关输入验证的更多信息,请访问此处。
限速
要求对所有API用户进行身份验证,并记录所有API调用,允许API提供商限制所有API用户的使用率。许多API网关允许您对可以针对任何单个API资源进行的API调用的数量进行限制,以第二,分钟,日或其他相关约束来规定消耗。
API网关:开源
以下是一些值得一试的产品:
• TYK
• WSO2 API Manager
• 香港社区版
• Eolinker
结论
在谈论API安全性时,我们必须明白,安全性是公司,组织,机构和政府机构考虑在其API基础架构中投入更多资源以及正在加大现有工作量的公司的头号关注点。同时,它也是现有API提供商投资API基础设施时最缺乏的领域。许多公司正在自己构建API作为产品,部署Web,移动,物联网和其他应用程序,但很少停止在整个过程中的每个步骤中正确保护事物,但API网关是最受欢迎和最有效的解决方案之一。你将面临许多安全问题。