本文来自微信公众号“安全牛”。
PaaS(平台即服务,Platform-as-a-Service)是一种云计算服务模式,可以为客户提供一个完整的云平台(硬件、软件和基础架构)以用于快捷开发、运行和管理项目,从而降低了企业云计算应用的高成本和复杂性。当PaaS平台成为众多企业“数智化”发展的基础支撑平台时,其自身的安全性就变得至关重要,一旦PaaS平台被攻破,那么构建于其上的各类“数智化”应用也会面临安全隐患。
PaaS平台的安全应用挑战
总体来看,PaaS平台通常包含用户认证模块、存储模块、服务集模块、应用实例模块、消息总线模块,其中每个模块都可能会面临着相应的安全威胁与挑战。同时,PaaS通常还会作为更广泛应用程序开发环境的一部分,以便支持内部业务应用程序,或支持企业提供给客户或合作伙伴的软件和服务,因此确保PaaS的安全性比确保其他云模式的安全性更具挑战性。
在实际应用中,PaaS平台不仅会面临通用的云安全威胁,包括系统和资源隔离、用户级权限、用户访问管理以及防范常见的云攻击(比如恶意软件和勒索软件)等。从攻击和威胁事件缓解的角度来看,PaaS平台安全威胁还会有以下独特之处:
首先,安全团队需要了解大量与安全相关的PaaS平台设置选项,了解它们的含义及安全性影响。安全团队需要能够根据面对的风险概况,选择合适的设置措施。如果配置不当,就可能会导致安全性降低;
其次,在大多数PaaS平台上,安全团队很少有机会在堆栈架构的较低层面解决安全问题,因此不再有机会在较低层面落实安全管控措施;
第三,PaaS平台是由软件实现的,而所有软件都可能存在漏洞。这就存在了一种看似矛盾的平衡:PaaS实施意味着组织不必担心与补丁和安全更新相关的管理开销,但组织现在使用的PaaS平台服务中也可能会存在安全漏洞。
最后,PaaS常用于直接支持应用程序的构建。这意味着可能会出现众多的设计、逻辑、编程和实施问题,这是平台构建中的应用程序所特有的。
PaaS应用安全最佳实践
随着基于PaaS平台的应用不断丰富以及PaaS核心技术的进一步发展,PaaS平台的安全体系和技术手段也在同步完善中。PaaS安全策略需要根据企业环境、业务背景和行业使用情况灵活选择。而以下梳理的5个PaaS平台应用安全最佳实践,几乎适用于所有PaaS平台情况,参考这些步骤有助于确保企业以较少的投入,安全地构建和运行PaaS平台服务。
1
从威胁建模开始入手
对任何应用程序的安全防护都应该从威胁建模入手,在此过程中,会将PaaS应用程序设计分解为多个组件,并从攻击者的视角分析这些组件如何相互联系。评估应用程序组件和相关风险使威胁建模人员能够概述威胁缓解步骤,以修复任何未发现的漏洞。
企业在使用PaaS平台服务之前,创建一个系统的威胁评估模型会大有价值。如果有必要,企业的网络安全团队可以更新应用程序安全测试方法,将威胁模型的覆盖范围扩大到微服务和网状架构。
2
充分利用平台独有的安全特性
不同的PaaS产品所提供的安全特性也各不相同。企业必须了解平台本身带有哪些安全选项,并尽可能启用它们。一些平台可能提供Web应用防火墙或应用程序网关,开启它们可以更有效地保护应用程序和服务。另一些平台可能提供增强的日志和监测功能。信息安全团队的领导人需要明确提供商提供哪些安全选项,并加以充分利用。
采取强大的身份和凭据管理策略也很重要。企业应该尽可能开启PaaS服务商所提供的云身份和访问管理、授权和身份验证模式。除了确保整合到应用程序本身外,还要确保将它们整合到面向管理或开发人员访问的后端流程中。
3
对平台数据进行加密
大多数PaaS产品支持或要求客户对传输中数据进行加密,这是非常必要的。企业应该尽可能地防止PaaS服务数据暴露,并不仅限于应用服务提供商所提供的预防措施。采取数据加密措施有助于确保应用数据即使在底层服务提供商泄密后也受到保护。
企业应该尽量对存储的数据进行加密,无论是客户数据还是配置或会话信息。在PaaS环境中,加密静态数据可能需要安全团队采用PaaS提供商的API工具。加密静态数据和传输中数据后,企业还需要注意秘密信息管理。这适用于为实施静态加密而创建和使用的密钥,以及需要确保安全的密码、API令牌及其他秘密信息。
4
映射和测试跨业务流的交互
多云环境应用已经成为了一种常态。对于PaaS及其他云用例都是如此。在此背景下,创建并持续更新一张全面的交互关系图至关重要。这个方法还支持前面第一个PaaS安全最佳实践,因为威胁建模需要创建一个数据流图来表示组件如何交互。
为了确保在渗透测试期间面面俱到,信息安全团队应该系统化地对每个部分进行整体和隔离的测试。使用OWASP的Web安全测试指南可以帮助企业更有效地完成这个过程。
5
充分考虑应用的可移植性
PaaS应用安全的一个独特挑战是支持性(比如底层API、安全服务甚至语言选择)依赖。由于底层平台API接口限制,PaaS平台服务很少能够从一个PaaS“简易替代”成另一个竞争性平台。因此,企业应该优先选择使用一种多数服务提供商都能够支持的语言很重要。这有助于提高服务的可移植性、尽量避免应用锁定现象。C#、Python和Java等常用开发语言通常得到提供商们的广泛支持。
此外,企业还应该围绕特定API构件包装器,在应用程序或服务与底层特定API之间实施抽象层。这么做意味着,如果更换服务提供商,只需要进行一次更改即可。