衔接安全和开发人员之间差距的4个关键
安全问题和快速发展有时是矛盾的,但这并不是任何人的错,只是事情本身所带的性质。安全性的首要问题是保护企业免受应用程序安全问题带来的风险,而开发人员在努力追赶时间进度,以尽可能快的速度交付给客户产品。但由于安全和开发经常不存在交集,这些事项的优先级就会相互竞争,从而使两个团队产生摩擦。
这种摩擦会造成两个团队之间的矛盾,并不能使开发人员更好地工作,也不能帮助安全团队避免风险。因此,是时候将这一状况转移到一种共同责任的文化中了。在这种文化中,可以快速对安全问题做出反应并解决它们。正如思科的Wendy Nather所说,“安全应该设计成被采用,而不是被设计成强制执行。”
与其衡量开发人员在应用程序架构中留下了多少差距或错误,不如衡量发现和修复这些问题的速度。每个人都希望应用程序安全;我们只需要将安全和开发流程集成到一个无缝的工作流程中。
这从安全团队如何与开发人员合作开始。考虑到以下这几个关键因素或许能平衡两者之间的关系。
易于理解的安全内容
对于开发人员来说,从安全人员那里拿到一份超长安全注意事项文档对他们来说可能会很沮丧。这些文档通常难以理解,并且会使工作流程停止,因为它们是用一种对安全性有意义的语言编写的,而不是对开发人员有意义。
例如,如果安全团队建议开发人员“保护身份验证器不受未经授权的披露或修改”,大多数开发人员将不知道这意味着什么。尽管这是一个重要的安全考虑因素,但如果开发人员不知道安全性在谈论什么,就很难实现。如果安全性可以为开发人员提供更易于访问的指南,并以他们理解的语言编写,那么开发人员更有可能解决这些问题。
可操作的安全性
清晰易懂的安全指南只是开始。如果安全性不仅仅是解释需要修复的内容,并告诉开发人员如何修复它,那么安全性可以让开发人员的工作变得更轻松,并更快地实施他们的建议。
为了帮助他们达到目标,开发者不需要了解为什么会出现问题的所有细节,开发人员想知道的是希望他们做什么。通过提供可操作的指导,让他们尽快操作。
自动化的安全性
借助自动化工具可以更好地协调开发人员追求效率与安全之间的关系,通过将工具融入开发流程,从软件开发开始检测安全问题直到完成,以发现潜在的安全问题。如将静态应用程序测试、动态应用程序测试或开源成分分析等工具无缝地融入开发人员的工作流程。
建立安全性的时间
安全性应该在开发的早期进行,并适合于现有的开发生命周期和工作流。在完成之后再进行安全检测可能会造成花费更多的时间去修复,同时导致延期上线。
在适当的时间关注安全问题,开发人员可以在设计应用程序时修复安全问题和设计缺陷,而不是在他们已经实现了应用程序之后。
这种“左移”减少了开发人员和安全团队的风险,并简化了工作流程。
停止恐惧文化
做出这些改变需要文化转变。我们需要摆脱孤立的恐惧文化,转向集成、现代化、自动化的工作流程,让安全和开发共同协作。
这种文化更倾向于解决问题的速度,而不是弱点。
它需要衡量成功——比如解决问题的速度——而不是缺点。这种文化转型创造一种意识和协作,确保每个应用程序在设计上都是安全的。
文章来源:
https://www.darkreading.com/application-security/4-keys-to-bridging-the-gap-between-security-and-developers