API网关在API安全性中的作用

news2024/11/16 9:25:35

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

目前在使用微服务时,客户端必须处理微服务体系结构带来的所有复杂性,例如聚合来自各种服务的数据,维护多个端点,客户端和服务器之间的联系增加以及对每个服务进行单独的身份验证等,同时客户端对微服务的依赖性也直接导致了重构服务的困难。一种直观的方法是将这些服务隐藏在新的服务层后面,并提供针对每个客户端量身定制的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作为产品,以部署Web,移动,IoT和其他应用程序,但是在此过程中的每一步都需要保护信息的安全性,而API网关是针对这些应用程序的最受欢迎且最有效的解决方案之一。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一个月裂变50多万人?商城引流模式玩法——分享购

随着经济进入转型的关键期,零售行业的营销模式正在发生转变,以消费者为中心驱动营销数字化成为当下企业的共识。 新零售时代数字化的核心是数据能力的全面升级,企业通过数字化协同能力整合线上线下全域消费场景,赋能消费者深度洞…

JDK16及其以后的版本Maven打包成可运行的程序的方法

Java应用的分发一直是一个比较麻烦的问题。这是因为Java应用的运行需要虚拟机的支持,仅有Java应用打包的JAR文件是不够的,目标机器还需要安装版本匹配的JDK或JRE。随着云原生和容器化技术的流行,Java应用可以选择以容器镜像的形式来打包和分发…

以太网,拥塞控制与 AQM

拥塞的表现是冲突,大量消费者挤兑有限资源,即拥塞,在一个绝对没有冲突的系统里,自然就没有拥塞。而冲突的来源有两个,一个是无序,一个是贪婪。 仅引入秩序不能解决冲突,但可减少冲突损耗&#…

JavaScript高级 浏览器的渲染原理

浏览器的渲染原理1. 网页的解析过程2. 浏览器内核3. 浏览器渲染过程1. HTML解析2. 生成CSS规则3. 构建Render Tree4. 布局(layout)5. 绘制(Paint)4. 回流和重绘解析1. 回流2. 重绘3. web 性能优化4. 合成和性能优化5. 浏览器遇到 …

【VulnHub靶场】——CHRONOS: 1

作者名:Demo不是emo 主页面链接:主页传送门创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷座右…

PaddlePaddle/PaddleX本地离线安装(分别以C++和Python为例)

目录一. 本地离线安装简介1.1 为什么需要源码编译1.2 源码编译的产物1.3 源码编译的原理二. 本地离线安装准备2.1 编译准备(C/Python通用)2.2 本地编译推荐配置(C)2.3 本地编译推荐配置(Python)三. Windows本地离线安装(C源码编译)3.2 编译工具安装3.3 打开Visual studio 终端3…

torch.cat函数

#dim0,上下拼接 #dim1,左右拼接 import torch # x1 x1 torch.tensor([[1,2,3],[4,5,6]],dtypetorch.int)# x2 x2 torch.tensor([[7,8,9],[10,11,12]],dtypetorch.int)#inputs为2个形状为[2 , 3]的矩阵 inputs [x1, x2] print(inputs)#dim0,上下拼接…

如何用Python字符串进行切片操作?

嗨害大家好鸭!我是小熊猫~ 我们基本上都知道Python的序列对象 都是可以用索引号来引用的元素的, 索引号可以是正数由0开始从左向右, 也可以是负数由-1开始从右向左。 在Python中对于具有序列结构的数据来说都可以使用切片操作&#xff0…

【C++升级之路】第五篇:C/C++内存管理(new和delete的实现原理)

🌟hello,各位读者大大们你们好呀🌟 🍭🍭系列专栏:【C学习与应用】 ✒️✒️本篇内容:C/C内存分布,C/C动态内存管理方法,C动态内存管理方法底层函数operator new 和operat…

浅谈树状数组

学习树状数组必不可少学习树状数组的精髓,lowbit()运算 在计算机中存储一个正数是以二进制的形式,而存储一个负数则是以二进制补码的形式,简单说就是二进制取反1,lowbit运算就是提取出最后一个1以后的位置,比如10100进…

【C语言】结构体、共用体、位域

结构体 1、 结构体的声明方法 struct struct_name {data_type member1;data_type member2;.. };这是其中一种声明方式~ 2、定义一个结构体变量 struct struct_name variable;3、访问成员变量 . 运算 一个结构体变量访问其成员时,使用的是 . 运算 下面…

BM35 判断是不是完全二叉树

题目 给定一个二叉树,确定他是否是一个完全二叉树。 完全二叉树的定义:若二叉树的深度为 h,除第 h 层外,其它各层的结点数都达到最大个数,第 h 层所有的叶子结点都连续集中在最左边,这就是完全二叉树。&a…

深入理解ConcurrentHashMap1.7源码

1. 概述 HashMap在我们的日常生活中使用很多,但是它不是线程安全的。我们可以使用HashTable来代替,主要实现方式是在方法中加入synchronized,所以效率也比较低。因此,对于键值对,我们可以尝试使用ConcurrentHashMap来…

实验室规划设计方案SICOLAB

一、实验室规划设计 喜格提供实验室布局方案 根据实验室性质、实验室定位、实验室功能、实验类型、实验工艺流程以及国家相关标准合理的规划布局。 喜格提供仪器摆放布局方案 根据该实验流程来确定仪器的种类、数量、规格型号、外形尺寸、电压功率等参数以及摆放位置以及提…

【Linux】tee、tail、killall、|、||、、命令学习

|、||、&、&&辨析 竖线‘|’在linux中是管道符的意思,将‘|’前面命令的输出作为’|后面的输入; 双竖线‘||’,用双竖线‘||’分割的多条命令,执行的时候遵循如下规则:如果前一条命令为真,则…

还在喷农民歌唱家大衣哥吗?他的一个不经意间的举动却造福了乡里

农民歌唱家大衣哥,一直以来都饱受争议,有人说他是炒货专家,然而事实真的如此吗?事实上,大衣哥也做了很多好事,像修桥补路等都不说了,单就他的一个不经意间的举动,就造福了四乡八邻。…

Windows内核--CPU和内核(1.7)

Windows内核支援哪些CPU? Intel x86/x86_64 IA64已不再支持. AMD amd64 ARM (Windows On Arm: WOA) ARM具备低功耗优势, 除了高通, 还有Broadcom/NXP等都支援ARM架构. 苹果自研M系列开了头,ARM不仅有低功耗,同样有性能,Windows也想分一杯羹…

【vue系列-03】vue的计算属性,列表,监视属性及原理

vue的核心属性一,vue核心属性1,计算属性2,监视属性3,样式绑定3.1,class样式绑定3.2,style样式绑定4,条件渲染5,列表渲染5.1,遍历列表5.2,key的作用5.3&#x…

2022年全国职业院校技能大赛中职组网络安全竞赛——隐写术应用解析(超详细)

2022年全国职业院校技能大赛中职组网络安全竞赛——隐写术应用解析(超详细) B-8任务八:隐写术应用 *任务说明:仅能获取Server8的IP地址 环境需求私信博主 1.找出文件夹1中的文件,将文件中的隐藏信息作为Flag值提交; 解题步骤如下 2.找出文件夹2中的文件,将文件中的隐藏信息…

基于Vue的数据可视化设计框架,数据大屏可视化编辑器

开发文档(★★★★★) 请访问 https://lizhensheng.github.io/vue-data-view/ 完整代码下载地址:基于Vue的数据可视化设计框架,数据大屏可视化编辑器 简介 DataView是一个基于Vue的数据可视化设计框架提供用于可拖拽的控件提供…