2019可信云大会 | 王天青:持续交付演化之路:从 DevOps 到 DevSecOps

2019年7月3日09:54:00 发表评论 7 浏览

大家下午好!我今天讲的主题是关于从DevOps到DevSecOps,我们需要做哪些事情。

首先自我介绍一下。我之前主要是做JAVA开发,时间比较久,来DaoCloud之前,我就职于EMC中国研究院,主要从事和跟相关的研究工作,15年加入了互联网金融公司,任首席架构师。15年加入DaoCloud的时候,也是首席架构师,到了今年6月份的时候,我们做了一些调整,现在主要是负责整个产品设计,我们的产品的核心就是云原生,包括DevOps,为服务和容器。

2019可信云大会 | 王天青:持续交付演化之路:从 DevOps 到 DevSecOps

我先放一张图,这是我们对DevOps本质的理解,也是相当于把大家说到的东西梳理一下。包含技术规范、流程规范,最上面是文化建设,刚才嘉宾说到从上到下推行 DevOps 是非常容易的,但是从下到上非常困难。原因是推行DevOps涉及到整体体系的改变,包括对组织架构和整个企业文化建设都是有要求的。所以DevOps底层是工具支撑,包含开源的工具或者商业软件,这在市场上都非常多。我们可以分四个维度对工具进行分类:项目管理、研发管理、测试管理到部署管理,最后扩展到运维及运营。工具的涉及面比较广。我们要做的事情就是怎么把这些工具串起来。每个工具有自己的语言体系,有自己运作的方式,但是一旦把这些工具串起来以后,比如说我们有项目管理工具JIRA,里面包含了项目的概念,那项目怎么和代码库衔接起来,两者是什么关系。还有制品库,还有自动化测试等等这一系列概念之间的关系,我们需要把它们按照企业自己的流程和体协组织起来。同时,我们要把数据收集在一起,比如说这个项目里面有多少任务、代码提到多少次、持续提升流水线提升了多少次、单元测试结果是什么、自动化测试的结果是什么、是不是已经达到可以提上线申请等等,这个是我们今天在做的事情。上面的规范、流程,可以参考中国信通院输出的标准,这样的话大家可以有一个更深刻的认识。

接下来的这个流程每个企业都不一样。这个是我们的一个客户,他做的一款2C的软件。这个过程中大家可以看到,整个流程还是比较复杂的,包括从最早的立项、需求分析,需求评审,排优先级,项目排期,接着进行正开发,测试,然后是预生产和生产部署等,这个过程中大家可以看到,DevOps最核心的是除了底下的工具之外,更关键的是怎么把这些工具串在一起,支撑我们企业的流程。而这个企业的流程,每个企业都不一样,但大致流程可以分不同的项目管理、研发管理、测试、运维部署。

这是一个典型的工具链。项目管理我们可以用JIRA,测试用例管理可以用Zephyr,这是一个JIRA 的插件。通常我们都是用Excel管理测试用力,测试过程中一边执行,一边记录,这样效率就比较低。关于代码管理,可以用GitHub Enterprise,这是收费的软件。开源可以用GitLab Community版本。构建可以用Maven或者Gradle,单元测试可以用JUnit或者TestNG,接口测试可以用RTF,制品仓库可以用Nexus。要提交上线申请的时候,怎么告诉审核人员说我的测试是没有问题的,这个就需要进行代码评审,我们可以用GitHub Enterprise,代码质量管理可以用SonarQube。我们可以根据企业不同要求定制SonarQube的规则,当然这个要求还是非常高的。安全扫描,这个后面会讲到,CheckMarx是一家商业公司,是做白盒审计的,你可以把代码上传上去,它会给你做扫描,最后分析出到底有没有漏洞或者漏洞是什么。然后这个发布是DaoCloud的差评,应用性能管理包括系统、应用到业务的监控。压力测试一般可以用JMeter,很关键的一点,就是自动化执行。当我完成部署以后,我能不能自动触发一个测试的流水线,去跑一下接口测试,或者跑压力测试,跑完以后测试报告能够自动生成并通过邮件的方式发出来,包含这次跑了多少个压力测试,平均时间多长,错误率多少,这些很关键。还有很重要的一点,客户希望这些系统的用户认证是一体的,比如我们可以用OpenLdap或者Windows AD。把这些工具很好用起来,就基本涵盖了DevOps的主要工作了。

