如今,安全威胁的破坏力正以前所未有的速度随着信息化程度的加深而增长,扩大构建数字化业务通常会导致更大的受攻击面。要应对当前和未来的安全威胁,只依靠传统的安全产品投入已显得力不从心,除了购买安全产品,更重要的是安全意识的增强和安全流程的建设。
在各种安全建设方案中,“安全能力前置”是明显的趋势。就像一幢建造时地基不稳、墙体不牢、地板塌陷的房子无法在建成后依靠几根柱子的支撑屹立不倒,缺少安全开发过程的应用,在后期运营时必然会漏洞百出。
我们认为安全开发实践有以下5条重要的原则:
1、安全培训
安全技能培训对弥补技术能力差距以及管理产品生命周期每一个环节的安全性至关重要。公司需要显性地投资在安全意识和安全技能的培训上,以提高开发人员安全编码的意识和能力,并理解安全部门提出的建议和做出的行为,这对于业务团队与安全团队的高效协作非常重要。
根据SANS研究所的安全状况报告,早在2016年在美国超过一半的调查公司样本已经将安全培训作为了公司主要任务之一。而直到今天,能够懂得安全培训重要性的中国公司也是少数派,能将培训意愿转化为培训行为的企业更是凤毛麟角。
2、安全应用开发
当下,应用程序的安全性已经引起了企业的普遍重视。为了确保开发的安全性,有两个重要的实践方法:
(1)使用以安全性为中心的流程框架。
(2)将安全团队的反馈纳入开发人员的工作流和每个迭代周期的演示评审中。
对于流程框架,我们认为最好根据最佳实践、软件库、标准以及企业的特定行业规定,选择采用经过验证且适当的以安全为重点的框架。以下两个著名的框架都是规则、技术和过程的集合,它们指导开发组织,并提供可应用的资源。虽然有不同的关注点,但从根本上讲都是以安全为导向的。
微软安全开发生命周期(SDL):此过程非常适合现有的DevOps环境,并提供了一个更通用的结构,在整个过程中很好地整合了安全性。根据我们的经验,它并不限于任何特定的代码类型或操作环境。
开源Web应用程序安全项目(OWASP):这个社区网站提供有关漏洞、相关影响和风险的数据;以及开发和检测安全Web应用程序的最佳实践指南。
企业需要积极地将安全团队引入开发过程,以便尽早获取他们的反馈,并在整个开发工作流和迭代原型演示中邀请他们参与。这样做的好处是可以让团队在开发阶段同时处理安全风险,以避免在开发过程中引入代价高昂的风险。
与开发阶段相比,在产品运营和维护阶段消除风险的代价至少会高出数十倍。但是,很多开发团队并不适应与安全团队协作,迈出第一步并坚持不懈是关键,最终基于安全性的开发工作流将成为总体安全策略中的一个巨大优势。
3、Security+DevOps=DevSecOps
DevSecOps是一个正在逐渐形成的趋势,它将安全性完全集成到DevOps工作流中,从而创建了一个统一的过程。正如DevOps提出时,是要同时解决开发和运维问题一样,现在也必须同时解决安全问题。
Security + DevOp
或者DevSecOps
不仅涉及扩展每个阶段的工作内容以包含安全要素,而且还包括跨阶段,跨部门的培训,以便在开发代码时降低风险。
4、应用安全测试(AST)
持续测试非常重要,应用程序安全测试(AST)工具应该成为每个开发人员工具链的一个必备的组成部分。现在有很多优秀的工具,包括开源工具。在考虑应用程序安全测试工具时,最好预先确定要使用的工具集,以便优化代码检测的步骤和流程。否则,工具可能无法完整且高效地检测代码。
AST工具分为几个基本的类别:
(1)静态应用程序安全测试(SAST)
(2)动态应用程序安全测试(DAST)
(3)交互式应用程序安全测试(IAST)
Gartner在2017年的报告指出,“大多数开发应用程序的企业都已经采用了某种形式的AST,但不同的技术在成熟度上有所不同。DAST
和SAST
是当前应用最广泛的产品类型,但IAST的市场需求正呈现高速的增长。”
5、持续地监控和分析
持续地监控和分析有助于保护运维阶段的应用。从监控中得到持续的反馈,并将其反哺到开发过程中。监控和分析运维阶段的应用是一种基本的常识性操作,它可以为企业提供有价值的信息和数据,帮助企业拦截潜在的漏洞,降低潜在的风险。
如同运维阶段的安全无法离开开发安全,开发安全也无法脱离运维安全单独实现。一个没有反馈机制的流程肯定不是一个好流程。
推荐相关文章:web安全教程
以上是安全开发实践原则的详细内容。更多信息请关注PHP中文网其他相关文章!