安全责任通常由最终用户承担,而人们较少关注负责构建产品的开发人员。
为了成功地将安全性推广到开发人员,安全性必须易于部署。这是关于如何使安全成为最简单的选择,使构建安全的应用程序必须比构建不安全的应用程序更容易。
正如思科公司的Wendy Nather在2020年RSA主题演讲中所说:“安全应该被设计为被部署,而不仅仅是被设计来强制执行。”
随着越来越多人采用现代开发做法,开发人员被鼓励负责其产品的发布管理生命周期。然而,应用程序开发的快速步伐使得安全团队难以跟上其步伐,而且安全团队通常缺乏资源。安全团队很难及时为开发人员提供可访问、适用和可操作的指导。最后,开发人员没有获得必要的安全指导,这意味着部署的应用程序通常存在安全漏洞。
然而,加剧这些挑战的相同开发实践也有助于推进技术来解决这些问题。
基础设施即代码 (IaC) 就是这样一种技术。现代开发实践使用IaC将应用程序架构定义为代码,并自动部署这些架构。通过使用IaC,只需更新代码,应用程序架构就会变得更加安全和合规。IaC有助于为开发人员提供可访问的、适用的和可操作的指南,指导他们的应用程序架构应如何设计,以实现安全性。
安全民主化需要什么?
安全团队很少参与开发过程的早期阶段。当他们参与时,他们会遵循基于纸张的工作流程-在Word文档或Excel工作表上。现代安全做法应该在现代开发工作流程中采用自动化。这将使安全团队能够查看整个应用程序组合,尽早参与,并在通过IaC进行更改时为开发人员提供指导。
为了让开发人员拥抱安全,应侧重于确保安全指南适用于正在开发的产品或功能。开发人员通常会忽略或拒绝通用指南,因此指南必须清晰且具有相关性。
另外,开发人员和安全工程师并不是说同一种语言。对于开发人员来说,安全术语通常很复杂或无法访问。因此,同样重要的是,以易于开发人员理解的简单术语提供重要的指导。
安全培训是安全民主化的另一个关键组成部分。良好的安全培训有助于开发人员了解安全概念,而他们无需成为安全专家。该策略还可以帮助开发人员更好地理解来自安全同行的指导。
开发团队和安全团队之间也应该存在强大的反馈循环。由于提供安全指导,反馈应推动持续改进。
我们如何自动化安全功能?
为了使安全成为阻力最小的途径,我们需要制定安全要求,关于“什么”可访问和适用,同时我们还需要帮助开发人员解决“如何”的问题。IaC构建与如何使用代码相关的指南。如果你可以自动化操作,那么安全性就会变得很简单,方便开发人员部署。
当最佳实践通过代码自动化时,开发人员无需成为安全专家。相反,开发人员只需要了解他们的业务用例以及他们围绕安全性和合规性的目标。了解他们的应用程序的需求(他们的消费者是谁,应用程序需要遵守哪些法规或标准等等)已经是他们工作的一部分。使用这种方法,可消除很多通常阻碍民主化的摩擦和文化问题。
在代码中自动化最佳实践有助于改进安全开发过程。我们正在接近一个临界点,民主化的安全不仅是可能的,而且会加强开发人员和安全团队之间的关系。