关于安全性的一个棘手问题是,这就像是“打鼹鼠”的游戏。一次性处理可能很简单,因为许多漏洞可以修补,并且企业可能已经制定了使用安全应用程序的流程。而困难的是,有太多的“鼹鼠”,没有太多时间来确保系统安全,而人工处理过程很繁琐,因此需要实现安全自动化。
安全自动化的5种有意义的方法
对于实现安全自动化,企业可以了解对企业具有意义的五种方法。
(1)了解对企业重要的事情
许多安全工具可以集成到自动化流程中,例如持续集成(CI)/持续交付(CD)管道。以这种方式集成安全性通常被称为DevSecOps。DevSecOps是组织扩展DevOps的一些实践和过程的一种方式,以继续快速开发和缩短发布周期,同时解决安全问题。而且这样做不会造成更多的开销和延迟。
DevSecOps一直面临的挑战是安全是一个多方面的问题,无论是对于一般的应用程序还是对于云计算原生应用程序。DevSecOps扫描源代码中的已知漏洞,确认应用程序依赖项目的当前版本(如数据库)用于构建代码,或者检查生产中运行的应用程序是否保持最新版本。很多人正在搜索将应用程序与其他所需组件封装在一起的容器中的漏洞。企业要确保应用程序平台、工具链和开发人员客户端本身是安全的。
其中完成许多任务需要不同的工具。但是,并非所有这些任务对于企业来说都具有同等重要的意义。如果尚未使用容器,或只使用自己构建的容器,容器扫描工具可能不是优先事项。如果在受到管制的环境中,则可能需要为某些类型的数据或通信优先考虑额外的安全级别。
(2)实现容易成功的目标
尽管实施更全面的安全性方法可能是一个重要的项目,但是可以通过一些相对较小的改进而获得更大的成功,并确保软件供应链安全。
随着开源软件的广泛使用,开源代码正逐渐进入越来越多的应用程序中,无论是专有的还是开源的。例如,Synopsys公司在其发布的“2020开源和风险分析报告”中指出 ,该公司审核了1253个应用程序,发现其中99%的应用程序包含开源组件,总的来说,70%的代码是开源的。分析报告还发现,82%的代码库的组件已过期4年以上,88%的代码库组件在过去两年中没有开发活动。
但是,企业不应避免使用开源库和其他组件。它应该是从受信任的来源获取经过签名的软件,并使其保持最新状态。如果在开发过程中使用开源软件,那么改善软件供应管理是企业可以采取的最重要步骤之一,而且几乎都会这样做。
(3)文化胜过过程,过程胜过工具
现在有很多良好的工具。而且企业应该至少利用其中一些工具自动执行以确保安全性。但是仅靠工具是不够的。需要有一个过程,并以一致的方式使用工具。自动化技术在这方面有很大帮助。
但是企业还需要一种安全文化,在这种文化中,安全是每个人都在考虑的事情,而不只是安全团队的事情。
这并不是说每个人都必须成为安全专家,但是需要了解开放式网络应用程序安全性项目维护的十大网络安全性风险列表。该列表包括诸如注入漏洞、跨站点脚本XSS、身份验证损坏等风险,并且每年都会更新。令人关注的是每年的变化很小。回顾10年的清单,就会发现许多与当前相同的风险。而这种变化很慢,这很重要,因为文化很难改变。
(4)采用自动扫描技术
安全文化采用可靠的安全过程,并在整个开发过程中使用安全工具,其结果是安全性很早就开始内置。这是有利的,因为即使最终在代码投入生产之前发现了所有的安全缺陷,这意味着现在必须从头开始,这就是安全性成为瓶颈的原因。
与其相反,企业应该尽早发现问题,并且解决的成本相对较低,可以使用自动扫描来捕获漏洞。这是现代制造系统中的一种众所周知的做法。企业希望在零组件安装到车辆上之前就发现供应商的问题。
(5)安全自动化也与运营团队有关
虽然DevSecOps在全球范围内可以操作,但考虑到DevOps在历史上倾向于以开发人员为中心,因此经常会忽略安全性。
然而,安全自动化对运营团队同样重要。这种自动化通常看起来与云原生架构之前有所不同,那时更可能修复长时间运行的虚拟机或服务器实例中的漂移和其他问题。现在,更有可能关闭一个容器并启动一个新容器。
但是,需要知道哪些容器需要构建新的容器进行更新,构建这些容器包括针对新问题的安全修补程序。此外,在不停机的情况下快速将这些更新的容器投入生产可能会受益于快速部署。
这听起来工作量很大吗?如果人工处理的话是这样。与其相反,监视生产中的容器并根据需要刷新它们的过程需要可靠的自动化技术。这是安全自动化过程中的共同点。