DevOps 安全威胁,你值得关注!

Stella981
• 阅读 443

随着开源软件被大量引用,线上运行的代码中超过80%的部分是开源代码。软件安全的重点已经从内部代码转移到所引用开源部分上。DevOps安全需要关注内部研发团队的自研代码以及外部第三方开源软件的安全,对于内部代码,所使用的依赖必须清楚,如果底层依赖有风险,还必须快速反向分析哪些其他软件受到同样的威胁;目前DevOps安全团队和持续交付团队往往独立运行,信息交互频繁且效率低导致质量难以保证,安全问题整改的计划外工作量大,成为DevOps安全工作常见的痛点。

开源安全威胁日趋严重

随着互联网化的趋势日趋普遍,各大中小型企业都会基于开源软件构建各种业务系统,可以说开源已经成为了目前企业内部构建业务系统的重要组成部分。开源软件缩短了软件交付周期的优势确实很明显,但是开源软件的安全性也给企业带来很多麻烦,尤其是涉及关键业务的一些系统。引入开源组件的途径多种多样,有可能是开源的源码,也有可能是开源的第三方类库,或者从互联网上复制下来的代码段。

DevOps 安全威胁,你值得关注!

开源软件进入企业内部之后,还可能被其他团队继续使用,在经历了长时间的开发周期后,某个第三方开源软件被引用的情况已经变得无从追踪,一旦某个开源软件出现问题,影响范围无从确定,更谈不上风险控制。

DevOps 安全问题的维度

DevOps的落地使得软件交付的频率大幅度提升,这就进一步使得DevOps安全问题变得更加需要重视。那么,有哪些层面的安全问题需要考虑呢?

自研代码的安全

内部研发的代码,建议通过单元测试、静态扫描等基本手段进行安全合规性检查。自研代码发现问题可以给研发人员指定相应的任务去解决,因为这些代码都是自主可控,而开源代码缺陷基本不可能去修复,这是应对自研代码安全威胁的优势。自研代码经过扫描之后,可以知道目前的技术债务(Technical Debt)情况,防止技术债务不停增长。

技术债务类似于金融债务,它也会产生利息,这里的利息其实就是指由于鲁莽的设计决策导致需要在未来的开发中付出更多努力的后果。我们可以选择继续支付利息,也可以通过重构之前鲁莽的设计来将本金一次付清。虽然一次性付清本金需要代价,但却可以降低未来的利息。

DevOps 安全威胁,你值得关注!

开源的安全问题

传统开源安全威胁解决手段通常是成立开源技术专家组(委员会),列出目前已知的、企业必须重视的安全威胁列表,在上线前由安全组对交付件进行扫描,发现问题立即进行整改,然后再次反复此流程直到符合上线安全规范。从目前市场调查的情况来看,开源问题所带来的威胁遍布各行各业,且比例呈上升趋势。

DevOps 安全威胁,你值得关注!

从流程上来看,计划外工作量很大,并且在拔除一个安全威胁后,不清楚目前发现的这些威胁还是否影响到其他软件。造成这种的原因是交付件的依赖不清晰,导致不能反向排查安全问题的威胁。目前的一些工具(如Eclipse)提供了一些单个项目的依赖视图,但对于企业内部跨团队的分析依然显得能力不足。

DevOps 安全威胁,你值得关注!

解决策略

自研代码检查

目前比较流行的SonarQube提供了多种语言的基于静态规则的扫描,对用户的行为习惯侵入性极小,支持单元测试结果、代码重复率、技术债务等一系列非常有用的指标。很多企业在持续交付流水线中集成了SonarQube静态代码扫描的步骤。

在主流的二进制仓库Artifactory上,可以通过元数据将Sonar扫描的结果通过RestApi的方式记录在交付件上,这样在任何一个DevOps生命周期,都可以很清晰地知道这个交付件的静态质量,从而发布人员可以依据这些信息制订合理的质量关卡,方便运维人员筛选合适上线的交付件。

DevOps 安全威胁,你值得关注!

第三方开源安全检查

为避免在上线前紧急排查问题的窘境,必须将安全问题前置,即在构建甚至开发阶段发现问题并立即解决问题,再做构建或者测试。目前企业内部都是构建各自的私服,各个私服对于安全管控的能力参差不齐,必须有一种支持各种语言的第三方安全扫描的平台。

