1.4.2 如何降低安全运营成本
在前面的小节中,我们提到在应对短生命周期的容器环境时,防守者会调整异常检测、行为分析的机制。但这种技术路线有两个问题:第一是成本较高,对大量容器中的进程行为进行检测、分析、规则匹配会消耗宿主机大量的处理器和内存资源,日志传输会占用较多网络带宽,行为检测则会消耗平台侧很多计算资源;第二是存在误报,虽然微服务场景下容器运行的进程行为模式可预测度较高,但比如从CPU占用率的特征来判断是否运行了挖矿软件,显然会造成很多误报,而当环境中容器数量巨大时,对应的安全运营成本就会急剧增加。
安全的本质在于对抗以及攻防投入产出比的平衡。从攻击方的视角看,由于容器的短生命周期,攻击容器的代价较高,而收益较小;但对第三方软件库、项目依赖的镜像“投毒”的持久化代价较小,而其收益远高于攻击容器。
那么从防守者的视角看,如何在降低安全运营成本的同时,提升安全防护效果呢?这两年,业界有一个词比较流行:Shift Left(安全左移)[1]。将软件的生命周期从左到右展开,即开发、测试、集成、部署、运行阶段,安全左移的含义就是将安全防护从传统运行时运营(Ops)转向开发侧(Devs)。
早期防微杜渐的成本永远小于一溃千里后再修复的代价,而且往往发现问题越早,修复效果越好,这种经验在很多场合下都是适用的。以云原生的场景为例,白盒代码的审计难度远远小于对黑盒服务的渗透测试和安全评估,而且由于能掌握代码的跳转逻辑、参数信息,其准确率也相当高;检查镜像的文件系统脆弱性的难度远远小于运行时的恶意攻击检测,而且由于掌握精确的版本和漏洞信息,能够准确知道攻击者的尝试是否成功,效果远好于网络侧的入侵检测。
因此,安全团队要想降低云原生场景下的安全运营成本,提升运营效率,那么首先就应考虑防护思路的转换,贯彻“安全左移”的策略,从重视运行时安全转向先从开发侧解决最基本和最容易的问题。
[1] 有一家做容器安全的公司就叫ShiftLeft,这家公司进入了RSA 2019年大会的创新沙盒决赛。