DevSecOps:定义和深入

了解如何将DevOps扩展到应用程序安全.

探索InsightAppSec

什么是DevOps安全?

DevOps安全是一种实践,开发运维(DevOps)组织的任务是探索和实现,以保护数据安全 软件开发生命周期.

这通常表示保证整个的安全 持续集成/持续交付(CI/CD) 管道, 从将被集成的工具, 开发人员将负责以下流程, 以及这些过程的执行程度. 关于DevOps安全意识形态的挑战,Forrester说:

“安全领导者寻求降低与不安全的DevOps流程相关的风险, 一半的人很难做到这一点,因为安全和开发过程没有集成. 从开发者的角度来看, 领导层将安全置于交付日期和现有安全协议之上,有时会迫使他们破坏访问控制,以满足交付期限. 低效的流程和缺乏明确的责任界限会在DevOps和安全团队之间造成摩擦.”

然而, 为了确保开发过程的安全,已经产生了优先考虑易用性的解决方案, 效率, 自动扫描 infrastructure-as-code (IaC) 模板. 通过这种方式,开发人员可以确保快速交付的安全性.

诸如命令行接口(CLI)之类的工具支持对IaC计划和模板进行按需安全扫描,并直接在CLI中交付结果, 从而缩短安全性和遵从性问题的发现和反馈循环,达到立即补救的程度.

什么是DevSecOps?

DevSecOps是通过工程师之间的合作将安全流程更早地集成到CI/CD管道中的过程, 安全团队, 以及其他领导职位. 这个过程也被称为“向左移动”." 

DevOps在开发和运维团队之间建立了协作文化和敏捷关系, DevSecOps旨在以生产力和伙伴关系的名义继续这些主题. 这个概念强化了每个员工和团队都对安全负责的理念, 这些决定需要在不牺牲安全的情况下有效地达成并付诸行动. 

更快地将新代码投入生产是推动新业务发展的一个目标. 然而, 在当今世界,这一目标需要与解决安全问题的责任相平衡. 自动化是将安全性转移到开发过程中的关键推动者. 目标是将安全的不同阶段引入DevOps模型,并使整个过程自动化, 因此,安全性直接集成到初始应用程序构建和IaC模板扫描过程中. 

DevSecOps的主要目标和好处是什么?

DevSecOps的主要目标和好处是为组织打开了一扇门,让组织在各个部门之间体验到运营效率的提升. 这包括: 

  • 更快的安全团队响应时间 
  • 早期代码漏洞检测 
  • 提高产品可靠性 
  • 在后期安全实践的应用过程中减少僵局
  • DevSecOps工程师有更多的时间来创建更精细的产品开发周期 
  • 消费者以更快的速度体验到越来越安全的产品

优先考虑Web应用程序的DevSecOps 

  1. 应用程序及其 漏洞 暴露在互联网上是为了被客户使用吗. 因此, 与其他关键基础设施相比,它们很容易进入攻击者的攻击范围——通常伪装成合法的流量, 恶意攻击者.

  2. Web应用程序经常与数据库通信, 文件共享, 还有其他重要的信息——这是大量的数据. 如果他们被入侵,就更容易获得所有关键数据. 这包括信用卡, 个人身份信息(PII), 社会安全号码, 以及其他专有信息.
  3. 对于攻击者来说,有一些工具可以让他们相对容易地渗透和利用. Web应用程序安全测试 是否至关重要,特别是因为大多数应用程序漏洞都是在源代码中发现的. 动态应用安全测试(DAST) 是否有一种主要的方法可以扫描web应用程序的运行状态,以帮助开发人员识别真实的, 可利用的风险. 以真正的DevSecOps的心态, 需要注意的是,在软件开发生命周期(SDLC)的早期进行扫描可以将时间还给开发人员和测试人员.

采用DevSecOps思维模式

