您好!
欢迎来到京东云开发者社区
登录
首页
博文
课程
大赛
工具
用户中心
开源
首页
博文
课程
大赛
工具
开源
更多
用户中心
开发者社区
>
博文
>
安全测试在敏捷团队中的落地
分享
打开微信扫码分享
点击前往QQ分享
点击前往微博分享
点击复制链接
安全测试在敏捷团队中的落地
自猿其说Tech
2021-12-20
IP归属:未知
31880浏览
敏捷测试
敏捷
### 1 为什么做安全测试的工程实践 SDL( Security development lifecycle )即安全开发生命周期,是微软提出的从安全角度指导软件开发的过程。将安全的考虑集成在软件开发的每一个阶段,利用威胁模型改进安全流程。 ![](//img1.jcloudcs.com/developer.jdcloud.com/ec232aba-428e-452b-820c-88a4ce3d443920211220154303.png) #### 1.1 不同身份看待安全测试 ##### 1.1.1 我是一支敏捷团队 ![](//img1.jcloudcs.com/developer.jdcloud.com/4ca464a2-013d-4c81-b9ca-fb6de4c6e0f320211220154319.png) 一支敏捷队伍,将产研测进行闭环,以迭代的方式循序渐进的完成产品。在此过程中,产品、研发和测试都要对产品的安全质量进行把关。下面就分别从这三个角色进行简单阐述每个人在软件安全开发过程中对于安全测试工程实践的作用: ![](//img1.jcloudcs.com/developer.jdcloud.com/64c2daf2-70ec-4490-9a3c-079887ffa42b20211220154328.png) 从SDL(安全开发生命周期,可参考《一起聊聊工作中的功能安全测试》)的过程来看,产品经理在需求阶段就应该对产品所存在的安全进行评估并将安全的落实到prd中。因此说,产品经理是软件产品安全的第一层把关人,也可以说是产品经理需要对产品的功能安全点进行把关。 ![](//img1.jcloudcs.com/developer.jdcloud.com/0f5415ff-8f25-4741-9076-296861ce1cef20211220154342.png) 研发同事是SDL的第二层把关者,也是敏捷过程中安全技术的把关者。需要对用到的组件插件版本的进行检查,同时要考虑敏感操作和敏感数据需要接入安全日志平台等,从技术层面对软件产品的安全进行把关。 ![](//img1.jcloudcs.com/developer.jdcloud.com/0936aa6e-bffc-47c0-8689-97b66950bf3820211220154401.png) 测试人员是SDL的最后一层把关者,需要做到技术和功能的双重把关。既要对产品经理提供的prd进行反复推敲,寻找其中遗漏的安全点,又要对研发的设计和编码保持友好而又警惕的态度。 从测试广度来看,与仅仅做功能测试相比,同步进行安全测试,是个人测试能力的提升,同时,输出的价值也高于仅功能测试。同时,作为测试开发工程师,可以使用不同方式推动安全测试的完美落地。 从测试深度来看,进行安全测试,是对自己测试认知的提升,无论是安全测试理论以及测试工具的学习,还是对安全漏洞剖析,亦或是安全测试的全面执行,都是从各个方面提升了自己的测试技术 ##### 1.1.2 我是安全测试团队 安全测试团队要对公司内部的软件安全把关,不仅仅局限于某个应用某个团队,培养大家的安全意识是我们义不容辞的责任,保证软件及信息的安全是我们的使命。 众所周知,整个公司涉及到的二级或三级部门数量非常之多,所有的安全测试(含功能安全测试和渗透测试)如果仅仅由安全团队来做,压力非常大,且若时间有限,一些安全功能点也可能会无法顾及,留下一些安全隐患。同时,他们对各个部门的应用的熟悉程度也不如各个团队的人员,在做功能安全测试方面,还是各个敏捷团队自己更加便捷有效。且各个团队要自己向他们提需求,他们才知道有安全需求要测试,如果团队的安全意识不高,则会造成双方皆不知的情况发生,造成系统的安全隐患。 因此,安全测试前置化,不仅仅能够减少安全团队同事的压力,也能提升各个敏捷团队的安全意识。期望的结果是,能够推动各个敏捷团队做到团队内部闭环 ##### 1.1.3 团队合作 我们在敏捷实践过程中,要同时站在敏捷团队和安全测试团队的角度看待安全测试,两团队合作才能共同推动SDL在敏捷团队中落地,实现我们要做成的devsecops。 devsecops:在传统的devops框架中增加安全的元素,dev+sec+ops共同组成了devsecops框架。在接下来的章节中,我们会详细展开我们的工作内容。 #### 1.2 实施敏捷安全测试的必要性 为什么做安全测试的工程实践,其必要性可以从以下几个角度剖析: ![](//img1.jcloudcs.com/developer.jdcloud.com/d1aba958-d83b-4b24-b00f-6efdb2b7a34220211220154449.png) ##### 1.2.1 敏捷成熟度 测试分层是敏捷四级一个评价指标。作为一支成熟的敏捷四级团队,在工程实践中,应该做到代码的全面扫描,安全测试其中的一个环节就是对研发的代码或者组件插件进行安全扫描,实时监控软件的安全情况。同时,成熟度高的团队有更高的质量要求,如何更好的cover住安全问题也是敏捷团队想要做到更加成熟的一个必须要考虑的方面。 ##### 1.2.2 自身团队特征 本团队(攀登者团队)所负责的应用是京喜达财务和客服系统,这是两个前端应用,所面向的客户不仅有京东内部的业务人员,也有非京东的外部合伙人以及物流操作人员。应用使用的网络环境也有京东内部网络以及外部公网。无论是从人员复杂度还是网络使用情况来看,开展安全测试工程实践都是必要的环节。能够保证应用的相对安全。(安全性级别要求不一致) ##### 1.2.3 应用数据特征 **京喜达财务系统**涉及到的数据都是敏感数据,其中不乏网格站和经济网点的发票(地址电话银行账号等)、网格站签署的合同(身份证)、经营数据(收入、支出、盈利数据)等重要公司机密数据。 ![](//img1.jcloudcs.com/developer.jdcloud.com/c4e62eef-a702-4775-b80b-4ceb68b45fbf20211220154514.png) **京喜达客服系统**,涉及到网格站的奖罚,网格站的投诉等,其中将会涉及到运单详情等敏感数据。同时,奖罚录入的金额也是人工录入,直接下传至计费中台直接使用的,数据的保密性就会非常有必要,如若数据被中间篡改,则奖罚的金额将会受到实际的影响。因此,安全测试投入其中是非常有必要的一件事情。 ![](//img1.jcloudcs.com/developer.jdcloud.com/3e19e620-99d1-45a1-a33d-8c8e6bf06bda20211220154539.png) 由于团队性质的不同以及数据保密性的级别不同,要求的安全程度也就有差别。因此,其他敏捷团队可以根据自身系统以及自身系统涉及到的数据进行评估,是否需要进行有针对性的安全测试或者进行全面的安全测试。 ### 2 做什么安全测试 **安全测试加入敏捷团队(devsecops)** 安全是IT团队每个人的责任,需要贯穿整个devops生命周期(开发、集成、测试、监控、反馈、部署、运营)的各个环节。 传统的DevOps 可以有效推进快速频繁的开发周期,但过时的安全措施(在开发的最后阶段介入)可能会拖累整个流程,因此提出了DevSecOps的概念,devsecops是一个全新的安全理念与模式,其核心理念是安全是整个IT团队每个人的责任,需要贯穿从开始到结束的整个生命周期环节中。它要求在计划启动时就需要安全团队进行安全评审,然后制定相应的计划。 ![](//img1.jcloudcs.com/developer.jdcloud.com/fe271870-9a16-405f-a765-7b615c28799f20211220154625.png) 基于这个理念,我们要做成企业内部团队共同合作,以京东SDL流程作为依据,根据团队特点设计落地步骤,最终选择合适的工具(CI/CD、IAST等)来持续集成安全防护,实现最终的安全测试在各个敏捷团队的最终落地。 ### 3 怎么做安全测试 #### 3.1 安全培训 敏捷团队内部开展安全培训,培训内容有: 1. 安全意识导入 通过两种方式完成意识导入的工作:日常安全意识的会议培训,同时利用迭代回顾会、分享会机会进行安全意识的加强 1. SDL周期中各个阶段的角色及其分工,详细的角色和分工如下图: ![](//img1.jcloudcs.com/developer.jdcloud.com/dc8e98a2-1c64-4342-9656-d9f780452e1120211220154727.png) 1. 产品checklist、研发checklist(链接)、敏感操作、敏感数据定义的培训 1. 安全梳理过程(详细)给组内人员同步: 安全的梳理过程包含以下几个方面:1、如何识别安全问题、安全问题如何分类、如何落实安全问题文档 1. 恶意用户需求场景培训:针对以下的几个恶意用户场景给组内人员培训,在以后的迭代过程中,要时刻保持警惕的态度。 ![](//img1.jcloudcs.com/developer.jdcloud.com/6edfb75a-6e4a-47e7-9c7f-340ffbaac12a20211220154840.png) 1. 应用安全漏洞Top10 ![](//img1.jcloudcs.com/developer.jdcloud.com/3928c6bf-4fdf-4a68-8070-f7b81f568d3620211220154908.png) #### 3.2 流程建设 ![](//img1.jcloudcs.com/developer.jdcloud.com/2328e213-24e6-470b-8633-e8d573a5f5ed20211220154926.png) **step 1:**prd评审。在prd评审阶段,测试人员不仅要求产品同学识别需求的价值和目的,还要鉴别出产品经理是否将安全点cover全面以及是否需要针对某些安全点进行交互设计,同时,产品人员在提需求时,可以选择需求的安全属性。 ![](//img1.jcloudcs.com/developer.jdcloud.com/19baaa00-e04a-40f9-95ff-580a0f7b182120211220154946.png) **step 2:**设计评审&代码评审。在此环节中,根据研发checklist进行安全设计,代码检查安全功能点的覆盖,测试人员要对设计和代码进行评审,不局限于功能层面,还要针对研发checklist进行评审。 **step 3:**提测卡点:1、增加安全的卡点。2、安全内容设计。根据系统的特点,增加卡点内容(弹框展现) **step 4:**安全测试用例评审。在评审之前,测试人员需要根据prd评审的结果进行需求的全面剖析,分析出哪些是安全测试工具可以做的,哪些是功能安全测试内容(哪些是我们日常可以做的)以及哪些是渗透测试内容(具备一定技术后可以做的),再由此编写测试用例,测试人员需要编写全面的安全测试用例,并进行安全测试用例的评审。 **step 5:**安全测试执行。包含日常的功能安全测试,也要求使用工具扫描实现实时的监控,同时,也可以使用安全测试工具进行测试:burp suite **step 6:**安全测试定期复盘。要对遇到的安全问题进行分析与分类,并解决这些问题。进行根因分析后完善流程,在以后的迭代任务中规避这些问题 ##### 3.4 建立测试用例库 建立测试用例库,既是为了不遗漏测试点,同时也是为了问题复盘。 在此环节,我们可以先依据所负责的业务和应用情况,输出安全测试用例模板,再具体需求具体分析,编写模板中对应的安全内容,最后,对测试用例进行归档与复盘,对于新增的安全内容完善测试用例模板。针对本敏捷团队数据和应用的情况,设计出了适合本团队的安全测试用例模板: ![](//img1.jcloudcs.com/developer.jdcloud.com/87dfc690-a8c8-4205-9e28-866cbb2e161420211220155525.png) #### 3.5 工具自动化接入扫描 公司进行安全自动化扫描的工具有2个,一个是集团的安全门户,另一个是物流的IAST应用,接入工具进行自动化扫描,是为了在日常工作中,能够实时监控系统的安全,做到及时发现漏洞修复漏洞的目的。同时,接入工具进行日常监控,能够保障大促的安全进行。接入工具扫描的时机一般是在新启应用或大型项目启动后。 ### 4 目前进展 #### 4 .1 安全流程迭代 安全迭代流程已规范。在prd评审阶段,产品prd中安全模块已增加,且针对具体的需求,能够给出涉及到的安全功能点。 ![](//img1.jcloudcs.com/developer.jdcloud.com/9ebf7673-6bf8-4e8f-91fc-6a20032d695d20211220155601.png) 在研发设计评审阶段,可以针对研发checklist进行评审,将其中未做到的内容进行标注,并督促研发将其完善,在测试环节进行验证。 ![](//img1.jcloudcs.com/developer.jdcloud.com/9c20bb9f-c5f9-4730-8fd3-c5728a0fea5820211220155624.png) 研发提测时,依据已提供的提测模板,对安全模块内容进行标注,测试时会对此块内容格外关注。 ![](//img1.jcloudcs.com/developer.jdcloud.com/dcbe505b-5d45-49bf-b982-56c4f50ee95220211220155701.png) 用例评审时,测试间进行用例评审,输出最终的安全测试用例并执行。 ![](//img1.jcloudcs.com/developer.jdcloud.com/9266e294-b0fa-4f79-a6da-d9b2bb741dec20211220155718.png) 最后,对之前的安全问题进行复盘,问题归类与分析,最后再完善测试用例模板。 ![](//img1.jcloudcs.com/developer.jdcloud.com/0428aed6-845b-459c-9f04-e375decc8f5020211220155731.png) #### 4.2 历史需求安全缺失点改进 梳理出历史需求中缺失的安全点,以及它们所存在的具体位置,变为技术债推动上线。以表格的形式提交给PO,已按需求排入迭代。 ![](//img1.jcloudcs.com/developer.jdcloud.com/562da15a-9ab3-4c04-853d-bbcdca557cff20211220155758.png) ### 5 后期计划 继续规范安全的迭代流程,将此流程固化到迭代过程中,新需求严格控制安全功能点的识别与实现,保证系统的安全性 ### 6 结束语 以前团队的敏捷程度还不算成熟,团队内部的流程等都不太规范,且工程敏捷程度不高,同时,没有接触过安全测试的相关培训或者实践,通过这次的安全测试工程实践,希望提升自己团队敏捷程度的同时,对其他团队也提供相应的启发,一起向敏捷四级冲击。同时,经过安全测试的敏捷实践,团队的安全意识也有了明显的提升,能够在日常工作中能够做到安全意识日常化,本部门的数据和应用安全也有了很好的保障。再者,通过安全测试的敏捷实践,自己的安全测试能力也有了很明显的提升。接下来的工作中,希望能将敏捷安全测试推广到更多的部门,保证我们的数据和应用的安全性。 ------------ ###### 术自猿其说Tech-京东物流技术发展部 ###### 作者:张萍(攀登者小组)
原创文章,需联系作者,授权转载
上一篇:超大规模图技术在京东电商场景中如何实现降本增效
下一篇:详解Java对象模型Oop-Klass
相关文章
前端DevOps流水线实践
Being Agile 单元测试认知篇
单元测试与重构
自猿其说Tech
文章数
426
阅读量
2149963
作者其他文章
01
深入JDK中的Optional
本文将从Optional所解决的问题开始,逐层解剖,由浅入深,文中会出现Optioanl方法之间的对比,实践,误用情况分析,优缺点等。与大家一起,对这项Java8中的新特性,进行理解和深入。
01
Taro小程序跨端开发入门实战
为了让小程序开发更简单,更高效,我们采用 Taro 作为首选框架,我们将使用 Taro 的实践经验整理了出来,主要内容围绕着什么是 Taro,为什么用 Taro,以及 Taro 如何使用(正确使用的姿势),还有 Taro 背后的一些设计思想来进行展开,让大家能够对 Taro 有个完整的认识。
01
Flutter For Web实践
Flutter For Web 已经发布一年多时间,它的发布意味着我们可以真正地使用一套代码、一套资源部署整个大前端系统(包括:iOS、Android、Web)。渠道研发组经过一段时间的探索,使用Flutter For Web技术开发了移动端可视化编程平台—Flutter乐高,在这里希望和大家分享下使用Flutter For Web实践过程和踩坑实践
01
配运基础数据缓存瘦身实践
在基础数据的常规能力当中,数据的存取是最基础也是最重要的能力,为了整体提高数据的读取能力,缓存技术在基础数据的场景中得到了广泛的使用,下面会重点展示一下配运组近期针对数据缓存做的瘦身实践。
自猿其说Tech
文章数
426
阅读量
2149963
作者其他文章
01
深入JDK中的Optional
01
Taro小程序跨端开发入门实战
01
Flutter For Web实践
01
配运基础数据缓存瘦身实践
添加企业微信
获取1V1专业服务
扫码关注
京东云开发者公众号