在过去的几年里,DevSecOps已经成为一股DevOps生态的浪潮,它结合了DevOps的效率优势,同时提高了软件安全性。但是当我们开始真正实施DevSecOps时,事情往往会变得棘手。DevSecOps不能“一键启动”,其实现需要一系列工具和实践的协同支持。接下来,我们来谈谈实施DevSecOps必须考虑的主要因素,了解其中存在哪些障碍。什么是DevSecOps?从本质上讲,DevSecOps是根植于安全性的DevOps。这需要我们将安全性集成到需求、设计、代码和部署阶段——换句话说,就是整个DevOps管道。遗留的安全实践通常会减慢开发团队的速度。面对产品上市周期逐年缩短的事实,软件开发团队必须找到一种新的方法来加快软件开发,同时又不影响安全性。DevSecOps的意义也在于此。DevSecOps的最终目标是在安全团队和开发者之间架起一座桥梁,确保代码交付快速安全地完成。因此,以前的孤岛思维将被不同团队之间分担应用程序安全责任所取代。DevSecOps实践和工具那么我们如何将这些目标付诸实践呢?我们可以将哪些特定的安全环节自动化,然后集成到CI/CD流水线中?让我们结合DevSecOps工具和实践的实际情况,共同为这些问题寻找答案。一、漏洞扫描扫描代码中的漏洞绝对是保护产品安全的第一步。将漏洞扫描机制集成到CI/CD流程中,自然是实施DevSecOps的绝佳起点。这意味着我们需要确保在交付管道的每个主要阶段(从代码编写到生产部署)彻底检查代码是否存在漏洞。您需要确保负责管道每个部分的不同团队拥有检测代码漏洞所需的专业知识和技术工具。此类技术工具主要包括检测专有代码中漏洞的SAST工具和检测包含已知漏洞的开源组件的SCA工具。许多SAST和SCA供应商还提供CI服务器、构建工具、存储库和IDE的集成解决方案,可以帮助开发人员更快地发现问题。二、运行时保护安全过程的另一个关键是运行时保护,这也需要以DevSecOps策略的形式集成到CI/CD流水线中。运行时保护的本质是保护软件免受应用程序开始运行后可能遇到的威胁。虽然运行时安全性的讨论传统上集中在软件生产过程上,但事实证明,运行时威胁也可能出现在交付管道的早期。即使不存在,我们也有必要及早考虑这个安全问题,从源头上缓解运行时威胁。出于这两个根本原因,我们应该将运行时安全纳入CI/CD管道,而不仅仅是在生产环境中。运行时检测的具体工具和策略,取决于企业当前的业务需求。但是大家至少要保证自己可以监控当前应用是否有可能与违规相关的异常行为。更重要的是,企业需要了解哪些环境变量或配置设置可能会在运行时造成安全漏洞,并制定相应的流程来及时识别此类风险。第三,云服务提供商将安全集成引入应用交付过程的另一个重要策略是充分利用云服务提供商提供的安全功能。其中很多工具都位于DevOps链的部署部署后端,因此更类似于传统意义上的事后安全服务。但它仍然可以在应用程序的外部防御系统中发挥重要作用——而且因为它是云基础设施的固有部分,所以更容易实现自动化和系统化。请注意,某些安全功能可能会被云服务提供商默认禁用,或者可能需要配置才能工作,因此您可能需要积极主动才能从中受益。第四,标准和政策安全标准和政策的制定在很大程度上仍然是手动的。组织可以自动扫描源代码和基础设施中的漏洞,但仍然需要人类知识来确定安全优先级以及如何实施它们。同样,在设计和代码层面建立安全标准时,我们也不能完全依赖自动化。欧盟推动的《通用数据保护条例》(GDPR)也开始明确要求在设计层面制定和实施安全标准。另一方面,使用RBAC等编排工具/服务网格功能建立的细粒度策略,可以在操作层面实现一定程度的标准自动化。与应用程序源代码中的安全标准设计类似,基于角色的访问策略设计需要作为高优先级全面推广。五、容器与服务管理在部署基于容器的大规模应用时,以Kubernetes为代表的容器编排工具已经成为不可或缺的要素。服务网格可以与编排工具一起使用来管理常见行为,例如服务发现和访问活动。同时可以快速理清用户、容器化应用、外部服务之间的关系,帮助我们清晰的了解当前的操作系统。全局。而这类工具已经成为DevSecOps中的关键要素,它们可以完全实现容器与外界之间高度可扩展的隔离层(从而确保用户或潜在的攻击者只能访问隐藏在代理后面的服务,而不能触及任何单个容器),并用它来实现认证、授权、加密等功能。更重要的是,这些工具在设计时考虑了自动化,使其更容易匹配现代开发和运营环境。但相比于云服务商提供的安全工具,编排工具和服务网格需要我们深入研究其中的安全功能,并在必要时主动配置启用。例如,Kubernetes中基于角色的访问配置(RBAC)虽然已经是DevSecOps空间中的一个重要元素,但默认情况下并未直接启用。小结要实现DevSecOps,必须对现有的IT资源和DevOps流程进行综合评估,然后建立整体策略,确保在流程中集成高级别的安全机制。除了前面提到的,DevSecOps还包括许多其他应该包含在实施策略中的重要元素,例如监控、日志分析和警报。但是,其中很多已经成为软件和互联网安全领域的标准要素,本文不再赘述。当安全和CI/CD流水线完全融合时,DevOps也将与DevSecOps融合,共同成为“下一代软件开发”的新范式和新标准。
