如何在软件研发阶段落地安全实践

Posted 华为云开发者联盟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在软件研发阶段落地安全实践相关的知识,希望对你有一定的参考价值。

摘要:做好安全发布我们重点围绕事件响应计划、安全性检查、软件签名证书三个方面来看一下。

本文分享自华为云社区《DevSecOps软件研发安全实践——发布篇》,作者: 华为云PaaS小助手。

前言

说到发布,就会想到部署,本文中讨论的部署发布是基于DevOps的背景。在《DevOps实践指南》中对这两个词进行了明确的定义,部署指在特定环境中安装指定版本的软件,发布是把一个或者一组特性提供给所有客户或者一部分客户。一个是面向环境的技术操作,一个是面向用户的业务决策。由此可见,部署是发布的前提,要通过持续部署,来支持业务的按需发布。

软件发布后,运行阶段错误而导致的软件安全问题在所有安全问题中占有较大比重。发布作为软件上线前的最后一道安全防线,有着举足轻重的地位。

如何做好安全发布

做好安全发布我们重点围绕事件响应计划、安全性检查、软件签名证书三个方面来看一下。

事件响应计划

在软件的发布阶段,企业需要建立一整套的安全发布标准,有相应的发布安全流程和规范,安全事件响应计划和发布决策,确保发布活动能够安全有序的开展。

事件响应计划,包括但不限于标准安全事件响应流程、应急安全事件响应流程,安全负责人与联系方式等。即使在发布时不包含任何已知漏洞的产品,也可能在日后面临新出现的威胁。需要注意的是,如果产品中包含第三方的代码,也需要留下第三方的联系方式并加入事件响应计划,以便在发生问题时能够找到对应的人。

完善的安全事件响应计划,在软件发布后对软件供应链安全事件、软件安全漏洞披露事件能够进行快速的安全响应,控制和消除安全事件所带来的安全威胁和不良影响,进而追溯和解决造成安全事件的根源所在。

安全性检查

发布前,需要使用安全分析工具来进行全面的漏洞扫描,根据漏洞扫描结果执行对应的漏洞修复计划。漏洞扫描可以从主机、镜像、Web、终端应用、网络和数据库多个维度进行扫描,保证全场景覆盖。

安全性检查包括但不限于环境安全部署验证、安全配置基线检测、镜像安全扫描、病毒扫描、主机漏洞扫描等活动,有条件可以对于前期的所有工作进行二次审查,根据检查结果进行最终安全评估,将评估结果作为发布的前置条件。

发布阶段解决的安全问题都是在现实生产环境中出现的安全问题,所以要彻底检查生产环境和开发环境的配置差异。研究显示,现有应用系统中由于安全配置错误导致的安全漏洞已经成为系统漏洞的主要来源之一。配置管理工具是确保发布阶段安全性的关键因素,通过配置管理工具可以提供对基础架构配置的可见性,继而就可以对系统配置进行审计和检查,保护运行时的环境基础架构。业界常用配置管理工具有Chef、Ansible、Puppet、Terraform和 SaltStack。

发布过程中,在安全检查节点进行安全检查,有对应的告警机制,发布中遇到问题风险可以执行安全回退和备份机制,遵循安全事件响应计划。同时建议采用低风险的发布策略,如金丝雀发布和蓝绿发布等方式。

软件签名和证书

为了防止软件包在传递过程或发布后被恶意篡改,企业会通过给软件代码加上数字签名,来保证代码的真实性和完整性,真实性是让用户确信此软件的来源,完整性是确保软件发布后没有被篡改。

代码签名证书通常由受信任的第三方机构 CA 颁发,和无签名代码相比,具有证书的代码有更高的可靠性。软件开发商可以使用代码签名证书来签名内核代码 .sys文件、ActiveX文件、 .exe 、 和dll 文件以及智能手机开发的移动应用软件。数字签名保护用户不会被病毒、恶意代码和间谍软件所侵害,也保护了软件开发者的利益,让软件能在互联网上快速安全地发布。

软件发布后,要对遇到的各种问题和文档进行存档,为紧急响应和产品升级提供帮助。

华为云安全发布实践

华为云的多场景高精度漏洞扫描能力,是软件上线前走好最后一公里的有力保障。

  • 全场景漏洞覆盖:覆盖Web、主机、镜像、二进制、终端应用的全场景漏洞扫描能力,支持华为、OWASP等业界优秀实践,支持等保0等标准。
  • 专业的修复建议:提供典型Web漏洞精准检测,在CVE漏洞评估方面更贴近真实威胁;在APK开源组件扫描和信息泄露检测方面,具备更精准的检测能力,因此可以提供更专业的修复建议。
  • 可升级的漏洞检测能力:聚焦最新安全漏洞,动态扩展扫描能力;可灵活集成第三方漏洞扫描引擎,统一报告展示,支持漏洞去重,也可被集成至第三方持续集成/持续发布流水线中。

同时,按照华为云的发布部署规定,在开发、部署、上线过程中,必须完成自检,并承诺已满足上线的可运营要求。对于中低风险的云服务,自检通过后即可上线。自检结果也同步提交审计。自检内容包括但不限于完整性校验、工程基线评审、服务自检、承诺安全可信、容器和基础设施安全等,同时会针对安全问题进行回溯分析,对安全问题整改,保证发布产品的安全可信。对高风险的云服务,通过更多的投入、在短时间内执行更严格的上线检测和审批,确保其及时并安全上线,保障租户利益。

写在最后

完成安全发布并不是最后一步,一旦应用部署在线上生产环境中并稳定下来后,就需要启动安全监控和运维。随着越来越多的开发团队不断改进自己的流程并采用新工具,安全问题变得越来越重要,需要企业认真对待。DevSecOps 是一个循环过程,应持续迭代并应用于每次新代码部署。漏洞利用和攻击者在不断进化,软件团队的安全技能发展也至关重要。

参考附录

1.《华为云安全白皮书》.华为技术有限公司.

2.《研发运营安全白皮书》. 云计算开源产业联盟.

3.《DevOps实践指南》.Gene Kim,Jez Humble,Patrick Debois,John Willis.人民邮电出版社.

4. 每天扫描超300亿行代码,DevSecOps在华为的落地与实践_DevOps

点击关注,第一时间了解华为云新鲜技术~

以上是关于如何在软件研发阶段落地安全实践的主要内容,如果未能解决你的问题,请参考以下文章

如何从零到一落地实践接口自动化测试?

如何使用 CODING 进行瀑布流式研发

如何做好安全开发?

微服务治理实践 | 金丝雀发布

TypeScript 研发规约落地实践

干货 | 特定企业微服务架构落地的研究与实践