云原生安全风险
随着云原生架构的快速发展,核心能力逐渐稳定,安全问题日趋紧急。在云原生安全领域不但有新技术带来的新风险,传统IT基础设施下的安全威胁也依然存在。要想做好云原生安全,就要从这两个方面分别进行分析和解决。
新技术带来新的安全风险
云原生的概念定义本身就比较抽象,从诞生到现在也经历了多次变化。2018年CNCF对云原生的概念进行了重定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。虽然这是云原生概念最新的定义,但是不同的人对云原生的抽象概念理解相差很大,一直在不断地争论。狭义的理解直接套用定义,认为定义之外的技术不属于云原生。广义的理解则认为定义不够贴切,应该从字面含义进行理解,认为只要是能利用云的特性,在软件工程各阶段提高效率,降低成本的行为、技术,都可以认为是云原生。
从普遍认知来看,云原生主要包括kubernetes和容器、微服务、云基础设施,其中kubernetes和容器在某种程度上已经是云原生的代名词。其中kubernetes和容器作为云原生时代的典型技术,也是带来风险最多的技术,包括:kubernetes组件漏洞、认证鉴权不规范、公开镜像存在漏洞、镜像被植入恶意程序、容器隔离被突破造成逃逸等。微服务在云原生时代快速发展,在内部风险无法防范的时候会扩大安全风险,造成横向攻击扩散。
传统IT基础设施的威胁依然存在
云原生不能脱离底层IT基础设施:计算、存储、网络而存在,因此这些IT基础设施面临的问题在云原生场景下依然存在。DDoS攻击防护、cc攻击防护、漏洞、木马、病毒、数据泄露等等安全风险,并没有因为云原生的发展而降低。
云原生安全构建
在云原生安全早期,人们的惯性思维就是利用传统的安全防护手段去进行云原生安全防护。经过这么多年的攻防对抗,传统产品在各自的领域都已经身经百战,解决对应的安全问题也都不在话下,这些安全产品通过简单地改造,就可以与云原生架构配合运行。
积木式云原生安全
这个阶段云原生安全并不存在一个完整的架构,各安全产品就像搭积木一样跟云原生架构进行配合。随着这个安全体系的构建,工程师门很快就发现,安全并没有因为云原生的到来发生什么改变,这种搭积木式的云原生安全方案,从远处看各方面的安全都能有,方案也很完整。但是从近处看就能看到安全产品之间基本没有联系,使用起来并没有什么改变,似乎安全和云原生就是两个独立的领域,无法支撑云原生快速发展的安全防护需求。
装配式云原生安全
随着在云原生安全方向上的深入研究,人们发现安全+云原生并不是简单组合一下就能变成云原生安全。要想做好云原生安全,就必须按照云原生的思想去思考安全问题怎么解决,云原生安全应该是一个整体,而不是各个割裂的安全产品。Gartner认为,全面保护云原生应用需要使用来自多个供应商的多种工具,这些工具很少得到很好的集成,而且通常只为安全专业人员设计,而不是与开发人员合作。对于组织而言,这种孤立的安全工具在面对实际安全风险的并不太有效,而且会导致过多的警报、浪费开发人员的时间。在这种趋势下,Gartner提出了CNAPP云原生应用保护平台,将多种安全工具紧密地结合在一起,以保护日益复杂的攻击面。
云原生的一个底层核心理念就是拆解、组合和标准化,这其实也是软件开发领域一个软件工程师长期追求的目标,即将业务逻辑和通用逻辑不断拆分,通用逻辑逐渐独立标准化,开发人员只需要关注自身业务逻辑。kubernetes从业务应用的角度将通用逻辑拆解,解决业务场景灵活多变的问题。不可变基础设施作为云原生定义的四大要素,是最容易被忽略的,但是这个理念却是云原生能够持续发展的核心,极大地降低了云原生的复杂度,将标准化发挥到极致。这两个核心技术都是底层理念的表现。这个理念跟装配式建筑十分类似,把传统建造方式中的大量工作转移到工厂进行,在工厂加工制作好建筑配件(如楼板、墙板、楼梯、阳台等),运输到建筑施工现场,通过可靠的连接方式在现场装配安装而成的建筑。这种方式不仅建筑速度快,工业化质量也有保障。
装配式云原生安全,就是按照云原生的核心理念,将各安全能力进行拆分、标准化改造、再组合。各安全能力不只是简单的堆叠,通过云原生技术可靠地连接在一起,让每个业务应用从诞生开始,就具备合适的安全能力,实现发布即安全。相比积木式能力组合,这种方式可以让安全和业务实现深入且自由地组合,形成灵活又可靠的云原生安全。
应用按照时间维度可分为开发、测试、部署、运行、响应,空间维度可分为主机、操作系统、kubernetes、容器、服务、网络,从这两个维度出发,将各种安全能力进行拆解和组合,通过统一的云原生安全平台进行管理,真正将安全和业务的各个阶段都能紧密地连接在一起,才能形成真正的云原生安全。
作者:京东科技 李卓嘉
来源:京东云开发者社区 转载请注明来源
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。