当前位置:首页 > 问答 > 正文

云原生业务安全真不容易,怎么撑得住这复杂环境下的各种风险呢

“云原生业务安全真不容易,怎么撑得住这复杂环境下的各种风险呢”,这句话真是道出了很多技术人和管理者的心声,以前的应用,就像把家当都放在一个固定的保险箱里,虽然也有风险,但好歹知道箱子在哪,锁有几把,看管起来目标明确,现在可好,云原生技术一来,业务变成了活物,像是一大群游来游去的鱼,或者像《哈利波特》里那些会自己移动的楼梯,整个环境是动态的、瞬息万变的,安全防护的难度系数简直是几何级数上升。(这个比喻常被用来形容传统安全与云原生安全的区别)

攻击面变得太广了,以前主要防服务器、防网络边界就行,现在呢?根据一些云安全专家的分析(例如山姆·科克兰德在讨论云安全挑战时提到的观点),一个微服务应用,动不动就几十上百个服务实例,每个实例都是一个潜在的突破口,再加上那些用来管理和编排这些服务的组件,比如Kubernetes的API Server、etcd等等,它们本身要是出点问题,那整个系统都可能瘫痪,这还没算上容器镜像仓库、持续集成/持续部署(CI/CD)的流水线,这些环节一旦被渗透,攻击者就能直接把“后门”打包进你的应用里,真是防不胜防,感觉处处都得盯着,一不小心就漏了。

东西向流量的安全太难管控了,传统网络安全讲究“边界防御”,在入口处筑起高墙,但云原生环境里,服务之间需要频繁通信,流量主要在内部网络流动,这就是东西向流量,就像一个大办公室,以前只有一个大门需要保安,现在变成了开放式办公,每个工位之间的人可能都要互相传递文件,你怎么知道哪个传递是合法的?哪个是内鬼在窃取资料?虽然有什么服务网格(比如Istio)能做些细粒度的访问控制,但策略制定和管理起来极其复杂,规则一多,很容易配置错误,反而把自己给“锁死”或者留下漏洞,业内报告(例如Palo Alto Networks的Unit 42威胁研究报告)经常指出,配置错误是云环境中最常见的安全问题来源。

这种动态性让安全工具都跟不上趟儿,传统的安全扫描器,可能一天扫一次系统漏洞就了不起了,但云原生环境里,服务实例可能几分钟就启动或销毁一个,等你的扫描器发现它的时候,它可能已经不见了,或者新的漏洞已经产生了,这就好比你想给一群正在赛跑的运动员做体检,但他们根本停不下来,你很难抓到一个人进行完整的检查,这就要求安全检测必须做到实时性,要能融入到应用部署、运行的每一个瞬间,这对技术和流程都是巨大的挑战。

还有一点很要命,就是责任共担模型下的模糊地带,云服务商(比如AWS、阿里云)会说自己负责底层基础设施的安全,“云本身的安全”,但客户要负责“在云上的安全”,包括操作系统、应用、数据这些,话是这么说,但实际界限哪有那么清晰?比如一个托管版的Kubernetes服务,云商管了控制平面,但工作负载的安全配置、镜像漏洞、访问密钥管理这些重担还是落在用户自己身上,很多人可能根本没完全搞清楚自己该负责什么,以为上了云就高枕无忧了,结果出了事才发现责任是自己的,这种认知上的差距本身就是一种风险。

人的能力和意识跟不上,搞云原生开发的,可能更关注怎么实现功能、怎么快速迭代;运维的关注点可能在稳定性、性能,安全往往被当成一个后期才考虑的“附加项”,甚至是一个拖慢进度的“绊脚石”,要想真正撑住安全,就得要求开发、运维、安全团队紧密协作,也就是搞什么DevSecOps,把安全左移,在写代码、做镜像的时候就考虑进去,但说起来容易做起来难,改变工作习惯、学习新工具、打破部门墙,哪一样都不是轻松的事,没有全公司层面的重视和推动,光靠安全团队几个人在后面追着补漏洞,根本不可能撑得住。

回到开头那句话,“云原生业务安全真不容易”绝对不是矫情,它难就难在环境太复杂、变化太快、牵扯的环节太多,要想撑得住,真的不能再用老一套的静态安全思路了,必须得用动态的、自动化的、贯穿始终的思维和方法,从技术到流程再到人,全方位地构建防御体系,这绝对是一场硬仗,而且是一场持续不断的硬仗。

云原生业务安全真不容易,怎么撑得住这复杂环境下的各种风险呢