现在大部分从业人员都很熟悉云计算,由于这种熟悉程度,有时候很难回想起云计算的原始承诺。
云计算的原始承诺是企业可将注意力从不增加价值的事物转移到增加价值的事物。具体来说,企业原本需要构建基础设施、维护数据中心以及提供业务所依赖的应用,而云计算可将其重点转移到构建更好、更无缝和更相关的应用。
然而,仅因为事物在云端并不一定意味着所有维护要求都消失。例如,基础设施即服务部署仍然需要你进行漏洞修复、布置虚拟网络路径、提供基础安全设备以及完成很多其他任务,正如托管在内部数据中心时你做的那样。
而无服务器应用的新趋势有望帮助我们实现云计算的原始梦想。通过无服务器应用,不再有维护基础设施的工作,让你可专注于构建更好的应用。你可以想象,这非常令人信服和强大。
也就是说,保护无服务器应用安全相关的具体方法与企业过去可能采用的方法有些不同。这意味着,如果你计划使用无服务器应用,你可能需要提前思考安全方法并打下坚实基础。
无服务器意味着什么?
无服务器并不意味着没有服务器;事实是这里有服务器,只是用户或者构建应用的开发人员不需要知道服务器,也不需要了解服务器在做什么、了解它们如何运作或者警惕应用层下可能发生的情况。开发人员可通过定义API进行交互以部署他们所需要的逻辑。扩展、与特定硬件或底层中间件服务接口逻辑等操作都是由环境无缝且透明地处理。
在Google Cloud Functions或Amazon Web Services Lambda等环境中,通过事件触发功能,而应用功能用以响应这些事件,并实现小规模功能。环境会根据需要配置功能,并根据需求进行扩展。这样做的优势是,即使超出大多数云计算使用情况,你只需要支付你使用的部分。
这与常规、非服务器平台即服务部署有何不同?简单的回答是,从哲学角度来看它们非常接近。然而,即使在PaaS环境中,与无服务器环境相比,你仍然需要担心底层部署方面的情况。
例如,你可能需要在很多PaaS情况下专门提供资源,这样扩展并不是真正隐藏。同样,PaaS中特定服务的配置(例如数据库或邮件)可能需要非常了解底层部署。所以,从某种意义上来说,无服务器就像PaaS++。
无服务器应用的安全注意事项
你可能会想到,保护无服务器应用于保护传统单片应用或其他云部署有所不同。
首先,最重要的是,你与7层网络以下交互的能力几乎不存在。这意味着你无法将入侵检测设备放到虚拟网络或者在底层操作系统安装恶意软件扫描工具。因此,你需要彻底且完整地了解你正在部署的逻辑相关的威胁模型。
同样,你需要确保开发的代码是安全的。这可能不是简单的事情,因为应用安全是很多企业挣扎的领域。
例如,在应用问题方面,注入攻击仍然排在首位。虽然在某种程度上,漏洞总是会发生,但其实我们保护无服务器应用的能力与我们了解应用逻辑、移除或缓解潜在问题、保持代码高质量和监控环境的能力直接相关。这并非火箭科学,但确实需要有纪律。
如果你还没有这样做,这里有种方法可提供即时价值,那就是威胁建模。威胁建模已经是加强应用的有效工具,而它在无服务器环境中比其他情况下更有价值。它不仅可让你系统地映射和分析组件之间的交互点,而且还可生成数据流映射作为流程的部分。即使你可能没有完全了解数据存储或计算的底层机制,但应用元素如何交互的虚拟映射很有用,不仅仅是对威胁模型的分析。
在执行此操作时,你可能会考虑有哪些可用的选项可隔离应用逻辑,以为你提供更多的可见性或对操作的控制。例如,Vanadium等工具可让你以对开发人员透明的方式封装功能。你还可以选择自行部署包装策略。这样的策略可帮助寻找和过滤注入攻击,而不是假设所有开发人员可提供无注入代码。
最后,与任何其他事物一样,监控是必须事项。除了访问控制决策等,你还要了解应用逻辑本身。你想要发现任何不符合业务规则的异常事件。这将根据特定应用的用途而有所不同。这也是威胁建模可提供价值的领域,因为理想情况下,在创建和记录威胁建模的时候,你将首先了解应用的设计原理。
无服务器应用是强大的工具,但确保这些工具的安全性并不是安全团队可完全胜任的工作,因此,最好获得额外的外部和内部专业技能。
同样有帮助的做法是培训内部员工,让他们了解威胁建模方法、强大的编码做法以及常见滥用案例、攻击和威胁模型等。这也是很好的机会来培养人才、建立技能以及提高企业整体应用的复杂性和成熟度。