本文根据 GOPS2017·上海站演讲《业务安全-DevSecOps 的催化剂》整理发布

作者简介

赵锐
上海首席安全官联盟成员、银联认证讲师,GOPS金牌讲师,曾在国有金融机构担任安全主管、移动产品经理、信息安全专家等职务。
互联网金融业务风险管理、信息安全管理、账户安全管理、开发安全管理10余年资深金融科技工作经验,10余年金融科技风险管理工作经验,深入了解国内外金融行业信息安全标准与要求。工作期间多次代表单位参加信息安全技能竞赛并获二、三等奖;负责的信息安全等级保护工作多次获得上海市优秀奖;工作期间多次被评为优秀员工。
拥有PMP、CISM、CISP、CISAW(二级)、中级经济师、ISO27001审核员、ISO20000审核员、ISO9001审核员等多项资质认证。
曾在银监会《金融科技治理与研究》杂志发表论文《“互联网+”环境下银行信息安全风险之应对》。

前言


DevSecOps的困境

产品鄙视研发,研发又鄙视运维,运维呢又鄙视安全。

业务和产品说:不是我设计这么好的业务产品,你研发再牛也没用,测试、运维、安全都是我养的。

研发说:要不是我研发这么牛的系统,你测试、运维和安全都没活,等着回家吧。

测试说:运维每次出事都怪我测试不到位,忽略安全问题,你行你上啊。

运维说:这次新业务上线,原来在网络设备里配好连通就好了,现在莫名其妙的要求加安全要求进来,回头出现问题业务、研发还要来怪我们。

业务说:好不容易了解到我们的对标B公司下个月上线的掩藏,因为你们开发、测试还有安全、运维的种种原因,导致我们比他们延后了,我们市场份额抢不到了,老板啊都是技术的错。

上述很可能是大家在互联网企业里面会遇到的情况。针对这些问题,我们IT人员应该怎么去解决它?我们安全人员怎么从对方的角度,从业务的角度来给大家解决这个困境?后续我就把这个环节给大家做一个讲解和介绍。

提安全要求的时候肯定是符合监管要求,最早的1994年174号文等保条例,国有企业的话是在2006、2007年初的时候做的等保测评,后续是民营企业。2010年对外资企业都提出来相应的等保要求。大家都要去做等保的定级,定级以后再做相应的测评和认证。

最近网络安全法颁布以后,对互联网的小贷公司、P2P公司的备安要求比较严格,做测评后能拿到测评报告材料,但备案过程会有点曲折。今年网络安全法实施以后,想必大家为了更好的推进自己的工作,应该也会找内外部的安全专家解读法规。其中就有,如果缺少相应的安全预算,安全工作不到位,特别是运营机构有超过25条个人信息数据泄露,安全负责人和领导都要受到法律制裁。

某互联网银行,今年因为网络安全的要求并为了更好的发民在2017年初加薪50%。估计大家听了我后面这些内容,会对你收入的提升以及和其他业务部门沟通会有相应的帮助。

安全首先会想到监管要求,除此以外还有合同的约束,原来我在银行管理IT外包风险,我们把相应的监管要求都写到合同里,虽然你能把工作外包,但责任不能外包。对了做好负责工作,对外包的服务商和人员进行考试、考核,如果不及格就清除到外包服务名单。

除了前述的监管要求外,很多时候基于事件驱动,事件以后大家都会在一段时间内重视安全。最近的大规模数据泄露事件是信年9月曝光的Equifax 数据泄露事件,Equifax泄露了1.45亿的客户信息,最近还在持续发酵里面包括姓名、社会安全号码部分信用卡号码以及个人文件。

还有服务中断,出了这些事以后老板肯定紧张对公司业务的影响,并不是对安全的关注。出了这些事不光对业务有影响,还可能会影响企业生存,这是都会遇到的问题。在企业初创阶段安全人员很可能隶属于网络运维团队,最多有一个到两个安全工程师。