但是今天面临的安全问题是非常有挑战的,我在2015年加入互联网公司以后就遇到很多跟安全相关的问题,包括一些安全攻击,如果你做的不好就不行。我们发现Struts有很多安全漏洞,渗透测试的时候,通过SQL注入,最后拿到一些不应该拿到的信息。下面是一个比较有意思的案例,特斯拉器遭遇黑客劫持,因为它有一些端口没有关掉,就被黑客攻击了了,变为加密货币挖矿机,结果机密数据遭到泄露。整个攻击的路径是这样,一般都会扫描一些公共的端口,如果你没有设置密码就可以访问到,扫描里面的数据内容,然后拿到管理员的账号信息。黑客最终获取了一些敏感的用户数据。这是大概的攻击的顺序。当时的环境是在云的环境上。

这是传统的安全解决方案,大家如果做过安全应该会了解,包括防火墙,也会用WAF,还有身份认证管理,大家可以看到这里有很多,日志审计、堡垒机,包括流量清洗等等,生产网络和测试网络要隔离,我们要做一切的措施,包括人员的安全,组织架构,规章制度等等,这个是组成整个的安全体系。

今天话题回到云原生这块。今天我们说DevOps里面很关键一点,这些大部分的应用是由企业自己开发的,所以你拿到的不再是可执行程序,这个时候我们要从代码就开始做安全。这个是我们看到的一个安全体系的金字塔,从底层主机安全,CICD安全集成,可视化内部网络流量控制,然后到容器的防火墙,比如容器里执行了一个高安全的命令,这个时候可能存在问题,我们可以识别出来,最后是在网络这一层做。

DevSecOps,这是Gartner 2018年的一张图。大家可以看到,DevSecOps安全部分从预防开始,然后到检测,然后去响应,例如有些应用不能访问国外网站,一旦监测到就可以马上有所行动。云原生应用的安全包含三个阶段:构建、发布、运行。构建主要是在CI/CD,发布是在镜像仓库,运行主要是在容器平台做文章。

如果我们做DevSecOps,这个工具链我们可以选择的,这个可以看到代码存的一些漏洞,包括码质量分析和代码安全扫描,不同的厂家有不同的工具,做安全这个大部分都是商业软件,开源的比较少,像JFrog构建的依赖包的分析,还有镜像安全扫描,Clair它会看最新的CVE库,它相当于一个病毒库,它会对你的依赖包进行扫描,告诉你是否安全。接下来是运行时,首先是需要做一个流量的可观测性,还有流量安全控制,还有容器内运行安全,这一系列才能组成安全的Kubemetes,这个时候可以做一些安全策略。刚才说到的流量可观测性,可以用Apache的SskyWalking,容器运行安全用的是商业软件。

DevSecOps流程,代码仓库开始,我们会在构建的过程中会做安全扫描,代码库依赖包分析,进项分析,然后会做测试环境,也是需要安全的,然后是生产环境容器集群,这个也是来自Gartner的报告。

接下来主要讲一下流量安全客观性和安全控制,先讲一个思路。主要是这样的方式,首先是业务流量,会经过API网关,这是整个入口。接下来流量会到业务微服务上,这个时候是东西向,服务和服务以及服务对外部的访问,我都能知道相应的信息,所有的数据都会汇总到SkyWalking,最后通过流量控制基于Policy,我可以阻断甚至不安全访问,都可以在这个地方做,所有的应用是在这个上面。网关这块主要是对所有的请求都有一个把访问日志记录下来,一般的情况主要是记头部信息,还有返回的状态信息,对一些特定的流量可以堡垒记录下来。堡垒这块因为量比较大,所以一般这个是要采样或者把一个开发打开才会记录。后面就是像这种权限、鉴权等等,这个可以和认证系统对接。这个地方可观测性与控制,这个时候可以看到流量的情况,请求的信息,对每个请求可以看到访问的头部信息状态,这些东西都可以看到,这些所有数据都会存储在搜索引擎里面。这个是SkyWalking,主要用于采集应用的追踪数据,也可以采集监控的数据,最后这些数据都会存到搜索引擎上,然后我们看到一张图,服务和服务之间的关系,红色的是表示有一些安全问题。这个是最后的流量控制,这是开源Istio为本身具备的功能,我们可以自动设置策略。

后面是云原生安全平台,它是能深入到人机环境做可视化,容器内的防火墙,安全的自动化,以及支持多种云环境的环境。

时间关系,我的演讲就到这里,谢谢大家。

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: