如何确保项目开发敏捷和安全两者兼得呢?

前言

敏捷开发是现在主流的开发模式,相对于传统的瀑布式开放,它通过快速的迭代来响应和展示客户的需求,敏捷开发的优点已经是众所周知了。但是敏捷开发已经实施了很多年了,项目安全问题还是和瀑布开发开放模式一样没有得到解决,都是到项目上线前一两个礼拜才进行安全测试和渗透测试。

如何确保项目开发敏捷和安全两者兼得呢?

这种模式有非常大的弊端,第一,很多安全问题应该在架构设计和coding的时候就要考虑到的,在项目快结束的时候去解决已经太晚了。第二,从我的经历来看,大多数项目由于各种原因都会有延迟的情况,这个时候上线压力非常大。即使发现了很多安全漏洞,由于修复代价非常的高,项目经理通常会采取折中的方案来保障上线。任何折中方案都会导致漏洞直接上线,暴露在黑客面前,给产品带来非常大的风险。

将安全问题留到最后解决是非常危险的,但是在立项的时候就把安全问题全部放到项目开始阶段也并不是非常可取的,软件架构包含很多跨功能的需求,比如性能、扩展性以及安全。这些需求通常应该在代码设计前设计和决定如何实施,因为这个时间点才会有足够的信息来做正确的决定。太早的时候决定这些跨功能需求由于没有足够的信息会带来安全风险,等发现想修改架构时因为代价太高,已经太晚了。

将安全问题放在项目开始或者结束的时候来考虑都是极端的做法,那在敏捷开发的项目如何解决安全问题呢?正确的做法是在项目开始时考虑好项目安全需要做哪方面的工作,需要什么样的架构设计,在开发过程中始终考虑安全因素,在项目结束时进行必要的安全测试。

从笔者的个人项目经验,做到以下几点也可以让安全也可以敏捷起来。

1. 贯彻安全编码规范

如果每个开发人员都知道如何编写安全的代码那么很多应用程序的安全漏洞都能够避免。比如:在处理用户输入时,应该知道如何做输入校验。在将用户信息存入数据库时,应该知道讲敏感信息进行加密或者混淆。在进行数据传输时要确保传输通道安全及对内容加密。在返回错误信息和log时要对输出进行消毒等等。精通OWASP Top 10应用安全漏洞是每个应用程序开发人员的必备技能。WebGoat是一个非常好的学习的网站,网络上也有很多相关的支援。中国古话说得好“磨刀不误砍柴工”,在项目开始对程序员举行必要的安全等方面的培训是非常有必要的。

2. 每个项目组应该有一名安全专家

坦率讲让每个程序对安全有深的理解是不现实的,有很多安全问题是需要专家的眼睛才能发现。安全专家是刚需,强烈推荐每个项目组有一个在应用安全领域有比较深研究和理解的资深程序员。需要安全专家的级别和能力可以根据项目对安全的要求来定,当然有条件的情况,专家能力越强对项目的安全保障越好。在没有请安全专家能力的团队可以由安全经验丰富的资深工程师来担任也是可以的。安全专家的主要职责包括:

  • 在开发安全敏感度非常高的用户故事时和工程师们结对编程
  • 对工程师的代码进行安全评审,确保代码在提交到代码库前没有安全问题
  • 在选择使用哪些商业代码,开源库,公共API等第三方库时进行安全分析和决定
  • 帮助QA人员测试安全敏感度高的用户故事,确保程序安全。

除了这些以外,安全专家还应该帮助程序员熟悉安全编码,将安全知识分享给每个程序员,提高程序员的安全意识。

  1. 识别安全敏感度高的用户故事
    八二原则在安全也是适用的,80%的安全问题是由20%的用户故事导致的,安全专家要识别出安全敏感度高的用户故事,将有限的资源有限放在这些故事里。安全专家可以在每个迭代开始前利用计划会议将这些安全敏感度的故事识别出来并标志出来。让每个程序员对这些用户故事在安全方面加以重视。举几个应该标为安全敏感度高的用户故事:
  • 包含用户输入选项(比如输入框,选择框等等)
  • 存储数据到数据库
  • 数据传输到外部系统
  • 处理外部系统传入的数据
  • 输出信息到外部系统和文件等。
  • 处理验证和认证流程

