目录
前言
企业级安全漏洞的源头是人员,无论是开发,运维,测试,还是非技术的人,哪怕是客服等,当员工出现稍微的懈怠,黑客就有可乘之机。因此,如何保障更“安全”,是安全防护工作中最关键的一环。 2004年,微软提出SDLC(Security Development Lifecycle,安全开发生命周期)。因为对安全和隐私的考虑贯穿了整个软件的开发进程,SDL旨在帮助开发人员写出更“安全”的代码,在解决安全合规需求的同时,也能减少由安全问题带来的损失。SDL 本质上是一个宏观指导性质的框架。它成为了很多公司建设安全开发体系的参照标准。各自依据微软的 SDL 标准,结合自身的实际情况,衍生出了适合公司自身发展的 SDL。
SDL 中的基础概念
软件开发中的经典概念:软件开发生命周期 DLC(Software Development Life Cycle)。SDL 是以软件开发生命周期为基础发展成的安全框架,所以,了解 DLC 能够帮助我们更好地认识 SDL。 DLC 将软件开发过程分为 5 个阶段:需求分析、设计、开发、测试和部署。DLC 对 5 个阶段的具体描述,都是以业务功能为核心进行展开的,并没有涵盖安全的工作。这显然不安全。 我们都知道,安全问题对公司的威胁是客观存在的。因此,很多公司将安全纳入到测试的工作中。但是,这种做法会导致两个问题: 第一,安全问题要等到软件开发完成后才能发现。这个时候,因为一个安全隐患(不是 BUG),让开发人员重启开发流程,推动上会遇到较大的阻力; 第二,只能关注到最终完成的软件,往往会导致安全人员因为对业务了解不足,漏过一些安全隐患。这些问题的出现,让业内亟需一个能够更好地满足安全需求的软件开发流程,SDL 也就应运而生了。
什么是 SDL?
SDL 的出现不是为了颠覆传统的 DLC 框架,而是希望在 DLC 中加入足够清晰的安全需求,以此来为软件开发的过程提供完整的安全防护。SDL 的标准执行流程有 7 个步骤:安全培训、需求分析、设计、开发、测试、部署和响应。流程如下图:
1. 培训
在 SDL 中,安全培训是第一步。之所以会这么设计,就是因为很多公司都对安全人员给予了过高的期望,认为他们能够解决一切的安全问题,而忽略了对开发、测试、运维等人员的安全意识培训。这就导致安全人员一直处于一个“救火”的状态,无法从根本上杜绝安全问题的产生。 因此,SDL 中明确提出:开发、测试、运维和产品经理每年至少进行一次安全培训。培训的内容包括安全概念和框架、威胁评估、Web 安全、安全测试、安全合规以及隐私保护等
2. 需求分析
SDL 要求在需求分析的过程中,我们必须把安全防护的需求考虑进来。在需求分析阶段,安全人员提出的防护需求主要包括三个方面。
安全标准:为软件制定对应的安全标准。比如,各等级漏洞修复期限,对敏感数据进行加密存储、需要进行二次认证等。
安全指标:定义软件在上线时需要满足安全指标。比如,在上线时,软件必须经过安全测试,且不允许存在任何中高危漏洞