[关闭]
@gaoxiaoyunwei2017 2018-04-28T03:55:19.000000Z 字数 4567 阅读 480

业务安全与DevSecOps的最佳实践

白凡


分享:赵锐
编辑:白凡

讲师介绍:我平时负责信息安全工作,主要针对业务风险、信息安全、账户安全、开发安全。

image.png-225.6kB

介绍由四部分构成:

image.png-55.1kB

1. 困境

业务逻辑的安全极大地影响资金,比如说去年杭州某一个大场吸引用户注册的时候,因为逻辑漏洞损失了很大,那这个损失谁来担?
老板要求快速上线,基本功能都保证了,能测试,减少安全测试,功能快速迭代,上线再改,要开发新功能了怎么办?这就是甩锅游戏。

image.png-135.1kB

这是鄙视链,安全是麻烦制造者?整天提安全需求,增加开发工作,增加运维要求,增加不确定性,延后业务上线。运维很苦的,要7×24小时待命。

image.png-201.8kB

有以上困境的情况下,我们怎么解决这些问题?老板关注业务,就要从人性的角度上来讲,老板不懂技术,一般会跟你讲哲学,我们要跟老板讲管理和哲学,我们怎么实现的。

2. 业务安全与DevSecOps

马斯洛的需求理论,大家都知道,我分成三类:生存、归属、成长。IT人员都是困难群众。
image.png-151.1kB

我们要如何工作?想老板所想,急老板所急。老板分为两类,懂技术的和不懂技术的,不懂技术的都是业务老板,技术老板就跟他讲DevSecOps和DevOps。业务老板方面,我们怎么把能力展现给他?

image.png-157.5kB

简单介绍一下什么是业务安全。是指保护业务系统免受安全威胁的措施或手段。广义的业务安全应包括业务运行的软硬件平台(操作系统、数据库等)、业务系统自身(软件或设备)、业务所提供的服务的安全;狭义的业务安全指业务系统自有的软件与服务的安全。

image.png-226.2kB

业务安全的内容怎么把它转化成相应的金额?我去年做安全工作,我把安全分成几部分。不管是APP,还是网站,还是H5界面,只要有用户进来,都有账户体系,这是账户安全。通过业务安全充分体现工作,即降风险、减损失,这是转化成具体的金额。

image.png-94.6kB

我们是要把产品给真正需要的客户,而不是给羊毛党拿掉。数据安全方面,客户的信息、公司的信息泄露了,我们和业务部门、风控部门一起把相应的损失计算出来,安全团队和开发、运维团队的人均是多少计算出来,业务老板一看,这很关注,他觉得你帮公司省了钱,省下来的钱就是利润。

我们如何通过业务安全把这些数值减下来?把RTO、RPO减少,我们原来的定性内容改成定量,很多企业最终要考核KPI,原来是多写废代码。如果风控来查,懂技术的人是能发现的,我们把它变成时间点和金额的方式展现给老板。
image.png-80kB

2012年,Gartner介绍了DevSecOps的概念,最初使用的是“DevOpsSec”。

image.png-116.6kB

如何做好DevSecOps?也是按照生命周期最佳实践的方式,让安全成为每个人工作的一部分,将预防性控制集成到我们的共享源代码库中,将安全与部署管道集成。进行安全测试的时候,你有没有测到它?在上线过程中,要保证安全做好后,进行自动部署。

image.png-138.3kB

还有,要保护我们的部署管道,大部分系统都是通过互联网,你的版本机、发布机,放在互联网上,你能不能能被黑客控制?他们加了木马,我们所有的业务就没有了,所有的客户数据也没有了。还要将我们的部署活动与我们的变更审批流程相集成,安全人员也要有安全审核的这一关。减少对分离职责的依赖,Gartner提出,安全是每个人都有的责任,不可能把安全丢给一个人,如果安全都做好了,前面提到的金额数字就是帮公司创造的价值。

image.png-155.9kB

3. 最佳实践的要素

image.png-55.4kB
成功三要素包括人、技术、流程。所有的产品、所有的事情都是人做的,但是人无完人,只要是人做的产品,肯定多多少少会有一些问题,就像每个人会生病一样。对于人,我们怎么控制?还有,我们的流程,是不是都是完整?中间有没有缺少某些环节?在运维监控的过程中,发现了问题,是不是能及时找到相应的人员?有这么多新技术产生,我们选用的技术和方法是不是适用于我们的组织?

