上下文中的API安全性
应用程序编程接口安全性位于多个安全学科的交叉点,如图所示。其中最重要的是以下三个领域:
1.信息安全(InfoSec)涉及在信息的整个生命周期中保护信息,防止其创建、存储、传输、备份和最终销毁。(这块内容讨论在NetWork的定义之下)
2.网络安全既保护网络上流动的数据,又防止对网络本身进行未经授权的访问。
3.应用程序安全(AppSec)确保软件系统的设计和构建能够抵御攻击和误用。
图API安全位于三个安全领域的交叉点:信息安全、网络安全和应用安全。
这三个主题中的每一个主题都已经有很多书了,因此我们不会深入讨论它们中的每一个。如图所示,您无需学习这些主题的各个方面即可了解如何构建安全的API。相反,将从每个领域中挑选最关键的领域并将它们混合在一起,以便全面了解它们如何应用于保护API。
通过信息安全,将学习如何:
·定义安全目标并识别威胁
·使用访问控制技术保护API
·使用应用加密技术保护信息
定义密码学是一门保护信息的科学,以便两个或更多人可以进行交流,而他们的信息不会被其他任何人阅读或篡改。它还可用于保护写入磁盘的信息。
从网络安全中,将学到:
·用于保护互联网上的API的基本基础设施,包括防火墙、负载均衡器和反向代理,以及它们在保护API方面发挥的作用
·使用安全通信协议(例如HTTPS)来保护传入或传出API的数据(传输安全)
定义HTTPS是通过安全连接运行的HTTP的名称。虽然正常的HTTP请求和响应对于任何观察网络流量的人都是可见的,但HTTPS消息是隐藏的并受到以下保护:传输层安全(TLS,也称为 SSL)。后期,我们也将根据搜集的资料简单探讨API启用HTTPS。
最后,从应用程序安全性中,将学到:
·安全编码技术
·常见的软件安全漏洞
·如何存储和管理用于访问API的系统和用户凭据
典型的API部署
一个API是由运行在服务器上的应用程序代码实现的;要么是应用程序服务器比如Java企业版(Java EE)或独立服务器。将这样的服务器直接暴露于互联网,甚至内部网的情况非常罕见。相反,对API的请求通常会先经过一个或多个附加网络服务,然后再到达API服务器,如下图所示。每个请求都会经过一个或多个防火墙,它在相对较低的级别检查网络流量并确保阻止任何意外流量。例如,如果您的API在端口 80(对于 HTTP)和 443(对于HTTPS)上处理请求,则防火墙将配置为阻止对任何其他端口的任何请求。负载均衡器然后将流量路由到适当的服务,并确保一台服务器不会因大量请求而过载,而其他服务器则闲置。最后是反向代理(或网关)通常放置在应用程序服务器前面,以执行计算量大的操作,例如处理 TLS 加密(称为 SSL 终止))并根据请求验证凭据。
定义SSL 终止1(或 SSL 卸载) 当来自客户端的 TLS连接由目标API服务器前面的负载均衡器或反向代理处理时发生。然后建立从代理到后端服务器的单独连接,该连接可以是未加密的(纯 HTTP)或加密为单独的连接。TLS 连接(称为 SSL 重新加密)。
除了这些基本要素之外,可能会遇到更多专业服务:
·API网关是一种专门的反向代理,可以使不同的API看起来就像是单个API。它们通常在微服务架构中使用,以简化向客户端提供的API。API网关通常还可以处理本书中讨论的API安全性的一些方面,例如身份验证或速率限制。
·AWeb应用程序防火墙(WAF) 在比传统防火墙更高的级别检查流量,可以检测和阻止针对HTTP Web服务的许多常见攻击。
·一个入侵侦测系统(入侵检测系统)或入侵防御系统(IPS) 监控内部网络内的流量。当它检测到可疑的活动模式时,它可以发出警报或主动尝试阻止可疑流量。
对API服务器的请求
通常会首先通过其他几个服务。防火墙在TCP/IP 级别工作,仅允许与预期流量相匹配的流量进出网络。负载均衡器根据请求以及对每台服务器当前正在执行的工作量的了解,将请求路由到适当的内部服务。反向代理或API网关可以代表API服务器处理昂贵的任务,例如终止HTTPS连接或验证身份验证凭据。
在实践中,这些服务之间经常存在一些重叠。例如,许多负载均衡器还能够执行反向代理的任务,例如终止 TLS 连接,而许多反向代理还可以充当API网关。某些更专业的服务甚至可以处理您将在本书中学到的许多安全机制,并且让网关或反向代理至少处理其中一些任务已变得越来越普遍。这些组件的功能是有限的,API中不良的安全实践甚至可能会破坏最复杂的网关。配置不当的网关还会给您的网络带来新的风险。了解这些产品使用的基本安全机制将帮助您评估产品是否适合应用程序,以及它的优势和优势局限性是。
API 安全最佳实践实施访问控制实施数据分类通过根据敏感度对数据进行分类,组织可以实施适当的安全控制,以确保只有经过授权的个人才能访问敏感数据。 例如,如果组织拥有允许访问客户数据的 API,则它可能会将此数据归类为敏感数据,并实施安全措施以确保只有授权个人才能访问该数据。这有助于防止未经授权访问敏感数据并保护客户的隐私。 验证参数参数验证是验证传递给函数或方法的输入参数(也称为实参)是否具有正确类型并满足特定条件的过程。参数验证用于确保应用程序或系统仅处理有效和预期的输入,并防止处理恶意或格式错误的输入。 加密API请求和响应加密有助于保护所传输数据的机密性和完整性。如果没有加密,能够拦截 API 与其客户端之间的通信的攻击者可能会查看或修改正在传输的数据(即中间人攻击)。加密 API 流量的常见方法是要求使用 HTTPS 和 SSL/TLS。 持续安全持续安全性涉及在 API 的生命周期内持续监控和提高 API 的安全性。这种方法有助于确保 API 的安全性并符合相关法规和标准,并可以帮助组织快速识别和解决潜在的安全漏洞或风险。 组织可以通过多种不同的方式为其API实现持续安全,包括:
|
原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/88224.html