就像DevOps一样,伙伴关系和协作是DevSecOps的全部内容. 安全和开发团队聚在一起了解其他团队面临的风险是至关重要的. 将安全测试集成到SDLC中的有效方法包括: 

  • 使用持续集成解决方案来确保在应用程序投入生产之前,安全测试可以轻松且自动地进行
  • 实现问题跟踪,以确保应用程序安全解决方案自动将缺陷发送到开发和QA团队使用的问题跟踪解决方案
  • 利用自动化和测试使安全测试更加有效 

将应用程序安全性更早地嵌入到SDLC中有许多好处. 如果您像对待其他软件缺陷一样对待安全漏洞, 如果开发人员和测试人员能够更早地识别出这些问题,就有可能节省金钱和时间.

DevSecOps挑战

不出意外的话, 您现在应该能够理解,将安全原则集成到DevOps流程中是完全可能的, 但也并非没有挑战,比如:

快速变化的步伐 

最终目标、优先级和截止日期的变化速度每天都在增加. 人们只是期望安全能够跟上. 面对这样的变化,这可能是一个挑战 云迁移 以及全面的数字化转型. 频繁地扫描和测试开发的安全性应该尽早得到涉众的认可. 更大的挑战将会出现,如果有人在问题进入生产环境后发现了问题,并且必须放慢速度以适应补救措施. 

云安全 

整体 云安全 在增加DevSecOps过程时应该考虑什么. 这可以包括从云服务提供商(CSP)本地安全控制到您的组织如何利用它们的所有内容, IaC工具的复杂性, 识别将被自动化的过程. 随着云中工作负载数量的增加, 安全挑战有时会落在传统流程之外, 从技术和操作的角度来看增加了额外的风险.

工作负载集装箱化 

平台 Kubernetes 对运行应用程序的各种容器进行分组和管理. 容器不断地被旋转和替换, 因此Kubernetes将立即交换容器以确保没有停机时间. 不难想象,在这样的发展速度下,安全是多么具有挑战性. 在这一切之中, 很难发现相关的见解和威胁发现,也很难控制由于无意中被覆盖的实例而产生的不可预见的漏洞.  

协作 

组织内部的繁文缛节可能会带来挑战,比如缺乏管理层的支持, 预算不足(开源工具可以提供帮助), 孤立的努力. 另外, 熟练工人的短缺可能会加强这些管理级别的旧决策模式. 让团队以一种快速的方式来解决一个问题可以决定成败. 100%的跨职能工作很可能不是每个组织都能实现的. 然而, 接近这个目标有助于加强团队, 提升士气, 并反馈关键的学习,最终提高成功的速度.

DevSecOps最佳实践

尽管存在不小的挑战, 建立DevSecOps最佳实践可以确保——一旦进程或多或少启动并运行——安全性不会成为应用程序开发速度的障碍. 

  • 建立跨职能的支持由于开发团队的数量,这一点至关重要, DevOps的工程师, 安全团队——他们必须一起工作来创建一个真正的DevSecOps组织.
  • 在开发者所在的地方与他们见面开发人员希望编写代码,而不是实现安全性. 因此,他们应该尽可能容易地做到这一点. Rapid7的 CLI 工具可以帮助促进这一过程.

  • 在开发和生产中使用一致的政策和标准:在开发中运行扫描与在生产中运行扫描是不同的. 减少团队摩擦, 使用一致的策略和标准来捕获错误配置或不合规问题是一个好主意.
  • 选择与现有管道/工具链共存的工具无缝集成是这个过程的关键, 因此,选择能够支持其他工具并与之集成的安全工具至关重要. 例如, 如果Terraform是你的IaC工具, 选择一个可以扫描Terraform的安全工具是个好主意. 如果它能与开发者交流的消息平台集成——比如Slack——那就更好了.
  • 尽可能自动化一切速度和效率是最终目标. 这可以通过自动化不需要手动完成的过程来实现,并消除开发人员之间的摩擦, 操作, 以及尽可能的安全.  

阅读更多关于Web应用程序安全的信息

了解Rapid7的Web应用程序安全产品

DevOps安全:博客的最新消息