image.png-85.2kB

人是一切的基础,无论你实施多少种技术,最薄弱的环节肯定是人。如果大家有看过黑客的电影就知道,公司的保险库保护得再好,围墙再高,再有安全措施,如果里面的人把你直接带进去,把钥匙给你,里面所有的东西都能拿走了。人是实施所有工作的起点,在DevSecOps里,最难实施的因素就是人,人都是自私的,每个人都保护自己,而且多一事不如省一事。我们之前在实施的过程中,发现很多人拒绝别人对他的要求,我们通过升职加薪引导他是很好的办法。

告诉大家,安全人员的收入增长是最快的。京东的安全专家月薪170K,还招商务的外部沟通人员,月薪150K,我经常把这些信息发给我的小伙伴,如果我们下次要走出去,如果哪天公司遇到问题了,我们自己的提升,我们如何实现自己的目标?我在团队是这样的,大家定好几年内把年薪原来是六位数怎样提到七位数。我们比较好的认证和方法论,现在最新的,比如说区块链、云、大数据、AI人工智能,我们都在内部分享,空闲下来的时候,大家不能整天玩游戏,肯定要学习。我们在分享当中,一方面可以打破孤岛,第二方面是共同成长。只要有相互的促进和督促情况我们才会把工作做好。还有另外一种方式,通过考证了,大家给你发红包,大家一定会很好地学习的。
image.png-164.6kB

流程方面,DevOps的流程有很多,像版本控制、整合流程、CI/CD、合规等等。在版本控制过程中,我们原来做好版本管理的基础上,管理好版本服务器,如果竞争对手要黑我们的服务器,怎么保护它?我们要有相应的编码规范,这里面安全的内容是怎样的?一般来说,基础的编码规范是有一些公司声明。现在,编码越来越容易,大家都有相应的安全平台,做好后,到平台上扫描,开发人员去改,测试人员进行确认,没有问题就自动上线了。互联网的系统都是通过堆叠方式实现的,但是原来你只测自己的单元测试,大家结合在一起后,中间的业务逻辑有没有问题?中间会不会产生风险?这些都是需要考虑的。还有持续发布过程中的安全,监管有这么多法律要求,这是不是都能实现?内部人员可以看敏感信息的时候,如何进行授权?还有架构方面,要考虑上下游系统的平行情况。发生一些事件后,原来的思路都是让开发解决,外部攻击进来了,我们如何对抗?威胁情报有针对行业的,有通过国家层面的。当你的企业变成世界级独角兽后,很多公司找你麻烦的。

image.png-112.3kB

技术方面,自动化和配置管理工具,中间有没有漏洞?安全编码是不是最新的?根据不同的编码工具,不同的版本之间也有编码规范,最新spring一直有漏洞,官方提供的补丁一直是无效的,在这个过程中,我们自己如何在编码过程中给予规范?基线加固,大家会想到网络设备,其实我们的应用也要加固,比如账户安全体系,我们给客户开放的权限也要设置相应的法制。持续集成连续交付的修补,我能保证目前的能力下是最好的,上线后会有未知的BUG,所以我们要持续地修补和完善。应用程序的审核和扫描,安全人员可以在DevSecOps里,把重复性的繁琐工作里拿出来,做专门的业务逻辑,架构的安全分析。还有自动漏洞管理扫描、自动合规性扫描,如果涉及到银行卡支付的会知道,有ADSS,会有合规性的扫描要求。敏感信息管理这两年越来越严格了,如果信息泄露,会直接过来抓人、罚款的,这样老板很荒的。

image.png-124.2kB

4. 实现最佳实践的项目

image.png-55.1kB

我们在DevOps的基础上做DevSecOps,我们要进行选择,有没有成熟的工具?有没有成熟的接口?如果没有这些前提条件的时候,你心里没有底的,如果你没有做好,绩效就没有了。选择合适的DevSecOps的项目,自动化方面,选择工具和API。非强制监管方面,等保三级或以上系统,对监控要求很严格的,对于这方面,我们的经验是先做这方面的安全工作,做好后,先不对外发布,让监控来查,然后通过版本机发布对外部服务。前面的流程中,可以在开发、测试过程中,采用部分DevSecOps。

