在传统上,保护运营环境意味着采取防火墙等安全措施。然而,像在2020年遭遇的SolarWinds这样的网络攻击在软件供应链上的威胁越来越大。研究表明,网络攻击者变得更加深思熟虑,并在软件开发生命周期的早期阶段进行攻击。
对安全软件开发生命周期的日益增长的需求引发了围绕“安全左移”概念的讨论。几十年来,安全性一直处于软件开发周期的末端,软件开发基本上是线性规划的。随着云原生应用程序的发展,以及用户对实时和全天候软件服务的需求,这种在开发周期结束时安排安全性和测试的线性方法可能会产生重大的开发、运营和成本影响。
因此,需要的不仅仅是保护外围。开发商从开发生命周期的开始,从编写第一行代码并在整个过程中运行开始,到应用程序在生产环境中运行,企业必须采取更广泛的视角来关注安全性。
安全性应该被视为基础设施元素,就像网络和存储一样。然而,与网络和存储不同的是,安全性出现问题意味着应用程序的停机和随之而来的损失,而破坏安全性可能导致敏感信息的丢失,这可能会造成更大的损失,并且在许多情况下是无法挽回的。
全面看待安全问题
企业的安全涉及多个方面,包括企业资产、设备、工具、文档和其他内部信息的安全。随着企业实施数字化转型,他们依靠软件来提供所寻求的敏捷性、性能和可扩展性优势。但是,怎样才能在生产环境中安全地运行应用程序呢?
如果企业希望改善其安全状况,则需要在流程、人员和产品上进行大量投资。仅仅在这些领域中的一个方面进行改进可能不会改善整体的安全状况,其缺点可能导致整体的软件安全风险,这就是为什么这些投资应该携手并进的原因。
例如,如果安全团队不能有效地与开发和运营团队进行沟通和协作,那么网络攻击者发现安全漏洞只是时间问题。
通过Kubernetes实现业务敏捷性
现代应用程序基于云原生技术和微服务架构。容器已经成为打包微服务的默认方式,因为它们提供了一致性、可迁移性和可重复性。随着越来越多的企业转向云原生应用程序,Kubernetes已经成为事实上的容器编排器,使得部署、发现和扩展这些微服务变得更加容易。
Kubernetes和容器在将新代码交付到生产环境时提供了急需的业务敏捷性。然而,这使得安全环境更具挑战性。Kubernetes使用熟悉的概念,例如authZ和authN、证书和加密。同时,它引入了新的概念,如部署、pod、入口、名称空间、基于角色的访问控制、服务帐户、秘密、网络策略、资源限制和配额,这些概念不仅对开发人员和运营团队来说是陡峭的学习曲线,对安全团队来说也是如此。
DevSecOps的利弊
Kubernetes打破了DevOps和安全团队之间的界限,并鼓励了DevSecOps的概念,进一步推动了安全向左转移的趋势。DevSecOps可以优化DevOps实践,将软件开发周期缩短到几周甚至几天的时间,从而满足企业和用户的多样化需求。
许多企业在尝试在生产环境中保护Kubernetes环境时发现了采用DevSecOps的挑战。DevSecOps和左移的概念要求开发人员具备更丰富的安全知识,他们还需要管理设计、开发、架构、基础设施和测试。额外的安全职责会给已经承受压力的DevOps团队带来更大的压力,这为处理Kubernetes问题打开了一个新的窗口。
采用DevSecOps和左移实践的现实方法
在大多数情况下,要求开发人员也成为遇到上述挑战的安全专家是不切实际的期望。企业的最佳选择是采用默认安全的工具和技术,并将安全专家作为平台团队的一部分,他们可以了解安全结构并构建护栏,并将安全最佳实践应用于该平台。
另外,企业可以开始关注软件物料清单(SBOM)。就像材料的详细菜单一样,软件物料清单(SBOM)列出了代码库中的开源和第三方组件,帮助团队更好地理解开发周期中单个项目和特定代码之间的关系。
SBOM还包含组件许可信息,这可以帮助企业理解许可和法规信息,从而更容易自动化遵从性检查。详细的软件文档还提高了开发人员和安全团队的代码审查效率,减少了开发人员的负担。
循序渐进提高安全性
提高安全性并不一定是孤注一掷。随着企业团队获得了运行安全生产环境的信心,这通常是一个缓慢提高企业安全状况的过程。这个过程可以从保护来自集集群外部的访问和网络流量(南北流量)开始,然后保护来自集群内部的访问和网络流量(东西向流量),最后应用安全性最佳实践。
然后,安全团队可以专注于实现安全合规性、构建零信任架构和改进供应链安全性。每个阶段都需要培训,包括学习如何部署和管理Kubernetes。成功在很大程度上取决于团队实现这些能力的速度有多快。将流程分解并以这种方式进行将使企业能够朝着实现更好的应用程序安全性稳步前进。