JFrog 公司提供的Artifactory + Xray 就是很好的一个组合。Artifactory提供了全语言的第三方依赖管理,Xray提供安全扫描,针对引入的任何第三方开源组件进行递归扫描,并提供可视化视图。

DevOps 安全威胁,你值得关注!

从上图中可以发现对于安全威胁给出了级别(高危、中级、低级),并且会有一些推荐的建议,方便及时作出调整。从这个层面解决了某一个软件引入的开源组件不清晰的问题,比Eclipse等工具的单一视图丰富很多。

对于开发工具,也可以有本地支持,比如在本地构建时从中央仓库获取依赖,并且触发第三方开源漏洞扫描的过程,立即反馈结果到开发者本地,开发者根据反馈决定是否提交代码到版本控制系统(或者内置策略阻止代码提交)。

DevOps 安全威胁,你值得关注!

对于反向排查安全威胁影响范围,Xray也有很好的支持,能够快速反向查询有哪些其他团队收到了该问题的威胁,这样可以及时通知相关团队进行修正并且不会有任何遗漏。值得一提的是,Xray还支持用户自定义的Issue,比如旧版本、性能问题等等,也可以据此快速反向排查影响范围。

DevOps 安全威胁,你值得关注!

统一的流程

关于DevOps安全,从流程角度来看,一个重要的痛点是流程割裂,即持续交付团队和安全团队难以协作实现真正的24小时持续运作的自动化流程。这个过程中涉及到很多规范的沟通协商,这些沟通依赖于人工来实现,距离如下图所示的理想流程相去甚远。

DevOps 安全威胁,你值得关注!

目前Xray支持统一的理想流程,帮助企业实现24小时动态监测所有外部依赖是否满足合规性。具体做法通常是在Jenkins上集成Artifactory,然后调用Artifactory 的 XrayScan 进行安全扫描。

stage('XrayScan') { def scanConfig = [ 'buildName' : buildInfo.name, 'buildNumber' : buildInfo.number, 'failBuild' : true ] def scanResult = artiServer.xrayScan scanConfig echo scanResult as String }123456789

为了尽可能早地发现和解决研发依赖的安全问题,我们提供了IDE的插件,开发人员在引入依赖的时候,我们就会对其进行深度递归扫描,对相应安全的风险进行提示,确保开发人员可以有信心地引用第三方源。

DevOps 安全威胁,你值得关注!

总结

安全是一个永久的话题,我们只有日趋接近,无法真正到达。DevOps的逐渐落地使得软件交付频率达到了前所未有的速度,对于DevOps过程中的安全管控提出了更严峻的挑战,只有自动化的统一流程结合全面深入的安全扫描才能够实现对任何一个安全细节都兼顾到,并且可以快速了解安全问题的影响范围。在这方面Artifactory + Xray 方案显然已经走在了前面,除了自身的扫描能力,也支持BlackDuck、aqua、whitesource、snyk等一系列主流安全漏洞扫描工具,值得大家关注与试用。

来源:CSDN,feng1456版权归原著作者所有

原文:https://blog.csdn.net/afandaafandaafanda/article/details/82226576

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Stella981 Stella981
2年前
DOIS 2019 DevOps国际峰会北京站来袭~
DevOps国际峰会是国内唯一的国际性DevOps技术峰会,由OSCAR 联盟指导、DevOps时代社区与高效运维社区联合主办,共邀全球80余名顶级专家畅谈DevOps体系与方法、过程与实践、工具与技术。会议召开时间:2019070508:00至2019070618:00结束会议召开地点:北京主办单位:DevOps
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Stella981 Stella981
2年前
JFrog汽车行业DevOps峰会,欢迎加入了解全球新趋势
JFrog汽车行业DevOps峰会北京时间:10月19日9:00您依靠数百万行代码来保持汽车的功能和安全。错误的软件会破坏安全性,性能和质量,这既是毁灭性的也是昂贵的。品牌声誉对您公司的成功至关重要。快速,可靠和安全的软件交付管道是您可以获得的最大竞争优势。随着软件交付最佳实践的不断发展,成功的道路可能会因分散注意力而受到阻碍。在您开发新技术和
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这