前言
随着公有云和私有云的广泛部署,云计算基础设施成为企业部署新业务的首选。可以说,云计算已进入下半场,各大云计算服务商的厮杀日益激烈,新的概念也不断的层出不穷。近年来,云原生安全(Cloud Native Computing)越来越多地出现在人们的视野中,可以说,云原生安全是云计算的时代的下半场较量,我们可以将其称之为云计算2.0。随着越来越多的企业和服务上云,关于云的安全也日益严峻,根据 Statista 的数据,2023 年预计公有云市场将达到 5000 亿美元,2023 至 2027 年将有 13.81% 的年增长率,根据经济学里的 70 规则,不难计算出,这个增长率意味着每 5 年就会翻一番,也就是说到 2028 年可能这个市场就会到万亿的规模。当然这只是很简单的估算,以后也不一定真的会是这样,但有一点可以确定的是,这个市场目前正在快速扩张中,国内外都是如此。由于安全的伴生特性,云计算市场的发展,大概率会带动云安全的发展,也会带动攻防场景的变化和转移。在未来,在攻防领域,碰到有关于云环境的攻防肯定会越来越多,所以,云安全攻防也会发展成未来一个不可缺少的领域。
云原生
近年来,云计算模式逐渐被业界认可和接受。在国内,政府、金融、通信、能源在内的众多领域的大型企业和机构,以及各种中小企业均对其托管业务的基础设施进行了不同的程度云化。但它们大多数利用开源或者商业的IaaS系统构建云计算平台,只是简单的将传统的物理主机、平台和应用转为虚拟化的形态。这种方式所带来的好处是整体资源的利用更加合理,且集约式的运营会降低成本,提升整体运营效率和成熟度。在云计算的下半场,应该充分利用云计算的弹性、敏捷、资源池和服务化等特性,解决业务在开发、运行整个生命的周期遇到的问题。比如,传统环境中应用升级缓慢的、架构臃肿、无法快速迭代等问题,于是,云原生安全的概念应运而生。
谈到云原生安全,不得不提及的一个组织就是推动云原生发展的CNCF(Cloud Native Computing Foudation,云原生计算基金会)。CNCF是一个孵化、运营的云原生生态的中立组织,是一个覆盖面积相当广的云计算组织。
云原生的代表技术有容器、服务网格、微服务、不可变的基础设施和声明式的API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。云原生提倡应用的敏捷、可靠、高弹性、易扩展性以及持续更新。在云原生应用和服务平台的构建过程中,近年来兴起的容器技术凭借其高弹性、敏捷的特性以及活跃、强大的社区支持,成为云原生等应用场景下的重要支撑技术。无服务、服务网格等服务新型部署形态也在改变云端应用的设计、开发和运行,从而重构云上业务。
不同于虚拟化为基础的传统云计算系统,云原生系统一般有如下特征:
轻、快、不变的基础设施
在云原生环境中,支撑基础设施通常是容器技术。容器生命周期极短,大部分是以秒或者分钟为单位,占用的资源也比虚拟化小得多,所以容器的最大特点就是轻和快。而正是因为容器有轻和快的特点,在实践中通常不会在容器中安装或更新应用,而是更新为跟持久化的镜像,通过编排系统下载新镜像并启动相应的容器,并将旧的容器删除。这种只更新镜像而不改变容器运行时的模式称为不变的基础设施(immutable infrastructure)。从不变的基础设施就能看出,云原生的运营与传统虚拟机的运营方式截然不同。
弹性服务编排
云原生的焦点是业务,而非基础设施,而业务的最核心之处就是业务的管理和控制,如服务暴露、负载均衡、应用更新、应用扩容、灰度发布等。服务编排(orchestration)提供了分布式的计算、存储和网络资源管理的功能,可以按需、弹性地控制服务的位置、容量、版本,监控并保证业务的可访问性。服务编排对应用层的隐藏了底层基础设施的细节,但又提供了强大的业务支撑能力,以及让业务正常运行的容错、扩容、升级的能力,使开发者可以聚焦业务本身的逻辑。
开发运营一体
开发一体运营化(DevOps)是一组将软件开发和IT运营相结合的实践,目标在于缩短软件开发周期,并提供高质量的软件的持续交付。虽然DevOps不等同于敏捷开发,但它是敏捷开发的有益补充,很多DevOps的开发理念(如自动化构建和测试、持续交付等)来自敏捷开发。与敏捷开发不同的是,DevOps更多的是消除开发和运营一侧的隔阂,聚焦于加速软件的部署。
微服务架构
传统的WEB应用通常为单体应用系统,如使用WebSphere、WebLogic或.Net Framework等,从前端到中间件再到后端,各个组件一般集中式地部署在服务器上。后来随着Web Service 标准的推出,应用以标准的服务交付,应用间通过远程服务调用(RPC)进行交互,形成了面向服务的架构(Service-Oriented Architecture,SOA),极大提升了应用组件的标准化和系统集成效率。在云原生应用设计中,应用体量更小,因而传统单体应用功能被拆解成大量独立的服务。微服务架构使得每个服务聚焦在自己的功能上,做到小而精,然后通过应用编排组装,进而实现等价于传统单体应用的复杂功能。其优点是后续业务修改时间可复用现有的微服务,可以极大的减少重构开销。
无服务模型
无服务(Serverless)是一种基于代码和计算任务执行的云计算抽象模型,与之相对应的是基于服务器(虚拟机、容器)的计算模式。无服务在公有云和私有云上都有相对应的服务、如AWS Lambda、阿里云的函数计算、Kubernetes的Kubeless、Apache OpenWhisk等。无服务聚焦在函数计算、隐藏了底层复杂的实现方式,使开发者能够聚焦于业务本身。
总体而言,云原生真正以云的模式和管理部署资源,用户看到的将不是一个个IT系统或者虚拟的主机,而是一个个业务单元,开发者只需要聚焦于业务本身。可以说微服务的设计、无服务的功能是云原生理念的核心体现,而容器、编排、服务网格均是实现云原生的支撑技术。
参考:云原生安全:攻防实践与体系构建