随着云计算技术的不断发展,当前绝大多数企业正在数字化转型的道路上砥砺前行,其中企业上云是必经之路,在相应实践过程中,传统应用存在升级缓慢、架构臃肿、无法弹性扩展及快速迭代等问题,于是近年来云原生的概念应运而生,凭借着云原生弹性、敏捷、资源池和服务化等特性,解决了业务在开发、集成、分发和运行等整个生命周期中遇到的问题。
云原生环境中,应用由传统的单体架构转向微服务架构,云计算模式也相应的从基础设施即服务(Infrastructure as a Service,IaaS)转向为容器即服务(Container as a Service,CaaS)和函数即服务(Function as a Service,FaaS)。
应用架构和云计算模式的变革是否会导致进一步的风险?这些风险较之传统应用风险又有哪些区别?《云原生安全:攻防实践与体系构建》书籍中提出以下三个观点,这些观点有助于各位读者较好的理解云原生应用安全层的风险。
云原生应用继承了传统应用的风险和API的风险
云原生应用源于传统应用,因而云原生应用风险也就继承了传统应用的风险。此外,由于云原生应用架构的变化进而导致应用API交互的增多,可以说云原生应用中大部分交互模式已从Web请求/响应转向各类API请求/响应 ,例如RESTful/HTTP、gRPC等,因而API风险也进一步提升。
应用架构变革将会带来新的风险
由于应用架构变革,云原生应用遵循面向微服务化的设计方式,从而导致功能组件化、服务数量激增、配置复杂等问题,进而为云原生应用带来了新的风险。
计算模式变革将会带来新的风险
随着云计算的不断发展,企业在应用的微服务化后,会进一步聚焦于业务自身,并将功能函数化,因而出现了无服务器计算(Serverless Computing)这类新的云计算模式,进而引入了Serverless应用和Serverless平台的新风险。
综上,我们可以看出云原生应用带来的风险是不容小觑的,《云原生安全:攻防实践与体系构建》书籍中将从传统应用风险、应用架构变革带来的新风险、云计算模式变革带来的新风险三个维度为各位读者分别进行介绍,希望可以引发各位读者更多的思考。
传统应用面临的风险
由于云原生应用也是应用,因而云原生应用风险可以参考传统应用风险,传统应用风险则以Web应用风险为主,主要包含注入、敏感数据泄露、跨站脚本、使用含有已知漏洞的组件、不足的日志记录和监控等风险。
此外,云原生环境中,应用的API交互模式逐渐由“人机交互”转变为“机机交互”,虽然API大量出现是云原生环境的一大特点,但本质上来说,API风险并无新的变化,因而其风险可以参考现有的API风险,主要包含安全性错误配置、注入、资产管理不当、资源缺失和速率限制等风险。
有关传统应用风险和API风险的更多细节可以参考《云原生安全:攻防实践与体系构建》书籍中相关章节。
应用架构变革带来的新风险
云原生应用面临的新风险主要“新”在哪里,笔者看来“新”主要体现在新应用架构的出现,我们知道,新应用架构遵循微服务化的设计模式,通过应用的微服务化,我们能够构建容错性好、易于管理的松耦合系统,与此同时,新应用架构的出现也会引入新的风险,为了较为完整地对风险进行分析,《云原生安全:攻防实践与体系构建》书籍中以信息系统安全等级三要素(机密性、完整性、可用性)作为导向为各位读者介绍了应用架构变化带来的新风险。
机密性受损的风险
典型的如信息泄露风险,攻击者可通过利用资产脆弱性和嗅探、暴力破解等攻击方式窃取用户隐私数据,从而造成信息泄露风险。
云原生环境中,虽然造成应用数据泄露风险的原因有很多,但都离不开以下几个因素:
应用漏洞:通过资产漏洞对应用数据进行窃取。
密钥不规范管理:通过不规范的密钥管理对应用数据进行窃取。
应用间通信未经加密:通过应用间通信未经加密的缺陷对传输中数据进行窃取,进而升级到对应用数据的窃取。
完整性受损的风险
典型的如未授权访问风险,攻击者可通过利用资产脆弱性和中间人攻击等行为绕过系统的认证授权机制,执行越权操作,从而造成未授权访问的风险。云原生环境中,应用未授权访问的风险多是由于应用自身漏洞或访问权限错误的配置导致。
可用性受损的风险
典型的如系统被拒绝服务的风险,一方面,攻击者可通过畸形报文、SYN泛洪等攻击方式为目标系统提供非正常服务,另一方面,系统供不应求的场景也会导致系统遭受拒绝服务风险。
被拒绝服务是应用程序的面临的常见风险,笔者看来,造成拒绝服务的主要原因包含两方面,一方面是由于应用自身漏洞所致,例如ReDoS漏洞、Nginx拒绝服务漏洞等。另一方面是由于访问需求与资源能力不匹配所致,例如某电商平台的购买API由于处理请求能力有限,因而无法面对突如其来的大量购买请求,导致了平台资源(CPU、内存、网络)的耗尽甚至崩溃,这种场景往往不带有恶意企图,而带有恶意企图的则主要以ACK、SYNC泛洪攻击及CC(Challenge Collapsar)等攻击为主,其最终目的也是应用资源的耗尽。
云计算模式变革带来的新风险
首先,作为一种新的云计算模式,Serverless具备许多特性,典型的主要有输入源的不确定性、服务器托管云服务商、供应商锁定等,这些特性可能会给Serverless带来新的风险。
其次,由于Serverless最终呈现的还是多个函数组成的应用,且被Serverless提供的服务端运行,因此Serverless风险还应包括Serverless应用的风险及Serverless平台的风险。
最后,Serverless因购买、部署成本低、函数访问域名相对可信等将会使Serverless面临被滥用的风险。
总结
针对以上提到的云原生应用新风险,可以看出,云原生应用相比传统应用面临的风险主要为应用架构变革及新的云计算模式带来的风险,而针对应用本身的风险并无较大变化,因而对云原生应用架构和无服务器计算模式的深度理解将会有助于理解整个云原生应用安全。为方便读者阅读,《云原生安全:攻防实践与体系构建》书籍中为每类风险提供了相应的攻击实例,其中包含背景介绍、漏洞成因、利用过程等详细内容,由于篇幅限制,实例中涉及的源码已上传至Github仓库(https://github.com/brant-ruan/cloud-native-security-book),供感兴趣的读者深入阅读与实践,在阅读期间若有任何问题欢迎随时联系作者。
本文选自《云原生安全:攻防实践与体系构建》,经出版方授权发布。
本文来源于互联网:云原生安全: 攻防实践与体系构建