在上一篇《安全开发生命周期(1)-从源头解决安全问题的SDL简介》中,简要介绍了实施SDL的意义。
接下来,我们看看实施SDL (Security Development Lifecycle, 安全开发生命周期)的前提条件:
首先,安全领域的推行从来都是自上而下的,需要获得高层的支持,以便获得推行SDL所需的资源。自上而下的安全管理模式即高层先行,中层垂范,一线随行,在企业形成一种重视安全的文化氛围,起到榜样和带头的作用。
其次,需要建立或已经具备针对产品开发的项目管理流程和项目管理IT系统(需要有明确的项目阶段划分和阶段切换审批功能,纯粹的任务协作类系统不在此列),有项目管理团队为项目提供流程辅导、QA,保障项目执行的规范度。
第三,需要有网络安全团队,为SDL实施提供组织保障。
网络安全团队负责:
等等。安全团队还有其它职责,如威胁情报、安全审计等。
上述基本条件具备之后,如果安全团队内没有实施SDL相关经验的人员,则可能需要采购SDL顾问咨询服务,在具有SDL实施经验人员的统筹指导下,将安全融入项目管理流程。
实施SDL的主要任务:
(1)设定项目各阶段的关键安全任务和交付件模板(参考文章开头的图片,建立与规范对应的Checklist模板、测试用例等,作为流程执行过程中的交付件):
(2)在项目管理流程和项目管理IT系统中,添加安全任务节点,将安全要素嵌入项目管理流程的各个阶段的关键活动中(需求确认、同行评审、方案评审、验收等),如果关键安全任务未完成,则项目无法切换到下一阶段。每一项安全任务,可以设置若干个自检项,比如安全验收应检查:安全配置、备份、恢复演练、系统/数据库口令重置、部署安全防御措施与配置等等(因篇幅有限,后续再行展开)。
(3)上线后的IT系统,从项目管理的角度,项目已经结束,但产品的生命周期往往是开始不久,在运行的过程中,会面临系统变更、入侵或攻击、业务上潜在的设计缺陷被恶意利用等情况,有可能导致业务中断或遭受损失。需要执行安全审计、应急响应、情报分析等等安全运营活动。
(4)上述各环节的自我完善与改进(PDCA)。刚开始实施SDL的时候,可以简化,根据推行的进度再逐步完善。
SDL通过规范的项目管理过程和关键安全任务的引入,确保开发设计及部署过程中遵从安全标准与规范,保障所交付产品在全生命周期过程中的安全性。
看上去比较复杂,SDL的实施的确是一项比较大的工程。如果您觉得上述过程太复杂,不妨参考一下笔者所设计的SDL SaaS服务。