4. 每个安全敏感用户故事都应该有恶意测试

每个用户故事都事先设计可接受条件,项目负责人可以在安全专家的帮助下从安全的角度设计可接受条件,安全专家应该写一些恶意的或者破坏性的测试条件,类似于功能测试用例。就是从黑客的角度去思考问题,如何攻破这些用户故事。

5. 在用户故事被接收前举行严格的安全测试

传统模式是在项目结束前才举行安全测试,在敏捷模式下,每个用户故事在被接受前都应该进行安全测试,QA人员可以在安全专家指导下和功能测试一起执行恶意测试,也可以使用静态和动态扫描工具对代码举行漏洞扫描,一旦发现安全问题,和功能bug一样,用户故事将会退回给开发人员进行修复,修复完毕后再进行测试。这种循环可以进行多次直到没有问题发现。用户故事才能被接受。

安全测试自动化还是手工呢?

自动化化测试是敏捷开发中非常重要的一个基础,也可以说没有自动化就没有敏捷模式。安全测试也是同样如此。自动化不是万能的,很多测试是自动化没有办法完成的,片面最求完全自动化是不可取的。对安全尤其如此,比较好的方式是,安全专家先通过手工的方式找到漏洞,然后将这个找漏洞的过程自动化,避免新的代码改动引起同样的漏洞。

后语:

这几种实践实际上是和敏捷开发思想是一致的,就是将整个安全的需求拆分到每个迭代里,让安全需求由抽象变为具体,在确保每个用户故事安全的前提下进而确保整个项目的安全。但是说起来容易做起来的确不简单,安全专家和有安全意识和能力的开发人员是稀缺资源,尤其在中国,大家重视项目安全也是最近一两年的事情,安全人员的培养没有跟上来。

在这种情况下完全按照这个实践是不太现实的,针对这种情况 Gartner 在2014年就提出了 RASP 的概念,就是将这些实践抽象成一种通用化的产品,将安全编码规范和漏洞发现融合成一种安全产品,开发人员可以讲 RASP 产品结合扫描工具在运行时对产品漏洞检测,很快就定位哪行代码存在安全漏洞。这种产品的理念和敏捷开发非常的匹配。大家有兴趣可以尝试一下。相关资料可以通过 Google 和百度可以找到。

本文系 OneRASP 安全总监刘再耀原创文章。如今,多样化的攻击手段层出不穷,传统安全解决方案越来越难以应对网络安全攻击。OneRASP 实时应用自我保护技术,可以为软件产品提供精准的实时保护,使其免受漏洞所累。想阅读更多技术文章,请访问 OneAPM 官方技术博客

本文转自 OneAPM 官方博客

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 207,113评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,644评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,340评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,449评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,445评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,166评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,442评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,105评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,601评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,066评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,161评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,792评论 4 323
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,351评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,352评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,584评论 1 261
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,618评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,916评论 2 344

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,527评论 25 707
  • 先说项目开发过程中团队人员的分工协作。 一 人员安排 毕业至今的大部分项目都是独立完成,虽然也有和其他同事协作的时...
    SnowflakeCloud阅读 10,749评论 3 59
  • 1.测试与软件模型 软件开发生命周期模型指的是软件开发全过程、活动和任务的结构性框架。软件项目的开发包括:需求、设...
    宇文臭臭阅读 6,713评论 5 100
  • 遇见山 遇见树遇见河流 遇见麦田遇见飞鸟 遇见长长的隧道和黑暗遇见羊群 遇见屋顶遇见北方人和南方人遇见哭泣的姑娘和...
    风中的一粒沙阅读 586评论 1 4
  • 她说,人这一生,会犯很多错,最后变好了,那是因为没辜负“情”这一个字。 她出生在大年三十的一户宋姓人家,那时漫天烟...
    听王花花讲阅读 445评论 0 3