DevSecOps与SecDevOps
DevSecOps是一种在敏捷环境中进行持续软件开发过程的相对较新的方法。它是包括安全自动化的DevOps(开发+运营)的扩展。但是,DevSecOps名称中顺序可能会导致不正确的应用程序安全操作方法。这也是为什么有些人认为称SecDevOps或许是一个更好的术语。
传统的DevOps流程不包括安全性。这也就意味着许多实践DevOps文化的软件开发企业最初不存在安全团队,甚至在开发期间并没有关注到安全问题。多数情况下,安全是在部署应用程序后对其进行测试,因此可以称之为DevOpsSec。但这种方法可能导致开发出现重大延迟,并且不适合包含安全性的敏捷DevOps实践。
低效的DevSecOps方法
在常见的持续开发过程中,业务部门有一个独立的安全团队负责进行安全测试,而不是作为开发的以部门。在这种情况下,开发团队使用CI/CD(持续集成/持续交付)解决方案构建应用程序。使用这种解决方案自动编译新代码,然后进行测试(但不包括安全性测试)。当代码准备好后,应用程序就被部署到一个临时环境中,这时安全团队就开始对其进行工作(手动或使用自动化工具)。
这种方法的问题在于,安全问题往往是在流程的后期才被发现。当安全团队发现安全问题时,就需要更正应用程序,并重新执行整个过程。这种方式并不敏捷,而且还给安全团队造成了瓶颈。在最坏的情况下,由于最终上线时间的到来而无法返回重新构建,没有时间来修复安全缺陷,那很可能在存在安全问题的情况下发布了应用程序。
SecDevOps - 安全最佳实践
将网络安全纳入开发工作流程的正确方法是将安全视为第一优先事项,也就是说在构建软件开发初期就将安全问题考虑进来。安全实践应该包含在应用程序开发的每个阶段。安全团队可能更专注于安全策略,监督持续的部署,并执行高级手动渗透测试。DevOps管道中的其他团队应该尽可能多地执行安全任务。
SecDevOps方法从教育开始。安全团队应提供关于安全编码和安全开发实践的培训。例如,应该教导开发人员不要轻易相信用户输入,并在源代码中使用参数化查询或存储过程,以避免SQL注入漏洞。测试开发人员和QA团队学会如何使用静态应用安全测试及动态应用安全测试工具,以及如何为开发周期创建安全测试。教导运营团队如何定期进行安全漏洞检测。
构建安全软件的秘诀
无论是DevSecOps还是SecDevOps,重要的是意识到安全不应该是开发和部署过程中的一个孤岛,而是软件开发生命周期中每个活动的组成部分。构建安全的产品需要广泛的安全策略,并遵循网络安全框架。而这些与选择何种工具、有多少安全专业人员无关,而是如何确保团队的每个成员在工作中考虑到潜在的安全挑战。