一、云原生技术的背景与优势
数字化变革已逐渐渗透到每一个具体产业,弹性算力已成为各行各业的“水电煤”,云计算则成为数字化世界的基石,从底层驱动产业变革。随着云计算发展进入成熟阶段,以“生在云上、长在云上”为核心理念的云原生技术被视为云计算未来十年的重要发展方向。
在数字化大潮中,上云并非是一种时尚,而是一种刚需。从“上云”到“全面上云”,从“云化”到“云原生化”,是企业数字化转型的必由之路。相较传统IT架构,云原生具有无法比拟的优势,将为企业带来降低成本、提升效率、快速试错、促进创新等业务增益价值。
云原生的技术理念始于一些大型厂商在公有云上的开发和部署实践。这些实践推动了云原生技术的不断发展和完善。随着云原生计算基金会(CNCF)的成立,云原生技术从最初的技术理念逐渐转化为开源实现,为更多企业提供了可借鉴和参考的模板。
云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。
云原生的运用使本身复杂多变的企业业务可敏捷灵活、及时响应、快速迭代,从而让数字化转型和运营过程中的持续创新成为可能。目前业界较为认可的构成云原生的四大核心技术要素是微服务、DevOps、持续交付和容器化。这些技术要素共同构成了云原生技术的核心框架,推动了云原生技术的广泛应用和发展。
原生技术能够有效解决传统云实践中应用升级缓慢、架构臃肿、无法快速迭代等“痛点”问题,并为业务创新提供动力。通过采用云原生技术,企业可以更加高效地管理和利用计算资源,提高业务系统的可靠性和可扩展性,从而为企业的发展提供强有力的支撑。
二、云原生环境的网络隔离诉求
云原生技术在创造效益的同时,也面临着切实存在且日益严峻的安全风险。由于微服务架构的复杂性,不同服务之间的通信和数据传输成为攻击者潜在的攻击目标。因此,如何在云原生环境下实现微服务的安全隔离,成为了一个亟待解决的问题。
Gartner提出的容器安全控制分层理论,将容器安全能力按照优先级由高至低分为基础控制(Foundational Controls)、基本控制(Basic Controls)和基于风险的控制(Risk-Based Controls)。其中,网络隔离(L3 Network Segmentation)被划分为必备的基础控制能力。
CNCF发布的《云原生安全白皮书》也指出,作为微服务部署的容器化应用程序的边界就是微服务本身。因此,有必要设定策略,只允许在得到许可的微服务间进行通信。在微服务架构中引入零信任,可以在一个微服务被攻陷时阻止其横向移动,从而缩小影响范围。
运维人员应确保他们正在使用网络策略等功能,确保一个容器部署内的东西向网络通信只限于授权网络。这要求云原生环境下的网络隔离技术必须能够满足细粒度、动态适应和高效管理的需求。
三、传统防火墙在云原生中的局限性
在传统数据中心中,基于防火墙的域间控制是实现安全隔离的重要手段。然而,随着云平台向云原生架构演进迁移,基于防火墙进行域间控制已显得与云原生环境格格不入,无法真正满足容器平台的隔离需求。
防火墙的部署位置和控制对象决定了其仅能针对跨域流量进行控制,而无法实现更细粒度的业务级、工作负载级控制。此外,鉴于策略规模对防火墙性能的影响,其安全策略的控制对象往往仅能做到网段级。因此,确切来说,此类方案至多能够提供用于维护数据中心基础架构完整性的“宏分段(Macro-Segmentation)”,而无法实现云原生环境中真正所需的“微隔离(Micro-Segmentation)”。
此外,稳定不变的IP地址是防火墙访问控制持续生效的“锚点”,而在云原生环境中,容器IP的频繁无规律变化则彻底动摇了传统架构中这一确定因素。一旦容器开始新的生命周期,新的IP将直接逃逸原有静态策略的有效管控。与此同时,由于容器的消亡与新建在云原生环境中是高频发生的,即便能够实时感知其变化,依靠人工删除原有策略并建立新的策略也毫无可能,而已失效的策略长时间堆积,又势必带来防火墙系统策略冗余、性能下降的副作用。
云原生环境中,微服务的架构势必指数级的增加服务间的互访调用情况和横向连接关系,给原本就复杂度较高的东西向流量控制又带来了新的难度。在DevOps的加持下,应用敏捷、快速、持续交付部署,而安全控制措施则必须找到合适的切入点,并跟上瞬息万变的节奏。
由此看来,即便放弃用防火墙实现集群内流量微隔离的预期,其在云原生环境中也难以起到集群间流量的有效隔离控制作用,在云原生架构下甚至已经失去了原先的部署位置。事实上,开始规模化部署容器的用户,往往在第一时间即发现了防火墙系统几乎彻底失效的问题,从而释放出更为迫切的隔离控制需求。
四、现有容器云平台隔离方案分析
针对云原生环境下的微服务安全隔离需求,业界已经提出了一些现有的隔离方案。这些方案各有优缺点,需要根据具体的应用场景和需求进行选择和优化。
1. 基于Network Policy的容器隔离
Kubernetes(K8S)作为容器编排平台的事实标准,通过集成Network Policy功能提供了容器间的网络隔离能力。在K8S中,Network Policy定义了一组Pod之间的访问控制规范,其通过Label指定Namespace和Pod,并利用节点(Node)主机操作系统的IPTABLES实现Namespace和Pod级的网络访问控制。
与外挂式的防火墙相比,Network Policy实现了原生化的安全能力内嵌,但大量实践表明,对于多数用户而言其运用落地依然受到较大制约。这主要体现在以下几个方面:
- 环境适应性的局限:Network Policy只定义了策略规则的规范,而访问控制能力的具体实现则需依赖K8S平台的网络插件。然而,并非所有流行的K8S网络插件都支持Network Policy功能。例如,相当一部分用户使用的Flannel插件即无法支持该项功能。对于多数用户而言,为了实现Network Policy能力而替换迁移原网络插件的成本无疑是高昂的。
- 规模化管理难度大:Network Policy仅在商用版才提供了流量可视化能力,对于开源版用户而言,不得不在未了解流量关系的情况下“盲配”安全策略,准确性和效率将大大降低。且随着管理规模的增大,定制贴合业务、符合最小特权原则的安全策略则越来越不可能。同时,在规模较大的容器环境中,东西向连接关系极其复杂,管理者制定策略规则时“首发命中”的可能性微乎其微,安全策略从设计到执行通常需要仿真测试、细化调优等阶段,否则大概率发生的误阻断将直接造成服务间的调用失败。
2. 主机代理形态的工作负载微隔离
主机代理形态的工作负载微隔离方案通过在每个主机上部署代理程序来实现对容器间通信的细粒度控制。这种方案可以根据容器的标签、IP地址、端口等信息来制定访问控制策略,从而实现微服务之间的安全隔离。
然而,主机代理形态的工作负载微隔离方案也存在一些局限性。首先,代理程序的部署和管理需要额外的资源和成本。其次,代理程序可能会成为单点故障,一旦代理程序出现问题,将影响整个主机上容器的通信。此外,由于代理程序需要处理所有的网络通信,因此可能会对容器的性能产生一定的影响。
五、理想的容器云平台安全隔离解决方案
针对现有容器云平台隔离方案的局限性,我们需要提出一种理想的容器云平台安全隔离解决方案。这种方案应该能够充分适应云原生环境特性,提供可靠的策略设计辅助和完善的策略管理能力,同时结合持续监控和自动化响应机制,确保在发生安全事件时能够及时发现并处置。
1. 充分适应云原生环境特性
理想的容器云平台安全隔离解决方案应该能够充分适应云原生环境特性,包括容器的动态性、微服务架构的复杂性以及东西向流量的复杂性等。这要求解决方案必须能够实时感知容器的变化,并动态调整隔离策略。同时,解决方案还需要支持细粒度的访问控制,能够根据不同的业务需求和安全要求制定个性化的隔离策略。
2. 提供可靠的策略设计辅助
在设计隔离策略时,工程师需要考虑到各种可能的攻击场景和威胁模型。然而,对于大多数工程师而言,制定一个既安全又高效的隔离策略是一项具有挑战性的任务。因此,理想的容器云平台安全隔离解决方案应该提供可靠的策略设计辅助工具,帮助工程师快速制定并优化隔离策略。这些工具可以包括策略模板、策略分析器、策略模拟器等,能够帮助工程师更好地理解业务需求和安全要求,从而制定出更加合理和有效的隔离策略。
3. 具备完善的策略管理能力
随着容器云平台的不断发展和扩展,隔离策略的数量和复杂性也将不断增加。因此,理想的容器云平台安全隔离解决方案应该具备完善的策略管理能力,能够支持策略的集中管理、动态更新和自动化执行。这要求解决方案必须能够提供一个易于使用和管理的界面或工具,允许工程师方便地查看、修改和删除隔离策略。同时,解决方案还需要支持策略的自动化执行和监控,能够实时检测并响应违反隔离策略的行为。