随着基于云的网络攻击的数量和复杂程度的增加,软件团队从一开始就考虑安全最佳实践进行编码的压力也相应增加。因此,近年来,DevSecOps 方法已成为企业内部的标准。
红帽最近发布的 Kubernetes 安全状况报告强调,78% 的受访者已经在实施 DevSecOps 计划。更重要的是,27% 的受访者在整个产品开发生命周期中集成和自动化了安全性,这意味着他们已经实现了完整的 DevSecOps 成熟度。
尽管 DevSecOps 得到快速采用,但安全问题仍然存在,这表明在大多数公司中安装敏捷安全态势存在困难。 Red Hat 的报告显示,93% 的受访者在过去一年中在其 Kubernetes 环境中经历过至少一次安全事件。另有 55% 的人出于安全考虑推迟了应用程序的推出。
虽然 DevSecOps 是将安全与 DevOps 管道结合起来的答案,但企业在实践中面临着许多挑战。
以下是 DevOps 安全面临的三个最突出的挑战:
1.机器ID管理
随着 DevSecOps 将安全性进一步推向开发时间表,“左移”运动在大多数组织中如火如荼地进行着。然而,规定尽早解决安全问题与实际确保这一点之间存在很大差异。
通常,左移并没有伴随着正确的文化转变和工作流程流程——导致仅仅是表面上的变化。如今,安全态势中最明显的漏洞之一是假设人类 ID 主导访问管理领域。
实际上,DevOps 的副产品和容器化的兴起是随后机器 ID 的增加。现代开发环境涉及复杂的微服务网络、云容器和不断访问系统和数据的一次性进程。在这样的环境中,手动安全访问批准是不可能的。
“机器身份分散在混合多云环境中,需要能够连接到其他工作负载或服务以完成其任务,”Rene Paap 在最近为秘密管理平台 Akeyless 撰写的一篇文章中指出。“但是访问策略控制访问权限级别应该是一致的,无论工作负载在哪个云上运行。”
公司需要通过基于应用程序编程接口 (API) 的平台进行集中控制。 Paap 指出,通过脱节的访问管理实施的不一致政策将带来负面后果:
“不一致的访问策略最终会导致安全盲点,”他说。 “例如,基于 AWS 的策略可能会错误地保留默认权限配置文件。集中策略配置和执行通过简化操作来避免这种风险。”
简而言之,DevSecOps 需要的不仅仅是表面层面的左转。它需要对实际工作流程进行基础设施和流程更改。在今天的实践中,即时凭证访问和安装零信任原则等策略为这个问题提供了强大的解决方案。 (另请阅读:零信任模型优于 VPN。原因如下。)
2. 容器抽象
自动化在 DevOps 管道中无处不在。许多安全策略仍然基于手动执行假设运行,安全管理员实时验证每个访问请求。结果是团队难以跟上的访问请求暴风雪。
除了安全团队花更少的时间分析根本原因外,这张图片的最大问题是无法监控临时访问请求。 NeuVector 的首席战略官 Fei Huang 解释了这个问题,他说:
“这种容器化环境是超动态的,因为它可以快速扩展和/或更改;这使得传统工具很难赶上。例如,Kubernetes pod 可能只运行几分钟就消失了自动以便所有资源都可以重复使用。”
另一个问题是 Kubernetes 本身为恶意行为者提供了一个重要的攻击面。安全团队常常难以跟上开源变化的步伐,即使攻击者不断地探测它们也是如此。漫长的启动时间会产生潜在的安全问题。
传统的防火墙工具在这种情况下无能为力,因为它们缺乏对多云容器化环境中实时漏洞的可见性。同样,安装正确的工具并使安全过程的更多部分自动化可能是正确的答案。
虽然安全团队面临学习曲线,但付出的努力是值得的。
3. 缺乏自上而下的安全流程
通常,开发人员希望交付高质量的代码,但缺乏安全知识阻碍了他们的发展。正如每个 CISO 现在所发现的那样,开发能力和安全技能是独立的世界,几乎没有交叉。
大多数组织已经通过 DevSecOps 安装了左移,这将安全责任交给了产品团队。公司必须优先培训开发人员安全最佳实践和促进协作,而不是进行表面层面的更改。
HPE PointNext Services 的高级安全和风险管理顾问 Simon Leech 就公司如何重新设计其培训和意识计划提供了一些其他见解:
“确定内部拥护者作为提升 DevSecOps 重要性的一种方式也很重要,”他说。 “开发团队中的高级人员可以指导和指导初级开发人员,同时充当与执行团队的接口。”
更重要的是,Leech 断言,“高管们需要知道,他们为实现 DevSecOps 文化变革所投入的资金正在产生回报——也许是实现更低的缺陷率或发布更高质量的软件。”
此外,公司可以与安全团队一起进行实时数据泄露演练,并让开发人员参与渗透测试等特定安全演习。通过让两个世界了解彼此的环境,公司可以更紧密地将开发与安全结合起来。
成功的 DevSecOps 计划的安全最佳实践
坚持SDLC和变更管理。确保您的开发团队遵循适用于软件开发生命周期 (SDLC) 的最佳实践,并且他们采用适当的变更管理可以确保开发的代码得到严格检查,以防止错误和缺陷被释放到您的生产环境中。
自动化安全测试。代码安全至关重要,而自动化安全测试——当与构建过程集成时——可以在代码上线之前发现并修复缺陷。
配置访问权限。允许团队成员有足够的权限来执行一个角色。这可以包括即时 (JIT) 访问。此外,使用身份和访问管理 (IAM) 工具来实施强大的访问控制可确保 DevOps 平台的安全。本质上,您希望保证只有授权人员才能访问 DevSecOps 环境。
保持适当的隔离。尽可能保持开发和生产环境的自主性。
训练你的团队。开发人员和管理员应该具备安全软件开发实践的应用知识。
跟踪、审核和记录 DevSecOps 环境中的所有操作。这有助于安全分析师快速调查潜在的漏洞并识别攻击媒介。 (另请阅读:数据泄露响应:恢复的 5 个基本步骤。)
采用全面的代码级安全分析。这将帮助您自动化和保护您的软件开发,及早发现漏洞并在它们导致问题之前修复它们。
将持续集成限制在最关键的变化上。此外,限制其时间和频率以减少攻击面。
解决方案:增量方法
多云安全管理涉及通过单一管理界面(或“单一管理平台”)在 DevSecOps 云环境中保持对谁做什么、何时做什么以及如何做的控制。
多云管理工具可以帮助您跨多个公共云和私有云跟踪您的资源,使您能够从一个界面控制您的应用程序和工作负载。将工作负载从一个云环境迁移到另一个云环境变得更易于管理,例如,在移动 Kubernetes 集群时。
现在有如此多的云环境在流通,公司需要非常快速的强大和敏捷的安全系统。但是,对于开发人员和安全团队之间缺乏协调的问题,没有快速解决办法。 DevSecOps 是一个很好的开始,但公司必须更深入地挖掘以安装更好的流程,然后才能看到红利。
最好的方法是稳步、渐进地实施 DevSecOps,而不是彻底改革。这将产生经得起未来考验的安全态势的更持久的结果。