最早从防火墙,IDS入手,企业发展到一定阶段的时候,慢慢的知道了木桶理论、开发生命周期理论, 会考虑是否要设置基线,是不是要做一些安全的测试,这个可以由企业内部也可以由外部服务商实施,等到合适的时候会有专门安全产品的开发,然后企业资源产品和服务对内对外都有作用的时,通过对外提供产品服务安全就会变成一个利润中心。

说了前面的这些,大家要有一个概念,安全工作其实是一个风险管理工作,这个怎么解释呢?一般来说如果你是计算机专业毕业的,觉得安全做的好那就是黑客,去SRC上面拿排名,证明你有发现安全问题的能力。但是从企业来说,并不是说你发现我问题越多越好,企业要的是你帮我发现问题并解决问题,后续还会有安全问题持续产生吗?同时可以让我用比较低的成本把这些安全问题解决。我们可以从几个角度来帮公司,帮管理层做好这些呢?

业务风险,公司持续运营的目的是赚钱,通过公司业务的持续运营实现。做安全的人肯定要知道这一点才能转换到业务人员的思路。一般大家最怕遇到的就是 DDOS 攻击,他们为什么会攻击你?是你出名了,别人来诈骗你,如果你是一个很小的公司,别人根本不会关注你。

另外,就是你的业务很有价值,像年初的时候天猫新客户注册给你400块,当时每天损失要超过500万。你有很多业务价值,如果安全人员事先不知道我们后续有这么多业务要上,等到最后变更评审的时候才知道,黑客产业盯上你的时候肯定会有攻击。

如果你事先知道我们会有哪些业务要上,评审的时候就知道业务流程是怎么样的,如果你有更好的安全判断给你的业务团队,并降低相关风险,那从安全运维角度来说风险可以降低减少运维时的问题。

正文会分三块跟大家作相应的介绍:

一、公司的关注点,会从董事会、老板来说;
二、DevSecOps ,给大家介绍一下 DevSecOps 的一些定义,目前国际上面调查下来的一些情况;
三、业务安全以及催化作用,主要是针对我们万达科技网络集团自己内部实现的一些情况。

一、公司的关注点

在上世纪初的时候有一个纪录片,公司当时的发展,它的目的。从高到低会有三块:

  • 公司的使命愿景,一般说公司未来二三十年公司使命是什么;
    
  •  中短期的会有一个战略发展;
    
  •  商业目标,从公司发展来说,公司要持续运营首先的目的是赚钱,通过什么方式来赚钱?通过实现它的商业目标,有业务,有利润以后才能实现他中期的战略,来实现它的使命和愿景。
    

对于这部分怎么来实现呢?主要是通过业务,业务安全方面一般会遇到什么问题?做我们这个业务它的风险有哪些?它所需要的资金成本、人力成本的投入是不是能带来相应的产出?最后我们做了这些事情以后会对我们业务带来哪些好处,会对我们占领市场有哪些影响?我们要了解我们的业务最直接的就是和业务部门进行沟通,因为业务部门是业务的需求方,目前我在万达负责支付业务安全,我会对我负责的业务情况进行梳理。

年初我们对帐户体系进行了梳理,这块会有哪些业务帐户的入口,C端、B端的帐户体系是怎样的。比如业务帐户登陆注册的时候,分别会遇到哪些问题,目前的安全风险控制措施是怎么样的?因为在C端之前梳理差不多了,对B端像是万达商场、航空公司、教育机构等大型商户,还有一些POS商户,还有我们自己内部专门给一些小超市或者便利店的智能终端平台等。

除了支付这部分以外,还有仓储的盘点,你的进、销、存。在不同的业务场景下,进行相应的业务梳理以后,你会发现除了前面提到的帐户安全,还可以和风控部门、业务部门一起看一下历史资金损失的情况,查找造成损失的原因。

