1.1 云原生安全的挑战
云原生是什么?在了解云原生安全之前,我们先来看一看云原生的定义。下面是来自云原生计算基金会(Cloud Native Computing Foundation,CNCF)的官方定义:“云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统做出频繁和可预测的重大变更。”
各云服务商和研究机构对云原生也有自己的定义。从技术角度出发,云原生包含松耦合、弹性可扩展的分布式架构,标准化、自动化的组织和开发流程变革及蕴含无限按需计算能力的动态基础设施。从广义上说,云原生是帮助用户获得云计算在性能和成本上最大红利的软件开发方式,包括因为云计算的引入而带来的技术、文化、组织架构和方法论的认知升级等,而包括云原生安全在内的服务化的云原生产品也都可以包含在这个因云而生的范围内。
对于使用云原生的用户来说,安全一直是企业上云首要关切的问题。随着云原生对云计算基础设施和企业应用架构的重定义,传统的企业安全防护架构也面临着新的挑战。比如传统的基于边界的安全模型中对静态标识符(比如IP地址)的依赖在云原生场景下不再可行,需要企业安全防护更接近基于属性和元数据(比如应用标签等)识别不断变化的动态负载,并采取对应的保护措施,同时要求安全体系能够自适应云原生应用的弹性规模,这些转变都要求在企业应用生命周期和安全设计架构中实施更多自动化的安全控制,在身份体系、资产管理、认证、鉴权、威胁分析监测和阻断等安全架构设计上都需要做出对应的云原生化改造。攻击者针对云原生平台和应用的攻击手段还在不断进化中,但是威胁发生的场景总体可以分为云原生平台基础设施、DevOps软件供应链和云原生应用范式三大类。
1.1.1 云原生平台基础设施的安全风险
容器编排架构是云原生应用部署的核心引擎,也是云原生平台基础设施的关键组件。容器技术基于Linux内核namespaces和cgroups等特性,从安全防御角度看,容器技术给整个系统架构引入了新的攻击层,攻击者可以利用操作系统内核漏洞、容器运行时组件和编排系统组件的安全漏洞及不当配置发起多个维度的针对性逃逸和越权攻击。而近年来Kubernetes、Containerd、Istio等云原生核心社区项目也爆出了不少高危漏洞,这些漏洞给攻击者提供了可乘之机,也侧面说明了云原生平台基础设施组件已经成为攻击者重点关注的目标。
与此同时,云原生平台层组件相较于传统架构引入了更多的配置项和隔离层,这就给企业安全管理运维人员提出了更高的运维要求。如何保证平台基础设施层的默认安全性,如何在遵循最小化权限原则的基础上进行授权操作,如何建立云原生应用系统的安全审计和监控能力,这些新的挑战的应对之策都需要云服务商和企业安全管理运维人员协同构建并最终实施到企业云原生化转型后的系统应用架构中。
1.1.2 DevOps软件供应链的安全风险
云原生弹性、敏捷和动态可扩展等特征极大地改变了传统应用的部署模式,应用自身的生命周期被大幅缩短,云原生应用的生命周期通常是分钟级,而云原生可编程和不可变的基础设施支持应用制品的快速构建、部署和更新,也极大提升了企业应用的迭代效率。
在传统的软件开发流程中,安全人员通常是在系统交付之前才开始介入并进行安全审核工作的,这样的安全措施显然已无法满足云原生时代软件供应链的快速流程。也就是说,采用DevOps可以有效地推进快速频繁的开发周期(有时全程只有数周或数天),但是过时的安全措施则可能会拖累整个流程,即使较高效的DevOps计划也可能会放慢速度。为此,来自Gartner的分析师David Cearley在2012年首次提出了DevSecOps的概念。相较于传统的软件开发安全流程,DevSecOps强调从企业安全文化意识、安全流程左移及构建全链路的自动化流程等方面来加固新时期下的企业软件供应链安全。Gartner预测,到2025年将有60%的企业采用DevSecOps和不可变基础设施。
1.1.3 云原生应用范式的安全风险
云原生促进了服务网格项目的飞速发展,也让微服务架构在云原生应用架构下更加普及。在微服务架构下,服务之间的网络流量更多使用东西向,传统架构下基于南北向流量的安全边界防护模式已经不再适用。另外,服务之间需要更加细粒度的身份认证和访问控制,单点的不当授权配置可能引发全局维度的越权攻击。与此同时,微服务暴露的大量API也可能暴露更多的风险面,诸如数据泄露、注入攻击、DoS攻击等风险屡见不鲜。微服务应用引入了大量的开源软件和管理面组件,其中不断爆出的高危安全漏洞也是威胁整个系统安全的关键。
除了微服务架构,云原生还推动了Serverless和函数计算等技术的蓬勃发展。一方面Serverless和函数计算帮助屏蔽了K8s等云原生应用编排系统复杂的管理运维门槛,另一方面也让安全、弹性、可用性等云原生关键特性需求下沉到云服务商基础设施层实现,进一步降低了企业在应用层面的运维负担。与此同时,需要云服务商在基础设施层面具备相匹配的安全隔离和监控能力。
应用的容器形态改变了传统模式下基于节点和进程维度的安全运营与资产管理方式,随着云原生存储、网络及异构资源利用率等计算能力的提升,应用在节点上的部署密度也以指数级提高,需要新的运行时安全监控告警和资产管理模式与之对应。
鉴于上述安全挑战,可以说以云原生为背景的安全工具和技术有巨大的需求与市场,同时企业普遍缺乏具有相应安全和云原生专业背景的人才。而随着企业云上应用云原生化改造的持续进行,可以说云原生架构注定会在很长一段时间继续成为攻击者的重点攻击渗透目标。与之对应,云原生安全的发展势在必行,其中以eBPF为代表的核心技术手段势必会在云原生安全防御体系中扮演越来越重要的角色。