生活吧 关注:471,919贴子:6,073,397
  • 5回复贴,共1

极狐GitLab|DevSecOps端到端的安全能力构建为什么重要?

只看楼主收藏回复

极狐GitLab|DevSecOps端到端的安全能力构建为什么重要?


1楼2022-02-27 17:08回复
    2012年,Gartner首次提出DevSecOps概念,旨在将安全性嵌入开发过程中的每个部分;十年后,DevSecOps已经成为端到端安全能力构建的事实标准。所以,在了解DevSecOps为什么重要以及如何落地之前,极狐GitLab将带领大家先从软件开发的角度弄明白什么是DevOps。
    一、软件开发进入现代化之旅
    回望过去,软件开发大概经历了四个重要阶段:第一阶段,90年代以前,软件开发是瀑布式,像交付硬件一样交付软件,最大的特点是项目庞大、开发周期长、出现原始问题时修复难度比较大。
    第二阶段,2000年左右,敏捷开发逐渐成型,更关注微小变更,开发团队可以只交付部分功能,或者一个功能的框架。这种开发模式加快了软件交付速度,确保了主线上的代码在任何时间都可以工作。


    2楼2022-02-28 10:37
    回复
      第三阶段,2008 年前后,DevOps成为实现敏捷开发的最佳方法论之一。“敏捷”强调的是速度,要实现快速开发目标,自动化成为重要手段;而DevOps最核心的能力就是自动化。从概念来看,DevOps要打通开发、运维环节,通过更自动化的方式交付软件和架构变更过程,使得构建、测试、发布等整个流程能够更快捷、频繁和可靠,这便是DevOps。
      第四阶段,2010年以后,容器开始流行,尤其是2015年原生基金会CNCF的诞生,标志着云原生时代到来。所谓“云原生”,是将应用部署在云上,更强调动态环境构建,让软件交付变得更快捷、灵活和高效。可以说,云原生不仅解决了软件交付的“最后一公里难题”,最重要的是推动软件开发流程或者方法进入了现代化之旅。


      3楼2022-02-28 10:37
      回复
        2.扫描能力要可靠,能全面覆盖。扫描不同的安全类型,这样才能降低安全合规风险,进而降低总体成本;
        3.自动化的安全策略,针对不同等级的安全漏洞,在做代码合并或者上线部署的时候都需要一些自动化策略。比如:和环境无关的因素可以考虑忽略,也有一些不确定的因素需要人来参与,这些都需要从扫描结果中自动化,保证整个应用的高效、准确、可靠,防止安全漏洞进入生产环境。
        4.与现有工具的集成。平台开放性,也很重要。从保护既有投资的角度看,原有工具确实有着自己的特有能力,需要和新应用进行集成和互补,不能搞“一刀切”,完全抛弃旧有工具。
        5.扫描次数、行数无限制。你如果想左移,在成本可预计、可控的前提下,就尽量多扫。


        4楼2022-02-28 10:37
        回复
          如前文所述,传统业务模式下,反馈周期长、成本高、修复难度大,而新的DevSecOps可以从基础的应用安全扫描能力开始,构建端到端安全能力,将安全左移方法论嵌入到CI/CD里。
          在极狐GitLab 里,安全扫描涵盖多种扫描能力,除了常见的静态应用安全测试(SAST),还有依赖扫描,也叫供应链扫描。另外,还有许可合规扫描、容器扫描、动态应用安全测试(DAST)、IaC安全测试、Fuzz Testing模式测试,真正将安全测试内嵌于合并请求中。
          极狐GitLab 之所以被称为是DevSecOps的最佳范式,是因为可以做到多重检测和检查。
          第一,检查代码。更通俗的说法是,检查自己。比如:6次攻击里面4次是针对应用,而应用是从代码里面出来的,代码是应用的基础,静态安全测试是根据已知的漏洞特征代码进行白盒扫描,然后通过扫语言、代码,和代码管理工具连在一起。对于极狐GitLab 来说,管理工具就是管理自己,极狐GitLab在这儿,仓库也在这儿。不同的语言需要不同的特征库,按照不同的规则来检查,涉及的语言包括.net、C/C++、Python、Java、JavaScript、Kotlin、Go、Ruby等等。另外,还要按照不同语言密码/密钥检测Secret Detection,检查无意提交的密码/密钥。除了特征库维护,扫描引擎需方便易用,并保定期更新。
          第二,检查依赖。随着开源软件/组件的使用率的提高,以及开源组件生态中的漏洞数的升高,软件供应链安全变得越发重要。面对不同开源软件,如果基于某些管理体系来扫描,会让整个检测过程更方便、快捷,不用像静态检查一样,一行一行扫。比如:基于软件成分分析(SCA)的安全测试,我们可以依赖组件安全分析,还可以依赖组件开源许可合规分析。除了SCA安全测试,软件供应链也存在容器镜像,因容器镜像本身也是分层的,对于容器镜像安全扫描,和开源组件供应链扫描一样,也是分层模式,并在每一层报出已知漏洞。
          第三,检查应用。一般,网站类应用容易被攻击,所以需要在网站正式上线之前进行测试。比如:大家熟悉的OWASP Top 10,被称为是动态扫描模拟标准。如果你希望每一次提交都能够进行动态扫描,那么整个体系都需要具备动态部署的能力。动态应用安全测试DAST(Dynamic Application Security Testing)类似于黑盒测试,像外部攻击一样测试运行中的应用。


          5楼2022-02-28 10:37
          回复
            只是,对于保持传统开发及应用模式的企业来说,如何从根本上解决传统安全和云原生安全的矛盾呢?很多人可能会说,如果开发人员不具备掌控云原生安全的能力,我们就提高人员素质,进行安全培训、教育等等!这虽然是企业拥抱云原生的一种方式,但是教育成本往往很高;最重要的是,学习时间太长,会影响整个业务的发展。
            面对陌生的应用工具,只通过参数的微调,就能使用预配置,达到应用检查和扫描的目的,极狐GitLab为开发人实现了安全赋能。在极狐GitLab带来的DevSecOps能力中,实现了代码层的简化,很多应用工具已经内置于模板中,开发人员不需要一行行写代码,可通过资源配置,直接进行应用。
            在极狐GitLab 界面中,你的新代码出现了哪些安全漏洞,或者你修复了哪些老的既有的安全漏洞,安全人员和开发人员都能一目了然。如果你发现有误报,或者是和你实际情况不相关,可以选择忽略,比如:密钥检查时,结果和测试密匙无关,希望后续再处理,可以临时创建issue,把漏洞信息带进去。
            可能有些人会认为,有了极狐GitLab,安全团队是不是就没用了?的确,安全策略的自动化,会减少很多重复性的工作,解放安全人员的双手。但是,并不代表安全团队不再重要,而是要参与到更重要的工作中去。比如:存量漏洞怎么解决,如何批量更改状态等等,可以与开发人员实现更紧密的协作。
            以扫描应用场景为例,如果遇到 log4shell 漏洞检测和修复,应该如何处理呢?首先,要进行配置。通过菜单“安全与合规”-> “配置”->“依赖项扫描”启用,然后在极狐GitLab CI配置中启用依赖扫描。实际扫描的时候,会在扫描流水线上出来结果,扫描工具在默认分支上面跑,然后进入漏洞,在漏洞报告中查看结果。如果有新的漏洞,会在新的分支里进行修复。和漏洞相关的信息都会带过来,比如:标识码、相关链接、解释、相关扫描工具实践等,下次进行查看、追溯就非常方便。
            总之, DevSecOps最佳方法论的核心是,在各个阶段把安全因素考虑进去,越早解决安全问题,成本收益以及最终结果越好。而极狐GitLab可以为更多开发人员和安全人员带来从代码到应用集成,再到系统测试以及生产阶段的一站式解决方案。


            6楼2022-02-28 10:37
            回复