一般像刷卡交易,卡的来源比如我们定义过广西的某地、福建某地、东北某地,会是一些盗卡盗刷的高发区,或者你带着你的银行卡在国外使用,某些银行在你消费后很快银行后台业务人员会打电话和你确认业务交易。在业务风控之外,大家现在越来越多的使用APP,在APP里面能做的风控有什么?

比如最常用的设备指纹,这个用来验证这个设备、定位等是否真实。分析过影响和历史的资金损失以后,你可以跟业务说我们从安全角度可以对业务有什么帮助。比如前面提到的帐户,有人会利用短信验证码的发送对别人进行骚扰(“诈你妹”),我们的短信费成本在三分左右,提前安全措施以后“诈你妹”至少不会进来了。

短信接口节省的费用差不多是20%-40%,这部分节约下来的钱就可以跟老板说,这就是我们赚取的利润了。同时因为你的短信,比如说拥塞了,客户体验弱了,那我们客户体验这块也跟着提升了,你要有双赢的思维。

业务在得到你的帮助以后,下次有新业务需求,肯定也会找你沟通。如果从始至终业务没有来找我们,跳过安全风险直接上线,出现的损失肯定都是业务自己承担了。业务产品在做到基础安全的同时还做好了业务安全,最终有利于业务部门,有利于老板。

有利于开发测试和运维部门,安全人员怎么给他们提供服务呢?一般来说我会增加相应的一些安全培训,对运维来介绍如何处理安全事件,操作系统、数据库、中间件、开源框架的安全加固等?对开发介绍安全开发标准规范,代码安全检测方式和代码安全问题?而且对于一些好的开发人员在学习了安全以后,也可以吸收到我们的安全团队里面,因为只要你做开发肯定会遇到Bug,你解决原生的浏览器的Bug和容器的Bug以后,肯定会有信心的满足。

我们做开发的都是小男孩,总是会喜欢像机械类的,之前有遇到一个朋友,说看到小时候没有买的变形金刚,一定要买过来,买好以后把它拼起来。其实对于资深的开发人员也是一样的,有很多开发的问题我把它解决掉了,解决掉了以后就会非常开心。

所以我们只要帮助他们,并且给他们相应的帮助以后他们得到了提升,只要他们提升了,收入会提升、工作能力会提升、代码质量会提高,提高以后就可以降低安全事件的发生率。运维人员晚上接到的事件电话少了,老婆不会骂他了,孩子不会哭了。减少了修改Bug的次数,同时减少问题了,你又向老板证明了DevSecOps的价值。

二、DevSecOps

接下来我要给大家介绍 DevSecOps ,最早是使用的 DevOpsSec ,2017年RSA年度会议上 DevSecOps 成为了热门的词汇。

2.1 DevSecOps 的特点

DevSecOps 的特点是有哪些呢?

每个人都要对安全负责,你开发一个产品或者开发一串代码上线出现了问题,如果当时没有采取合适的手段进行相应的阻断,这个事件肯定就升级了。运维肯定想这个产品又不是我开发的,问题肯定还是让测试和研发来背锅。

测试在事件回故的过程会说当时因为时间紧、任务重,一般来说我不可能做完整测试,只能测试变化的部分。把锅给了研发,那研发肯定会想业务给我要求这么紧,安全之前又没有给我提供合适的资料,我想只要满足基本安全要求就可以了。

在这种情况下基于前面跟大家说的,我们把安全纳入进来,在开发的时候,我这边也给你提供相应的平台,比如代码检测。或者说你中间遇到的一些安全的逻辑问题,你放到知识库里面,相应的业务场景进行一个选择,之前历史上遇到的那些问题都可以看到,避免再次出现。

大家都合作起来了,还会对业务有帮助,只要这些都做好了,高层肯定会很乐意的,高层就是希望大家都好好干活,帮他赚钱,那高层的决策就更好做了,科技团队之间就会有非常好的协作。而且大家都专注于风险,因为从业务角度更容易推动安全工作、科技工作,因为老板关注的是业务

