云原生是一种设计和构建应用程序的方法,让企业能够依托“云”的弹性与分布式的特点,部署云上业务,充分利用云计算技术和云基础设施的优势,使业务更敏捷、可控性更强。
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云攻击矩阵
除此之外,我们也可以参考腾讯安全云鼎实验室推出的云安全攻防矩阵。