1.3.3 安全左移
安全左移(Shifting Security Left)通常指的是将安全工作(代码审查、分析、测试等)提前到软件开发生命周期(Software Development Life Cycle,SDLC)的早期阶段,从而防止缺陷产生并且尽早找出漏洞。通过在早期阶段修复问题,可以防止其演变为需花费巨资加以修复的灾难性漏洞,以达到节省时间和资金的目的。
在白环境理念中,要求提前考虑安全,提前对安全相关工作进行准备。这点和安全左移的理念类似,但范围更广、内涵更多。在之前的一些项目中,笔者曾经历过一些安全事件的应急处理。在安全事件发生后,安全人员和运维人员才开始对涉及的主机进行了解,对涉及的网络连接是否正常进行排查。所有这些临时抱佛脚的工作,既增加了对事件响应的时间,又增加了对事件研判的复杂度,而且效果通常都不会太好。
换个思路,如果我们尽可能地提前考虑安全,把业务系统中的资产梳理清楚,把主机之间符合业务需求的网络连接梳理清楚,尽可能地把安全运营工作左移到网络架构设计阶段或应用系统上线前,那我们应对安全事件的能力就会极大增强,整体防护效果也会显著提升。另外,无论是平均检测时间(Mean Time To Detect,MTTD)指标还是平均响应时间(Mean Time To Respond,MTTR)指标,也都会有明显的好转。
安全左移的概念最早起源于软件开发过程中,这非常好理解。理论上讲,所有的安全问题、安全隐患、安全漏洞,追根溯源都是开发人员在编码过程中造成的,而且是很难避免的。所以,现在很多企业才会从DevOps向DevSecOps转变,尽可能地把安全隐患扼杀在摇篮中。虽然这个转变过程比较艰难,但已经逐步成为大家的共识了。
本书也会借鉴安全左移的说法,但考虑的角度不仅有软件研发,还有安全体系、安全运营、安全管理。国内经常在讲的三同步原则,即“同步规划、同步建设、同步运营”,其实也是一种安全左移的体现,从规划阶段就要开始考虑安全问题。本书中的安全左移强调的是安全工作需要提前考虑、提前布局,是更全面、更体系化地左移。
我们在建设纵深防御体系时,需要充分了解被防护对象的特点、风险隐患、业务逻辑等;我们在进行常态化安全运营时,也同样需要了解网络拓扑、系统资产、业务逻辑等。在充分掌握这些信息后,就可以整理出一个满足不同层面安全需求的白名单,例如网络白名单、软件白名单、身份白名单等,从而帮助我们在安全建设阶段有的放矢,在安全运营阶段高效可靠。