SDD

业务漏洞分析、架构安全分析和威胁建模这三个关键活动均会产出一些安全方面的需求,基于这些产出物,开发团队已经能够比较清楚的了解在接下来的开发过程中,在安全方面应该注意什么,但问题在于,如何保证实际开发的时候能够严格遵循并满足这些安全需求?毕竟,知晓安全需求并不意味着在编码过程中一定会去实现。可以通过代码评审去发现,或者安全渗透测试加以验证,但是这些办法不是效率不够高,就是发生得太晚,而且也并不能保证所有的安全需求都能被验证到。

与测试驱动开发类似,开发团队可以采用安全驱动开发(Security-Driven Development, SDD),首先基于安全需求来编写对应的自动化安全测试,然后通过这些安全测试来驱动实际产品代码的开发。通过这种方式可以非常明确的驱动出产品的安全性,能有效保证所有的安全需求被正确的实现。除此以外,这样的安全测试在整个应用程序开发过程中应当持续的运行,一旦某个安全测试失败了,开发团队能够迅速知晓并采取行动。