image.png-230.4kB

我们系统都是快速迭代的,目前大部分都是APP,不管是安卓的还是IOS的,还是Web site。我们的定级参考前面的账户安全、支付数据,比如内部的邮件系统,如果这个系统的数据泄露了,会丢失什么信息?

image.png-145.7kB

邮件里会发公司的行政资料,这些有问题了也无所谓的。我们放在微信公众号里吸引客户注册的,如果出了问题造成信息泄露,H5的安全性比较弱,我们只能做客户的引流,所以这块是没有问题的。如果这些沟通好了,我们就可以做DevSecOps了。我们还要参考DevSecOps的适用性、开发方法和项目约束,来选择合适的项目。

image.png-135.1kB

大家都知道,原来的时候,在瀑布模型里,软件产品生命周期大家都知道,也都参与其中。我们用的方式和方法都是最佳实践,可以延续下去。只是我们原来的工具,相应之间的接口都穿到一起了。比如我们原来有以色列的安全扫描工具,我们把代码传上去后,这没有自动,我们调控一个接口。我们把代码统一开发后,自动传输到系统里,根据产品的名称定义好,也知道谁提交的代码,生成报告后,把安全问题摘出来,把问题解决后重新提交。测试人员也是一样的,在后续的安全部署过程中,我们原来是手动点的,现在不用手动点了。我们要把各项安全工作进行相应的左移。
image.png-167.7kB

这些都做好之后,我们要开始计划,看有没有安全问题,准备我们的基线,就是根据你所用的操作系统、数据库、选择的开发语言,代码规范是怎样的,进行安全培训、威胁建模、收集安全需求。

image.png-181.7kB

接下来是创建,把安全IDE插件做好,进行安全拼写检查,在计划过程中的问题,在创建过程中都解决了,安全架构是很值钱的。开源产品好是好,当出现安全问题后,它不管你的。

image.png-183.2kB

前面做了这么多安全工作,要进行相应的验证,扫描已知的漏洞,这些都可以用自动化的工具进行。扫描基线、配置、未知漏洞,从而执行安全策略。做了验证之后,根据历史情况,解决的问题可以变成相应的金额给老板看。

image.png-124.2kB

上线之前,安全人员要做安全测试,查看之前经过什么攻击,进行Fuzz测试。

image.png-123.6kB

接下来,要进行相应的安全发布,要确定一致性、安全性。
image.png-281.4kB

上线后,要关注业务的情况,进行深度防御措施,应用安全控制,进行网络防护。

image.png-278.3kB

请外部的安全团队,把产品放到SRC上进行渗透测试。
image.png-114.8kB

RASP是运行时应用自我保护,UEBA是用户行为风险分析。

image.png-135.5kB

接下来就是响应,包括几部分。大家都知道我们的系统运行过程中出问题了,运维第一个看,进行相应的处理。

image.png-217.2kB

在这个过程中,DevSecOps要把安全的内容纳进去,对于安全的攻击要进行分类,从系统中分类出来。举个例子,把的流量、设备、软件、硬件都吃掉的情况下,怎么办?我们很多时候只看CPU百分之百、内存百分之百,卡死了,跑不动了,能不能设备重启?大型机重启时间很久的,这种情况下,我们要和运维人员一起,根据我们历史的情况,根据之前外部所学习的情况给我们相应的知识库里,把这些事情都放进去,帮助运维的人一起解决。

我们要进行相应的预测,要和前沿的机构保持联系,要参加像全球运维大会,知道最新的发展趋势,知道未来有什么情况出现,防范于未然。开发做得最好应该是在AIOps上,还有AI开发。我们最近研究汽车安全,有自动驾驶,要看你的算法是不是好的。
image.png-76.5kB

最后就是适应性,要持续改进和项目优化,我们把数据拿出来了,让老板越来越支持我们。

image.png-85.7kB

对于DevSecOps,我们也做了很多,我们在工信部的支持下,也支持我们的DevOps标准,现在名字是“研发运营一体化能力成熟度模型”。制定DevSecOps标准,最关键的几点是人员、工具、过程、流程、技术、分类和分级。

image.png-65.7kB

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注