敏捷开发的十大安全原则

对于互联网和科技企业来说,“天下武功唯快不破”的时代已经过去。今天,一次重大的算法、产品、数据、服务、内容安全事故就可能给企业带来无法承受的财务、品牌损失甚至生存危机。没有安全的敏捷,比没有敏捷更加可怕。如何实现“敏捷安全”,正在成为所有“敏捷企业”的头等大事。

1.png

本文来自微信公众号“GoUpSec”。

对于互联网和科技企业来说,“天下武功唯快不破”的时代已经过去。今天,一次重大的算法、产品、数据、服务、内容安全事故就可能给企业带来无法承受的财务、品牌损失甚至生存危机。没有安全的敏捷,比没有敏捷更加可怕。如何实现“敏捷安全”,正在成为所有“敏捷企业”的头等大事。

在人工智能、5G、物联网、云计算的助推下,全球经济科技竞争日趋白热化,企业的核心竞争力是不仅是持续创新,更强调快速行动和快速交付(迭代)。因此,全球超过80%的科技企业(以及很多传统企业)已经开始践行敏捷开发方法。不幸的是,产品和应用的快速开发和交付也为网络犯罪分子提供了大量利用机会,特别是当软件生命周期流程没有得到足够的安全防护时。

那么,企业如何使敏捷开发变得更加安全呢?以下是ISF推荐的10个原则:

一、定义角色和职责

负责指导敏捷项目的高级领导者必须明确定义安全活动的角色和职责。这包括建立正式和非正式的汇报线,以及项目管理行动,如升级安全协议、强制会议和向安全团队报告项目状态。这有助于将安全嵌入到敏捷开发中,同时培养业务IT和安全团队之间的承诺、责任和建设性关系。

二、投资技能和培训

安全是“全攻全守”的团队运动,除了安全团队外,所有企业员工应都对安全负责。每个开发者都需要确保代码没有安全漏洞。开发者经常缺乏对安全问题的认知和理解,他们倾向于优先考虑软件交付而不是安全事务。为了赋予开发者权力,组织必须投资资源进行辅导、指导和提高技能。这包括安全培训和意识课程、来自高级开发者的指导、专门的敏捷安全培训活动,并经常访问像OWASP、CWE、BSIMM、SAFECode和CERT这样的免费资源。

三、实施信息风险管理流程

实现“敏捷安全”需要从开发生命周期一开始就植入安全性,而不是试图在完成后再添加。领导层必须推动建立覆盖整个开发生命周期的信息风险管理流程。这包括从安全角度达成高级应用架构的共识,确定“安全优先”的应用和功能列表,进行业务影响评估,在早期进行信息风险和脆弱性评估,以及报告新识别的风险的流程。领导层应该制定明确的信息风险问责机制,定义审查风险的流程,并确定风险管理决策方法。

四、用开发者能理解的方式制定安全要求

使用开发者的格式(用户故事、软件需求规范、故事映射、线框图、角色和用例)来明确安全要求,以便开发者更好地理解、定义和实施安全规范。这使得安全要求被视为产品开发待办事项中的功能要求,将安全要求转化为任务,将它们纳入需求管理工具,并将它们包括在项目的生产力指标中。

五、进行威胁建模

定期进行威胁建模练习,以了解应用的安全上下文,发现设计中不安全的部分,识别、分析和优先考虑威胁;发现最常见的攻击技术和方法,识别哪些威胁需要额外的安全测试,最重要的是,提前制定策略和解决方案来缓解每个威胁。

六、采用安全编程技术

要求开发者采用成熟的安全编程技术,如配对编程、重构、持续改进/持续开发、同行评审、安全迭代和测试驱动的开发。这提高了应用代码的非功能质量,并帮助消除可导致安全漏洞被利用的编程缺陷。此外,安全编程技术有助于引导不熟悉安全方法的开发者、并能显著提升以下开发场景的安全性,例如应用新技术(如AI或低代码/无代码)、开发应用的复杂部分、集成第三方应用或满足合规要求等。

七、进行独立的安全审查

让独立的审查者进行静态代码分析和动态分析。这为产品和应用的所有利益相关者,包括监管部门和用户,提供安全保证。

八、自动化安全测试

通常,安全团队不可能手动测试和评估每个敏捷迭代,需要采用某种自动化方法,持续检查应用代码的安全性,确保安全相关任务始终能一致和有效地完成。此外,通过自动化安全测试分析安全事件还能减轻安全团队和开发者的负担。

九、在验收标准中增加安全内容

创建、沟通并维护一套标准的安全验收标准,以确认:

对软件代码进行了独立审查。

已完成安全测试。

纳入应用的代码(包括开源代码)是可维护的、被跟踪的,并且来自经过验证的、有声誉的来源。

已成功满足迭代待办事项中的要求。

已解决所有缺陷和漏洞,并且已经对所有已知的安全问题进行了评估和处理。

十、评估安全性能

敏捷项目的安全评估通常并不充分,为了确保应用程序在生产环境中的性能不会受到安全控制的影响,必须进行全面的安全性能评估。这包括对应用程序进行压力测试、负载测试和峰值测试,以确保它在各种条件下都能安全、稳定地运行。

总结

随着敏捷开发方法的广泛采纳,应用安全问题变得越来越紧迫和重要。通过遵循上述10个原则,企业可以确保敏捷开发实践快速和高效的同时安全可靠。安全不应被视为一个独立的流程或任务,而应被整合到整个开发生命周期中,从需求收集到代码部署,再到维护和更新。只有这样,企业才能确保他们的应用程序不仅能满足业务需求,而且能抵御各种网络威胁,保护企业机密信息和用户隐私数据,符合国家监管法规。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论