采用云优先战略的企业正以惊人的速度发展。大型企业可能每天部署数千次,同一时期的代码变化可能达到数十万次。
此外,以技术为中心的企业可能会雇佣数百名开发人员:在这种情况下,很难跟踪和理解每个项目或准确跟踪他们的工作。这种速度和数量意味着早期设计的安全程序(安全团队在部署前检查和测试代码)不再实用。
在成功采用DevOps之后,现在已经进入了DevSecOps在这个时代,安全团队将重点转移到开发人员更安全地构建代码,开发人员在安全配置的云计算环境中对基于安全基础的安全代码负责。
如果这听起来像是增加了很多额外的工作,那么事实上,大约20%的典型云计算应用程序代码是其应用程序独有的,这使得情况更加复杂。其余的还包括Linux操作系统文件、开源代码库、依赖项和其他继承元素。开发人员需要更多的帮助来确定应用程序中的潜在漏洞、更广泛的代码库和配置。采用高度复杂的安全工具集需要自动化技术。
安全自动化工作
实现自动化可以采取多种形式,进入这一领域的第一步将取决于企业的实际情况及其主要痛点。第一步是确保按设置的时间间隔自动扫描应用程序及其组件的漏洞。正如美国一家云计算通信平台即服务公司的高级安全工程师所说:“自动化是大规模确保安全的关键,因为它消除了人为错误。当我们实现自动化时,我们会发现更多的漏洞。”需要记住的是,即使在正常情况下进行扫描,对于训练有素的团队来说,这也会导致潜在的薄弱环节。此外,如果自动化已经实现,这是一项额外的工作。
云通信公司的团队向前推进了这种自动化技术。他们开发了一个GitHub该应用程序使用该工具API监控公司应用程序主要分支的变更和提取请求。当提取请求合并时,它将自动导入项目进行扫描。当创建、删除或重新命名项目时,它也会做出反应,触发适当的安全措施。该公司现在已经打开了该工具的源代码,这使其他人受益于其创新。
一家在线旅行社非常关注其系统是否存在安全漏洞。公司正在经历上述大规模快速发展,因此需要采用自动化技术。该公司的一名软件工程师指出:“以我们目前的业务规模,人工审查代码和配置是一场噩梦。”公司决定建立自己的仪表板应用程序,以便开发人员和管理人员能够通过API调用信息收集,为开发人员和管理人员提供跨项目安全所需的可见性。
一家美国媒体公司因为需要管道流程的帮助,应用程序创建了自己的内部应用程序Cloudtrail检测新的容器映像,扫描它们中的漏洞,并使用其安全工具的API获取结果并处理这些信息,创建相关团队和开发人员Jira票据。该公司的平台工程总监表示,该业务可以处理数千个容器图像和多达7000个代码存储库。只有通过尽可能多地实现工作流程的自动化,我们才能确保风险发现和缓解。
不断实现自动化
随着企业自动化的不断实现,必须考虑各种因素才能取得最佳效果。首先,这可能会影响安全工具的整体选择,并希望自动化工具具有更强的适应性。在做出决定时,功能强大,文档齐全API可用性似乎并不总是优先考虑,而是创建一个安全的自动化工具,可以完全满足企业的需求。对于其他企业(通常是小企业),编程语言是固有的SDK可用性将是绝对必要的。
当媒体公司开发自己的内部应用程序时,平台工程总监强调的第二个关键点是仔细考虑自动化的结果。如果一次扫描可以检测到数千个漏洞,那么简单的故障表需要解决所有的漏洞问题,这可能会很快导致低级操作日志堵塞,并让开发团队感到沮丧。相反,系统会过滤掉不可修复或不可用的漏洞,并根据这些漏洞对应用程序安全的影响优先考虑任务。该系统还使开发人员更容易处理故障表,并提供关于补丁可用性的建议和描述漏洞性质的文档链接。
自动化项目的最后一点是确保始终记住目标是尽可能轻松地工作。创建新的过程、新的工具或跳转方法可能是必要的一步。如果可能的话,试着使用开发人员的日常工具,无论是通过IDE、仓库或票务系统。当自动化在不增加问题的情况下实现安全时,这是企业应该努力实现的理想组合。