随着越来越多的应用程序向云端迁移,更多的公司和开发团队正在采用DevOps 等持续开发和部署流程。
根据云管理公司RightScale发表的调查报告:到2016年底,74%的公司将采用DevOps,跟2015年比有所提升,2015年为66%。
在这样的环境下,提高代码安全性需要的不仅仅是常规的应用测试。Sonatype公司VP Derek Weeks是DevOps的坚定支持者,他表示:尽管安全厂商提供了很多安全工具,在涉及到DevOps时,开发者仍然需要一套不同的工具,安全也需要“持续”。
“如果你正在做持续交付,那么你每天可能做出数百个变更”,Weeks说,”旧的流程完全不适用。如果你试图在开发生命周期结束时,再去检查所有组件,返工量会很高。”
虽然许多DevOps安全工具都花钱,但开发者也有很多的开源选择。公司不需要非要去银行取钱购买服务和软件,也可以更好地保护开发流程和代码。
保证DevOps环境中的代码安全(漏洞较少或没有),公司或开发者一方面需要管理软件供应链、检查常见组件和框架的安全性,还需要采用自动化测试框架、使用快速静态分析工具和自动扫描漏洞。
虽然公司可以采用付费服务,但是许多开源产品也是强有力的竞争者,他可以给开发者一个良好的开端。
开源软件管理工具可以创建一个本地代码库,用来存放审核通过的软件库和代码。
Sonatype’s Nexus Repository OSS, JFrog’s Artifactory和Hakiri Toolbelt 都是开源项目,他们可以帮助开发人员创建这样的资源库,确保他们使用的是最新版本。
此外,OWASP Dependency Check 工具将检查应用程序使用的组件,然后发现这些组件是否有已知的漏洞。
八二原则:首先确保80%
第一步:检查开源库和通用组件——即软件的“材料清单”。
Weeks 说:“专注于开源程序组件很重要,因为它在任何应用程序的代码中都占据最大部分。当你看开源组件时,如今他们构成了应用程序脚本的80%到90%,其余的是自定义代码。因此,开源组件是应用程序最大的一部分”。
Sonatype的数据显示,公司每年平均下载近230000的组件,其中6.1% 约14000的代码有已知的漏洞。
创建一个自动检查的测试框架
测试驱动开发的理念逐步淡出,取而代之的是基于用户需求开发,它更专注于业务逻辑。这被称为行为驱动开发,技术用户故事案例可以如同测试一样稳定重现。虽然测试验证了程序的行为,各种开源安全框架也可以用来作为辅助。
Gauntlt, Mittn,和 BDD-Security是三个比较流行的工具。 Gauntlt 专注于Ruby,Mittn 专注于Python,BDD-Security 专注于 Java 。
“这些工具允许开发者创建基于用例的检查。开发者也可以用代码检查他们之前的错误”, Signal Sciences 高级工程师兼Gauntlt 开发者 James Wickett 如是说。
“你专注于你以前见过的东西,但你不想再次发生” Wickett说,“我们已经采取方法对历史做标记,并为你和团队的操作创建反馈。”
这三种工具并不是唯一的选择。Robot Framework 并不是专门用于安全,但它越来越多地被用来做安全辅助。
不断检查代码
静态源代码分析已经非常完善。安全技术,就是分析代码中的已知漏洞,曾经非常简单,但静态分析工具已变得更完善,同时更慢,他们通常在主要代码版本完成后运行。然而,对于 DevOps开发者来说,更快的代码检查工具更容易会被纳入软件开发周期。
例如开源Brakeman,它用来检查Rails代码上的Ruby常见漏洞。开发者最初采用工具的原因是因为它速度快,每次commit都可以运行一次。
“人们惊讶于你可以在几分钟内运行一个安全工具,并内嵌在你的安全流程中,”他说。“这是一个安全工具,人们知道他们可以在每次提交代码时运行它,不会影响正常的开发流程。”
其他静态代码检查器包括:Rubocop和大量被称为linters 的基本语法检查器。这些工具在Unix 利用 lint 后被称为linters,它检查不同类型的编程语言和配置文件。
例如 SCSS Lint,检查SASS files(层叠式样式表的一种动态类型(CSS)),而 ESLint 检查 JavaScript 代码。虽然不是安全工具本身,这些基本的静态代码检查器寻找正确的语法,可以帮助程序员更容易看到错误。
使用攻击测试
当代码被部署时,无论是在测试或生产环境中,开发者和安全操作可以使用自动攻击测试寻找共同可利用的漏洞。
开源工具,Metasploit Framework, OpenVAS 和 Arachni 支持自动化攻击测试。 Metasploit Framework 可以尝试提出了具体开发问题,而OpenVAS 使扫描网络漏洞更容易。最后说一下Arachni,Arachni是一个Web应用安全扫描器。
开源工具对于手头比较紧的开发团队是非常重要的,但是在基于开源工具构建一个完善的DevOps 流程则比较困难,但事实上是可能的。它很大程度上依赖于团队使用的技术栈。很多情况下,只是用一个开源技术栈, 运行所有的安全测试和代码检查却不太可能。
此外,DevOps团队采用任何工具之前,要确保它是积极维护的,比如在过去的三个月至六个月提交。很多项目开发的初衷是好的,但渐渐失去维护、被抛弃,最后死去。
开源是单打独斗吗?
许多用于DevOps风格开发的工具起源于一个开源项目,所以其他开发者可以帮助测试并改进代码安全性。作为DevOps为中心的安全流程的一部分,开源工具是一个很好的尝试。从对开发流程实验不同的改变,以增强安全性的角度来说,也不错。
然而,DevOps专家警告说,DevOps工具通常是不完善的,需要很多时间来配置。一旦完善以后,很多时候都会变成付费服务。如果开发者觉得这个工具很合适,就要升级服务。
评论前必须登录!
注册