2.2 DevSecOps 的现状

接下来我们介绍一下 sonatype 社区调查,有超过2200名IT专业人员参与调查显示,成熟的开发组织确保自动化安全性在早期,到处,大规模中融入 DevOps 实践中。

这块是逆向调查,安全性是抑制灵活性的一个因素,对于互联网企业来说是希望最快的。这块的整体调查的情况是这样的:38%的受访者觉得安全是最关心的内容,他们也会花大量时间放在这个上面,同时有部分开发团队安全实践,在他们的工作中采用率提高到了60%;还有62%的人认为没有足够的时间用到安全上面。

安全措施对大家来说还是非常重要的,因为从调查来说84%的开发和运维人员是认可的,只有16%觉得这块对自己没有很好的帮助。

如何把 DevSecOps 结合起来做好呢?其实安全人员你要知道你自己是有底线的,一般把安全基线设好以后,我们知道哪些安全业务是基础的,在哪些情况下你的安全是要设防的。比如我们网络里面会分核心区、应用区,如果你对外联再分的细一点,还有第三方外联区。

在这个时候比如有个系统要上了,业务说直接放到DMZ吧,这样我们连业务更快,客户连进来会更多,同时你后台业务都不要放在数据库了。但是对于运维和安全人员来说,你把这个放在DMZ,如果有个漏洞,或者发现新的Bug,这时候有个攻击进来,那数据肯定全部丢失了。

对于业务来说你可以给他相应的解释,中间如果你有哪些要求,我们可以多加一些流量等等。通过这些辅助的措施,如果有比较好的合作,业务上都可以来协助你的。

2.3 基线管理

同时还要有一个比较好的基线的管理,我们这边对业务是进行了一个梳理,你的帐户处理方面基线有哪些?

比如有APP的、H5的。APP的安全性较高,可以在APP里有注册、登录、银行卡鉴权、身份认证、支付功能,支付包括对内对外的支付都可以的。H5的安全性相对低一些,只能做注册、登录和对内支付,比如买万达自己的理财产品,不对对外支付。

基于这些你要对业务有比较好的分析,才能做出上述分析和判断。接下来,我介绍如何向领导和其他部门介绍工作成果。老板和很多业务部门的领导对于你的安全工作做的怎么样,对于你的技术怎么样他并不一定了解,这块我们怎么做到让老板觉得你的工作做的很好,而且对外宣传的时候也很牛呢?那就是可视化。

近几年大家不管到什么地方参观,一般都会听到这就是我们的安全监控,我们的业务全球有多大,我们受到的攻击情况怎么样,对于这些攻击我们是怎么处置的。对于不了解我们开发的人来说你把可视化东西展现给他看了以后,管理层觉得你的工作做到位了,同时业务团队也觉得你确实帮他们,科技团队也觉得你们这些工作做的是有效果的。你要把你的这些工作做到位,你就要现在的安全人员比外面的采购要更贵,你要让大家共同成长,要让下面的人员有一个比较好的职业发展,让大家相互认可,相互有更好的协作。

三、业务安全以及它的催化作用

接下来就是最重要的一部分,业务安全以及它的催化作用,其实前面说的这些都是相应的铺垫。

3.1 业务安全

业务安全是指保护业务系统免受安全威胁的措施和手段,广义的业务安全还包括像IT系统的软硬件平台、操作系统、数据库、中间件,还有业务系统本身的软件设备,还有业务系统的那些服务。

我们知道了它的定义以后,还要知道我们业务安全的目标,结合前面老板所关注的,我们要支持公司多战略,保障我们业务的发展,同时在做这些事情的时候还要减少资金的损失。当然这些我们肯定要把它分出相应的优先级,对于某些业务是近期要上的业务,对于这些业务要做到哪些?比如遇到问题的时候,哪些可以先放过去,让它先上线,哪些是必须要更改的?

3.2 业务安全的催化作用

3.2.1 安全地满足业务功能需求

