Serverless 是一种趋势性的云计算架构,使用者无需关心底层硬件和服务器,只需要编写函数代码,上传至云端,就能获得极高可扩展性的计算资源,并仅支付实际使用的运行时间。Serverless 架构为企业带来了巨大的经济和效率优势,也使得开发者能够聚焦关键业务逻辑的编写。但同时也给企业带来了新的安全风险,本文将从 Serverless 应用的特点、安全威胁和风险管理三个方面,深入探讨 Serverless 应用的安全和风险管理。
Serverless 应用的特点
没有明确的边界:Serverless 应用通常由若干个函数和事件触发器组成,这些函数和事件触发器之间没有明确的边界,数据的流向也较为复杂。这也使得 Serverless 应用的安全边界相对比较模糊。
弹性和可扩展性:Serverless 应用的计算资源是动态分配的,可以根据实际需要进行弹性扩缩。但这同时也意味着,攻击者利用 Serverless 应用进行 DDoS 攻击时,极难判断攻击的实际范围和发起攻击的来源。
非持久化状态:Serverless 应用通常使用短暂的存储会话或内存来保存状态,并在函数执行后立即清除它们。这也意味着,在函数执行期间,稍有不慎就可能把敏感数据暴露到外部环境中。
Serverless 应用的安全威胁
- 无线可控的函数执行:攻击者利用 Serverless 应用的漏洞,通过上传恶意代码来执行函数,实现远程代码执行。攻击者还可以利用 JavaScript 的特性实现跨站脚本攻击,从而让受害者的浏览器执行恶意代码。
--------------- - ----- ------- -- - --------------------------------------- ------ - ----------- ---- ----- --------------------- ---- ---------- -- --
- 数据泄漏:由于 Serverless 应用的非持久化状态,可能导致敏感数据泄漏到外部环境中。攻击者可以通过多种途径来访问到不应该公开的数据,如函数运行日志、API 网关和数据存储等位置。
--------------- - ----- ------- -- - ------------------- ------ - ----------- ---- ----- --------------------- ---- ---------- -- --
- DDoS 攻击:Serverless 应用因使用弹性和可扩展的计算资源,被用于发动 DDoS 攻击的风险正在不断增加。攻击者可以利用多个账户或 API 密钥,强力发动攻击。
Serverless 应用的风险管理
代码审查:进行严格的代码审查,确保代码的安全性,防止恶意代码的注入。
权限控制:在 Serverless 应用的架构中,不同的服务通常拥有不同的权限,必须在应用程序级别和 API 网关级别限制控制访问。例如,只开放必需的端点,并确保函数只读取和写入应该使用的资源。
---------- ------- -------- -------------- ----- ---------- ------- - ----- ----- ------- ------- ---- ----------- ---------- ----- ---- -------- ----
- 保护敏感数据:Serverless 应用中涉及到的敏感信息,如密钥、凭证等,应采取高度安全的存储方式,可以将其存储在云的密钥管理器中,以确保敏感数据的安全性。
--------------- - ----- ------- -- - ----- --------- - ----- ------------------- ------- ---------- --------- ----- ------ - - ------- ----------------- ---- -------------- ----- -------------------------------------- -- ----- ------ - ----- ---------------------------- ------ - ----------- ---- ----- -------------------- -------- --------------- -- --
- 防范 DDoS 攻击:使用安全合规的服务来保护 Serverless 应用资源和数据。例如,可以使用客户端测试、负载均衡和 Web 应用程序防火墙(WAF)等防御措施来增加云应用程序的安全性。
结论
Serverless 应用的安全和风险管理是任何应用程序间稳定和可靠的关键部分。应该采取必要的预防措施来应对各种可能的威胁,并确保最大化保护企业的应用程序和数据安全。在开发 Serverless 应用时,务必与专业的开发团队合作,严格按照最佳实践来实现安全性的最大程度保障。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/670bcf1a66ef9cf37fac5c9d