无服务器计算近些年取得了长足发展,其增长伴随着丰富多彩的新解决方案生态系统的繁荣,这些新解决方案能提供可见性、实时跟踪、部署框架和应用安全。
随着无服务器安全风险意识的上升,愤世嫉俗者又开始重复那老掉牙的“恐惧、不确定和怀疑(FUD)”论调,力证无服务器模式虽能快速部署软件和大幅降低总拥有成本(TCO),却引入了新的安全问题。
成熟技术的主要标志之一就是围绕其不断发展的生态系统。拥有生机勃勃的社区、广泛的文档、最佳实践指南和各种工具,是驱动公司企业信任新技术并采用之的原动力。
最近,云安全联盟( Cloud Security Alliance )联合PureSec推出了涵盖广泛的无服务器安全指南,在去年的基础上新增两大风险类型。
该指南题为《无服务器应用12大关键性风险》,安全团队和处理无服务器应用的开发人员适用,但该指南不仅仅点出这些风险,还提供针对所有平台的最佳实践。指南中定义的风险类型如下:
无服务器功能可消费来自不同类型事件源的输入,每个事件源都有其独特的消息格式和编码体系。这些事件消息的各个部分可能包含攻击者控制的输入或不可信输入,应受到仔细检查。
因为无服务器模式提倡面向微服务的系统设计,应用可能包含数十乃至数百个功能函数。一旦执行不谨慎,很容易在健壮验证的应用上出错。
云提供商有多套配置设置可供根据特定需求调整服务。现成的设置未必总是最安全的。随着越来越多的公司企业迁移到云端,云配置漏洞也会变得更加普遍。
管理功能权限及角色是公司企业将应用部署到云端时面临的最艰巨的任务。开发人员走捷径应用“通用”权限模型的情况很常见。
尽管大多数云供应商提供非常强大的日志功能,这些日志却未必总是适合在应用层执行全面安全事件审计跟踪。
虽然不安全第三方库不是无服务器特有的问题,但在无服务器环境中检测恶意包却更为复杂——因为无法应用网络和行为安全控制。
与应用秘密存储相关的最常见错误之一,是将这些秘密简单地存储在作为软件工程一部分的明文配置文件中。另一个常见错误是将秘密存成了明文的环境变量。
无服务器架构具备自动化扩展和高可用性的前景;然而,与其他任一应用类型相同,只有应用最佳实践和良好设计才可以避免瓶颈。
业务逻辑篡改是很多软件的常见问题。不过,无服务器应用很特别,因为它们常遵从微服务设计,包含太多链接在一起以实现整体逻辑的功能函数。如果没有恰当执行,攻击者可能会篡改既定逻辑。
与标准应用的调试功能相比,无服务器应用的逐行调试选项非常有限(而且更加复杂)。因此,开发人员常会使用详细错误信息,这就有可能泄露敏感数据了。
随时间推移,无服务器功能和相关云资源可能过时,理应停止使用。移除过时组件是为了减少不必要的开支和消除可避免的攻击界面。过时无服务器应用组件可能含有老版本功能函数、未使用的云资源、不必要的事件源、未使用的角色或身份,以及未使用的依赖。
无服务器平台为应用开发者提供本地磁盘存储、环境变量和内存以执行其任务。为使无服务器平台能高效处理新调用,云提供商可能会重用执行环境处理后续调用。如果无服务器执行环境被重用于属于不同用户或会话的后续调用,其留下的敏感数据可能面临被暴露的风险。
需要指出的是,该指南旨在提升安全意识和帮助公司企业安全应用无服务器架构,并非是要散布恐惧。任何类型的平台都存在安全风险,无服务器平台也不例外。云安全联盟提出这些问题的目的是要鼓励公司企业在采纳新技术的同时规避风险和常见错误。
https://www.puresec.io/serverless-security-top-12-csa-puresec