鉴于公司的持续交付(CD)模式,我们公司的开发人员将代码投入到日常生产当中去。尽管开发周期短,但我仍然意识到了安全网关的需求。在这种环境下,该使用何种网关或是其他安全措施?我们是否要继续采用CD模式?
对于软件应用程序开发和交付来讲,持续交付模式意味着开发周期短,同时会较早时间公布新代码,而非推迟或与其他变更中捆绑进行。
从安全角度看,主要问题在于很多实际CD部署只关注测试和尽可能快地发布新特性和功能,缺乏对安全的重视。用户反馈会反映到下一个版本中,但也只是就可用性和功能方面,而非安全。不过,这并不意味着就非要弃用CD不可,因为安全是内置于整个过程中的。
CD模式的核心理念在于创建一个自动化单元测试和集成测试的基线,这也使其本身天然地适用于安全开发实践,只要开发和安全并行即可。带有恰当的安全处理的CD模式可以改善软件的安全性和弹性,因为这样可以在软件开发和部署过程中的关键阶段持续集成安全检查。传统的软件开发在每一个应用代码中引入太多变更,这导致如果测试失败的时候,难以发现问题究竟出在了哪段代码上。
CD模式中的持续代码评估让寻找问题更为简易,加之代码在开发者脑海里总是常新的。当然,建立安全编码规则禁止危险代码结构和功能的使用也是非常重要的,只支持第三方库和组件,且对所有核心功能应执行全面错误和异常处理规定。
一旦新代码进入检测,它应该被自动地进行代码安全评估以查看是否引入了已知漏洞,并对人工检查做好标记。检测已知漏洞非常适合自动化,但更重要的是添加测试场景识别和禁止未知非正常行为。这些测试绝大多数可通过使用内带安全的浏览器自动化工具自动进行。
测试的本质在于和自动化验收测试一样,不过更为针对验证安全特性,如登录和退出,包揽所有可预见的和不可预见的行为。关键在于创建基于应用程序攻击面的测试,详细的威胁模型。且安全团队应该具备块交付能力,如果测试结果表明存在不可接受的风险时。