一个概念或者一个事情如果有一个标准来判断好与不好,好的话那么是好到什么程度。有了这个标准可以知道当前的状态,如何往更好的方向努力。在学校期间的考试分数是一个学生学习好坏的评判标准。
    在注重数字化运营时代,凡事都在追求量化数字化,有了可量化的结果,能够明白当前的状态,同时明白哪些需要可以继续提升,哪些需要部分填补空白。
    因此一个好的评价体系就显得很重要,从哪些维度去进行评价,各个维度所占的权重。一旦设定好了,大家就会根据所要求的项去发力做好。拿高中教育来举例,一切唯分数论,那么学生父母也就步调一致,能否提高分数是要不要做一件事的评判标准。导致体育课,美术课,音乐课老是被占用。为什么?因为中考高考不考这些。
    一个好的评价体系是为了把一件事物往长期健康的方向引导。
    SDL目标就是为了减少应用系统的风险,其中一个很重要的衡量标准是漏洞数。听说有些企业如果被白帽子发现高危漏洞,影响开发团队和安全团队的KPI。
    不同对象有不同的考核评价角度,我们主要谈谈安全测试人员以及公司两个部分。
    安全SDL实施人员
    安全人员在SDL中考核除了外暴漏洞数、漏洞漏测率、漏洞修复率,还包括安全培训、规范沉淀、自动化实现等。
    外暴漏洞数、漏洞漏测率、漏洞修复率这些指标都是围绕减少风险这个目标为导向的。每年都会根据所负责的系统的情况制定一个合理KPI数值。当所负责的系统被白帽子暴漏洞的时候内心就是一句“我靠”,又被暴问题了,同事之间就会开玩笑说今年的KPI完蛋了。
    围绕漏洞这个指标大家都有,这个是结果。而规范沉淀就是一个把过程更好实现的一个方式。需求评审关注哪些、设计评审关注哪些、有哪些成熟的设计方案、安全编码注意哪些、安全测试测哪些,将这日常中的点点滴滴沉淀下来,无论是形成规范、checklist、基线还是通用方案。这些可以使工作规范化,避免遗漏,同时可以在团队内共享,大家共同完善,形成知识库,随时查阅。也可以让新人快速上手工作。因此沉淀这块也基本会作为KPI之一去完成。
    一项工作的发展大体遵循从混乱、到有序规范并渐渐过渡到自动化的过程。开始的时候是摸索阶段,需要花费很多的时间,后面慢慢了解了套路,每次按照套路来,很快就能完成工作。同样机械的动作重复多次之后,就会想着能否自动化。工具、脚本就是自动化的一种实现。自动化可以节省人力,大大提高效率。SDL中哪些可以自动化,最容易想到的是安全测试,DAST、IAST这两种方式已经比较成熟了,商业开源可根据实际情况选择。代码扫描也能实现自动化,还可以完美嵌入公司的开发流程中,可以做到在代码上传后自动扫描。这些都是安全SDL实施人员可以纳入KPI中的。
    公司
    整个SDL做得好不好,还得从整个体系去看。目前我们团队尝试做了一个初期的SDL成熟度模型,借鉴了其他安全标准的制定,比如BSI、SAMM,划分了五个阶段
    第一阶段:不可预测、无反应性
    第二阶段:反应缓慢、能力有限
    第三阶段:可重复、主动、模板化
    第四阶段:可测量、有目的性
    第五阶段:不断优化、持续改进
    很多事物的成熟度都可以划分为这几个阶段,比较通用的。需要考虑的是每个阶段每一项内容需要写到什么程度。比如我们考察了涉及到安全部分占领导开发团队KPI多少,安全开发的深入流程深度,工具化平台化程度、公司考核、规范制度、漏洞闭环程度、人员配备等,通过这一系列的维度来判断SDL处于什么状态,后续可以往哪些方面提高。
    目前SDL这块好多大公司都在实践,大家各自都有各自相关的规范、方法论、评价体系,没有优劣,只有是否合适,根据开发人员安全人员比、业务系统大小、安全预算、企业发展等,打造适合自己公司的SDL,但是规范、方法论、工具仍然是可借鉴或者部分可借鉴的。