最早对于安全来说只会想到软件安全,可能说软件安全仅仅限于代码扫描、漏洞补丁,使用的框架,对于敏捷开发来说功能才是第一位,安全问题等上线了再改。而且安全基线有可能只是实现了一部分,我们现在要对业务安全建立一个整体的风控专家库。因为我负责的是支付这块,支付有B端业务,酒店、商场、航空公司,然后B端针对商户的运营团队,还有C端的业务,比如快钱钱包APP、飞凡APP。

还有运营人员,以及发生事件以后事件的管理团队,还有涉及经济案件的案件处理团队,同时还有我们的信息安全、开发和运维,大家组成一个联合的风险控制的专家。在业务提出需求的初期,我们就提供最基础的,每个人所关注的点,大家一起来看你这个业务要上线的时候,在设计的时候历史上类似的业务我们遇到过哪些问题,它可能有哪些安全问题,我们怎么去解决它。

如果把这块做的比较好,同时我们的COO、CRO、CTO、CSO都会比较满意,一开始可能会花的人力比较多,因为要把所有的业务场景过一遍,把业务问题过一遍,把问题列出来。

列出来以后就可以基于安全的情况,后面有相应的软件产品可以进行勾选,在后续如果做的更好的时候可以说基于这个业务产品我们推荐你用哪些开发工具,用哪些框架,对运维和开发来说也可以减轻他们的工作,因为最佳实践的工作方式都列出来了,这样安全就更好的融入 DevSecOps 里面去了。

3.2.2 从被动到主动

只要你真的做到了这些,我们的安全就能从被动到主动了,就可以减少你背锅的机率。防护安全攻击,就像房子一样,门窗是基础的,然后通过防盗门、防盗窗、摄像监控进一步,在这些做好了家里不被盗,企业的资金损失就会减少。

企业里也是同样的道理。我们把安全风险管控做到前面,我们的 SDLC 就相应的完善了。业务部门也会主动提出一些安全要求了,他们会提出自己的需求,比如某些业务一定要通过安全风险分析,某此业务要通过风险管控系统,这样我们科技人员的工作就更好开展了。

3.3.3 我们的成果

目前只要做好上面那些以后,就会有一些比较好的成果,业务、开发、安全都有绩效,开发也可以激励我们的安全、风险和业务提出更好的安全需求,完善我们的 SDLC 。只要大家从系统角度进行威胁分析,后续的安全设计、安全开发、安全测试、安全部署,这一整套流程大家都可以很好的组合在一起。

一、设计产品雏形,要求我们的业务和产品,还有风控团队,对产品描述、产品设计、业务模块、财务模块、业务安全模块、基础安全模块等八大内容的分析、整体的环境与目标市场的分析。因为老板会看市场目标这块,但是具体业务内容业务部门会看产品的设计,业务的模块,开发人员会看业务安全模块和基础安全模块是怎样的。

二、**验证产品价值**,产品的价值主张验证计划,业务测试以及风险的验证。
三、**威胁分析综合评估与结论**,整个风控专家团队和业务团队一起评出,说这个业务确实可以上了,同时对他遇到的系统风险业务做了哪些工作,对于目前的材料,或者对后续发展的业务我们做了哪些结论和建议。

业务安全的催化作用有八大模块:**产品描述、产品设计、业务模块,财务模块,业务安全控制模块、基础安全控制模块、清结算模块、产品运营模块。**如果这些都做好了,其实还是要结合我们的业务场景,不断梳理我们业务安全要求。

因为你的业务在不断变化,公司架构肯定也是在不断变化,安全需求变化还是比较频繁的,结合业务来完善基础安全要求,结合业务调整系统构架,同时自动输出开发安全要求、业务安全要求、运维安全要求,这样就真的做好了,就可以对外提供产品销售了。同时还要提供我们自动化测试的覆盖率,比如说基础的代码扫描,安全基线的扫描,包括像中间件、数据库,还有移动安全的扫描等等。