技术分享
云端安全挑战:探析云原生架构下的安全困境
发布时间 · 2024-08-06

 什么是云原生?

云原生是一种设计和构建应用程序的方法,让企业能够依托“云”的弹性与分布式的特点,部署云上业务,充分利用云计算技术和云基础设施的优势,使业务更敏捷、可控性更强。

01.CNCF(云原生计算基金会)的定义

 



 云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。

这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。

02.云原生技术的崛起

近十年来,云计算的迅速发展推动了传统产业的数字化转型,企业的基础设施资源也逐步从传统的服务器向云资源发展,并正进入云原生计算阶段。

Gartner在2021年的一份报告中曾预测,部署在云原生平台上的工作负载占比将从当时的30%上升至2025年的95%;McKinsey Digital也曾在2022年的一篇文章中表示,在他们的一份调查中,11%的中国公司计划将公有云作为主要的业务模式,49%计划向云原生转变,其他公司将继续使用混合云或私有云与传统服务器相结合的方式。

03.企业在转型过程中面临哪些安全挑战?

在企业转型的过程中,应用程序将从传统的单体架构向微服务架构发展。云计算模式也相应将从IaaS(基础设施即服务)转向CaaS(容器即服务)和FaaS(功能即服务)。

IT技术架构的转变会带来新的基础设施的应用,也将带来很多不同于传统应用程序的新风险。

Kubernetes官方团队采用系统分层架构的方法,将云原生安全总结为4C模型,分别是云或基础设施层(Cloud)、Kubernetes集群层(Cluster)、容器层(Container)、代码层(Code)。通过这个模型,我们可以对云原生安全有一个初步的认识。

模型中的每一层安全防护都建立在外层的基础上,如果没有Cloud层、Cluster层、Container层的安全防护,Code层的防护将形同虚设。

 

Figure 3 Kubernetes提出的云原生安全的4C模型

另外,我们也可以采用一个更具体的角度分析与云原生技术相关的安全风险,分别是:容器基础设施存在的风险、容器编排平台存在的风险、云原生应用存在的风险和宿主机层面存在的风险。可参考下图:

 

Figure 4云原生环境面临的风险

 

04.容器基础设施存在的风险

 主要涉及到两点:容器镜像存在的风险;容器本身存在的风险。

容器镜像存在的风险:容器一般都是基于基础镜像创建的,因此如果镜像存在安全问题,那么以其为模板创建的容器也将会继承这些问题。除了镜像库中的官方镜像,攻击者还可能将含有恶意程序的镜像上传至公共镜像库,诱导用户下载并在生产环境部署运行;攻击者还可能利用镜像仓库本身存在的漏洞上传恶意镜像或篡改其他镜像,这些恶意操作都将生产环境带来极大的风险。

容器本身存在的风险:在运行容器时,管理员可能由于某些原因对容器赋予特殊权限(如—privileged,--cap-add=SYS_ADMIN等),或进行不安全的配置或挂载(如挂载Docker Socket或procfs等),如果未对这些容器进行实时监控或权限控制等,就有可能造成容器逃逸。在攻击者利用漏洞成功逃逸后,还可能在环境中部署后门容器,从而造成更大的危害。

05.容器编排平台存在的风险

 主要涉及编排系统的不安全配置,编排系统自身的漏洞及容器基础设施存在的风险等。

容器编排平台的不安全配置:如攻击者可以利用暴露的Kube API Server insecure-port控制K8s总控组件,并获取其他容器交互式Shell

容器编排平台自身的漏洞:如攻击者可利用CVE-2018-1002105构造一个特殊请求,借助Kubernetes API Server作为代理,建立到后端服务器的链接,从而以Kubernetes API Server的身份向后端服务器发送任意请求,达到权限提升的目的。

06.云原生应用存在的风险

 除传统应用存在的风险外,还涉及微服务化架构带来的风险与无服务器计算带来的风险两点。

微服务化架构可以帮助我们构建高效、灵活的分布式系统,但正是由于这种特性,微服务的网络访问存在许多入口点,很可能存在不安全的权限控制,各服务间的访问控制也存在一定的风险。

Serverless架构可以帮助开发者完成构建服务运行环境,开发者可以直接使用云厂商提供的基础设施资源和后端服务组件。由于开发者可以上传自己的代码到服务端,也可以更改应用配置等,因此Serverless安全问题相对更复杂,存在的安全风险涉及云厂商和用户双方。

如果从攻防角度分析云原生环境所面临的风险,我们可以发现在新的环境下,攻击者的攻击手段也将发生很大的转变,下图为MITRE ATT&CK提供的基于云环境的攻击矩阵。

 

 

Figure 5 MITRE ATT&CK云攻击矩阵

除此之外,我们也可以参考腾讯安全云鼎实验室推出的云安全攻防矩阵。

 

Figure 6 云安全攻击矩阵

该矩阵围绕云原生环境,给出了涉及云安全的各种攻击技术,可以看出,虽然整体的ATT&CK框架与传统攻防矩阵相同,但其中的攻击手段已经出现了很大的变化。在云攻防中,企业对外暴露的资产更多,攻击面与传统攻防相比更广,攻击复杂度更高,攻击者的攻击路径也更多变。下图为云原生环境下的一条典型渗透路线。

 

Figure 7 云原生环境渗透路线

07.企业内的云原生安全风险

23年7月,火山引擎与FORRESTER联合发布的《中国云原生安全市场现状及趋势白皮书》中调查到的企业经历的云原生相关安全风险及事件TOP 8如下:

 

Figure 8 《中国云原生安全市场现状及趋势白皮书》内容

由于云原生架构采用微服务、容器化等技术,相比于传统架构涉及到的组件数量更多,除了传统环境下的安全问题,如漏洞利用、越权、数据泄露与篡改等,云原生环境下会涉及到更多如容器逃逸、Docker/Kubernetes相关漏洞利用、镜像投毒等的攻击手法。

08.云原生环境下,企业应当如何布防?

在日常运维开发中相关人员应提高安全意识,确保镜像的安全性,针对容器或集群及时调整不安全的配置、不安全的访问控制权限等存在风险的操作并持续监测。

加强对云原生基础设施内、云原生环境中运行的应用内数据的保护,降低数据泄露的可能性。

定期梳理清点企业对外暴露资产,消除容器层面资产盲点,并进行风险评估,及时管理并修复潜在的安全问题、

运维人员需要对集群网络进行严格的网络隔离,从而尽可能减少攻击发生时,攻击者可利用的攻击路径。

持续监测集群节点内、容器内进程,及时发现异常行为,有针对性地进行修复。

定期进行攻防演练,评估企业针对云原生环境的安全防护能力。

 

 参考资料   

https://mp.weixin.qq.com/s/E80rPELOmWQYDz69xEQWqA

https://www.geeksforgeeks.org/monolithic-vs-microservices-architecture/

https://kubernetes.io/docs/concepts/security/overview/

https://virtocommerce.com/blog/ecommerce-hosting

https://kuboard.cn/learning/k8s-advanced/sec/overview.html#云原生-4c-安全模型

https://cloud.tencent.com/developer/article/2319889?areaId=106005

https://cloud.tencent.com/developer/article/2319884

https://cloudsec.tencent.com/home/

https://attack.mitre.org/matrices/enterprise/cloud/

https://finance.stockstar.com/IG2023112700005833.shtml

《云原生安全——攻防实践与体系构建》

《中国云原生安全市场现状及趋势白皮书》