企业安全开发建设 | 软件开发流程是主线,管控需贯穿全生命周期
2021-01-26
Part 1开发安全现状及趋势分析
当前部分企业已经充分认识到开发安全在整个软件生命周期的重要性,国家也正从重点行业着手逐步要求企业完善软件安全开发能力建设。这在宏观政策、市场现状、技术趋势三个方面均有所体现:
宏观政策:网络安全法第三十三条规定,建设关键信息基础设施应当确保其具有支持业务稳定、持续运行的性能,并保证安全技术措施同步规划、同步建设、同步使用。这与应用开发安全理念完美契合,建设即合规。
市场现状:2020年开发安全市场已经逐渐发展起来,这从企业自身对开发安全重要性的认识、企业客户增加开发安全预算投入、安全厂商持续涌入三个维度即可见一斑。
技术趋势:2018年DevSecOps理念在RSA大会被提出,受到国内企业追捧,DevSecOps作为安全领域中逐渐步入成熟期的技术体系,本质上继承了软件安全开发全生命周期安全关口左移的理念。
软件安全开发全生命周期模型由来已久,开发安全理论体系已有成熟的方法论。国内外可参考知名模型框架包括微软的SDL、OWASP的S-SDLC及CLASP、NIST SP800-64、BSIMM、SAMM。软件安全开发的流程,各个阶段需要进行的安全活动,以及持续运营后的评价体系,都可以从以上模型中得到借鉴参考。但是国内大多数企业在尝试进行开发安全体系实践过程中会面临很多问题,导致难以落地。主要痛点包括:
1)软件安全开发全生命周期流程复杂,与多数企业软件开发流程的不兼容导致很难有效管控;
2)企业缺少自动化工具与可视化平台支撑,面对迭代开发持续交付,提高效率是亟待解决的问题;
3)市场缺少安全开发专业人才,具体的开发安全工作对人员的安全能力有很强的依赖性,无法有效落地;
4)企业缺少对开发安全实践评价及审计能力,导致相应安全活动无法确定实施效果及进行有效改进,最终演变成走形式。
所以,无论是管理层还是参与具体开发安全工作的团队,都应从关乎可行性的维度,如何闭环、如何量化、如何不影响开发进度、如何自动化智能化等方面考虑企业构建开发安全能力的思路,以期在实践中获得更好的落地效果。
Part 2开发安全能力建设思路要点
1、建设契合企业自身的开发安全体系
首先针对企业开发模式及安全现状进行充分调研,在了解企业内相关信息之后,评估现有安全实施过程、最新监管要求和业界最佳实践的差距,听取部门内相关人员对于安全指引的意见和建议,为安全开发体系的建设、修订和落地工作提供依据。
软件安全开发体系实施过程中所需要的知识库需要针对企业自身情况进行梳理定制,这就要求我们尤其需要注意需求阶段的不同业务需求,需要依据企业所在行业的监管合规要求及具有行业特点的业务场景进行风险分析和安全需求识别,通过威胁建模或者威胁列表的方式,将业务场景与安全需求进行对应,为后续工具部署运行做支撑。在设计阶段,针对每一条安全需求提供安全、有效、可落地的设计方案,供开发人员在实现安全需求过程参考借鉴;在编码阶段,针对每一条安全需求对应给出真实安全编码示例,并且对应导出安全组件的使用说明;在测试阶段,针对每一条安全需求对应给出安全测试用例。
在此基础上,还需结合访谈调研的结果,以安全开发管控工具为核心定制契合企业的安全开发管控流程。其中需要明确:平台角色设定与安全开发管控流程中所参与角色的关联、哪些关键里程碑事件需要在平台上进行评审、哪些安全活动需要在平台上进行统一调度或者自动化工作,以最终确定快速可落地的软件安全开发体系。
企业开发安全体系架构图
2、建设自动化、可视化的工具平台体系
在快速迭代开发的过程中,盲目加入传统安全工作必然会对软件交付进度造成负面影响。为规避这种情况的发生,企业应以软件开发流程为主线,建设自动化、可视化的安全开发管控工具平台,从开发的需求阶段到上线后的运维阶段,都可以基于丰富、专业的安全开发知识图谱,对应用系统进行安全开发流程管控。通过智能化安全需求设计分析、安全漏洞管理,以及定制化的安全需求、安全设计和安全测试文档生成,并基于CI/CD引擎集成从编码到运维所需的第三方安全工具,构建Pipeline自动化工作流,以在保障开发安全的前提下实现最大程度的降本增效。
在安全开发管控平台上统一管理软件开发全生命周期所介入的安全活动,并且对安全数据进行动态集中展示,是安全开发管控工作价值的直观体现。
工具平台体系图
3、建设可度量、持续运营的评价体系
在开发安全能力建设过程中,需要持续不断考量整个体系存在的不足,保障开发安全体系真正的落地。其中的关键项包括安全开发体系建设过程中的安全开发评审及安全开发培训情况,安全需求分析过程中的威胁识别、政策合规解读、安全需求覆盖度,安全设计过程中威胁建模的合理性,安全编码过程中静态安全扫描bug数,测试验收过程中的安全测试、代码审计漏洞数,部署运维过程中的集中安全评估情况等。举例如下:
1)在运行过程中,要对知识库无法覆盖的企业业务场景进行有效的安全需求、安全设计、安全编码、安全测试用例导出,需要对新出现的业务场景进行补充,以保障知识库可以支撑平台自动化分析的全面性和正确性。
2)在运营过程中,如果安全需求无法被有效度量其是否已被正确实现,那么需要进一步确认完善,并将安全需求与编码测试阶段检测出的缺陷进行有效对应,以保障安全需求及安全设计能够在编码测试阶段通过安全测试用例等工作度量。
4、可选的专家经验
通过js1996官网登录自身在多个行业企业客户的服务经验来看,以上三个开发安全能力建设的思路和要点,大多数企业都能较好的实践,但仍有部分企业由于组织架构、安全资源投入等问题,导致无法实现应有的效果。这时,可考虑以下三条原则是否得到有效落实:
1)企业必须自上而下地推行开发安全能力建设,且有相应的组织结构支撑。
2)针对不同角色,将有针对性的安全培训贯穿软件安全开发全生命周期。
3)能够进行风险偏移管理,根据预期安全目标,灵活地对安全活动进行裁剪。
Part 3金融行业企业开发安全实践
金融行业随着监管的精细化、趋严化,以及业务范围的扩大,业务系统需频繁变更甚至开发新系统,大量应用系统在自主开发或委托开发时,更多的是从业务功能实现和性能方面进行验收。因缺乏相应的技术手段和能力,对交付应用系统全生命周期的安全状况进行检验,导致上线后出现类似SQL注入、安全功能缺失等漏洞而遭受攻击,这不仅在受到网络攻击后影响正常业务运行,甚至会给企业造成经济和名誉的双重损失。
目前软件开发项目的安全管理重点关注代码扫描、等级保护测试等部分环节,缺乏对软件开发全生命周期的安全管理过程,且系统投产后漏洞修复的成本较高,甚至会延误预定的系统上线时间。为加强软件开发项目全生命周期安全管理,企业需要建立统一的软件开发项目安全管理制度、流程、技术规范标准及管理平台,在软件开发流程的每个阶段添加一系列关注安全性的活动,全面提升系统安全性。
可参考的实践过程如下:
1、根据监管要求及业内最佳实践,结合客户实际情况建立应用软件,开发全生命周期安全管理模型。其中,涵盖应用软件研发涉及的应用安全、终端安全、网络与通信安全、数据安全、系统安全等所有安全功能。
2、根据客户应用系统类型和特点,形成多套应用软件研发的安全管理场景,覆盖已知所有该客户应用系统安全开发需要。按照应用软件安全管理场景,形成每个场景所对应的需求、设计、开发、测试的完整安全基线。
3、结合企业目前软件开发基础设施,通过API接口对接企业内部软件开发项目管理平台以及其他第三方工具,真正将安全活动融入到软件开发项目管理流程中。在安全开发管控平台上,统一管理软件开发全生命周期所介入的安全活动,并且对安全数据进行动态集中展示。
4、按照应用软件研发安全管理解决方案,结合所建立的应用软件研发安全管理模型、技术资源库等,依托平台进行安全开发管控,在保证应用软件研发安全的前提下,提高应用软件研发的效率。
Part 4结语
安全能力建设的最大挑战是能否有效落地。借鉴上文介绍的开发安全能力建设实践,企业可将方法论及经验进行总结建模,并将程序型及经验型工作转化为工具平台的自动化操作方式,大幅度降低对初中级专业人员的工作量、专业技能要求。这不仅是开发安全落地的必经之路,也是DevSecOps能够持续发展的核心,更是安全服务行业未来的发展方向。