从 Dev 和 Ops 视角出发,聊聊 DevSecOps 的 What / Why / How


近日,极小狐和 TA 的朋友们相聚上海,开展了一场技术 Meetup,从 DevSecOps 的 What、Why、How 出发,通过分享真实应用案例,与参会者交流 DevSecOps 的实践过程和落地经验。
 
本文整理自极狐(GitLab) 资深云原生架构师郭旭东在会上分享的内容,从 Dev 视角和 Ops 视角聊了聊企业引入 DevSecOps 能解决什么问题,并基于极狐GitLab 的实践经验,分享 DevSecOps 如何落地。Enjoy~
 
DevSecOps 是覆盖软件开全生命周期的一种安全防护体系,也是一种集众多安全手段于一体的方法。
 
工具是手段,不是目的” 这是我们一再申明的观点。DevSecOps 最终目的是为了尽早的发现、挖掘软件中潜在的安全问题,以直观的方式呈现给软件开发生命周期上的相关人员,包括 Dev、Ops、Sec、QA 等。
 
为什么需要 DevSecOps ?
 
Dev 视角 👀
 
Dev(研发人员)不小心写了 bug,造成安全漏洞,给研发人员和公司都会带来损失。
 
为了避免这样的 “悲剧”,研发希望在开发过程中,就进行充分的安全验证,「安全左移」由此而生。
 
相较于传统「右侧防护」的安全模式,「安全左移」把各种安全实践内建到软件开发的各个关键节点之中,通过尽早引入安全实践以及快速获取安全反馈的方式,从问题的源头着手避免安全问题的产生。
 
 
而 DevSecOps 是安全左移的最佳实践:DevSecOps 的关键是将安全性嵌入到整个软件开发生命周期中,从而确保应用程序的安全性能够得到持续不断地改进和维护。
 
 
实施 DevSecOps,Dev 会面临什么变化?
 
一方面,是需要学习新知
 
  • 安全知识:例如常见的攻击类型、安全漏洞、安全措施等;
  • 工具和技术:例如持续集成和持续交付工具、自动化测试工具、容器化技术等;
  • 测试方法和流程:例如自动化测试、集成测试、安全测试等;
  • DevOps 文化和实践:例如敏捷开发、持续集成和交付、自动化和可观测性等。
 
另一方面,可能也会面临一些心智负担
 
  • 压力:例如需要快速响应问题、持续改进工作流程等;
  • 复杂性:可能会增加一定的复杂性,例如需要对多个工具和技术进行整合、需要处理多个团队的反馈等;
  • 变化:例如需要改变工作方式、角色和责任等;
  • 沟通和协作:需要更频繁地进行沟通和协作,需要团队成员具备良好的沟通和协作能力。
 
Ops 视角 👀
 
从 Ops 视角看,DevSecOps 的关键在于:确保应用程序的安全性得到持续不断地监控、检测和响应,以保护应用程序在生产环境中的安全性和稳定性。
 
 
实施 DevSecOps,Ops 面临什么变化?
 
一方面,将更加关心自动化和标准化
 
  • 自动化:DevSecOps 实践中的许多任务都可以通过自动化来实现,例如构建、测试、部署、监控和恢复等。通过自动化,可以实现更快速、更可靠的交付流程,减少人为错误和故障,并提高生产效率和质量;
  • 标准化:标准化可以帮助团队建立统一的流程和规范,以确保开发、测试、部署和运维过程的一致性和可重复性,帮助团队减少错误和风险,提高效率和质量;
  • 流程优化:自动化和标准化可以帮助团队优化整个交付流程,从而更快速、更可靠地交付高质量的软件和服务。流程优化可以使团队更加敏捷和创新,更好地适应快速变化的业务需求。
 
另一方面,需要更加关注安全和合规性
 
  • 安全:在 DevSecOps 中,安全是开发和交付流程中必须考虑的关键因素;
  • 合规:开发和交付过程必须符合适用的法规、标准和政策;
  • 安全与合规的融合:在 DevSecOps 中,安全和合规应该融入到整个开发和交付生命周期中,而不是单独的流程,以确保软件和服务在设计和交付时满足安全和合规标准。
 
实践 DevSecOps 的难点与挑战
 
难点 1:文化变革
 
DevSecOps 要求不同团队之间更紧密的协作,这需要打破传统的部门隔离和沟通壁垒,需要进行文化上的变革,提升团队之间的信任和协作能力。
 
难点 2:工具种类繁多
 
我们让 ChatGPT 帮忙罗列了一些 DevSecOps 工具,可见之多。
 
选择适合业务需求的 DevSecOps 工具是一项艰巨的任务。因为每家企业的安全需求不同,团队首先要了解所需安全产品类型及其细分产品;选定细分类别产品后,经过下载、试用和充分比对,才能在众多产品中,挑选出合适的。
 
 
难点 3:成本和资源限制
 
DevSecOps 的实施需要投入大量的人力、物力,这对于小型团队或者资源有限的组织来说可能是一个挑战。
 
如果防御成本比被攻破之后损失的成本更高的话,防御就没有意义了。因此需要对成本和资源进行合理的规划和管理,以确保 DevSecOps 的成功实施和持续发展。
 
难点 4:风险与合规管理
 
DevSecOps 需要考虑到安全风险管理和合规要求,需要对应用程序的整个生命周期进行细致的监控和管理,深入了解各种合规标准和监管要求
 
难点 5:获取支持
 
要解决以上几点困难,首先需要的就是获取支持,包括获取领导的支持,争取更多的时间与资源来实践 DevSecOps;获取同事的支持,互相信任,共同完成既定目标。
 
实践落地难?极狐GitLab 来帮忙
 
 
极狐GitLab 提供一站式开箱即用的 DevSecOps 方案,帮助用户发现问题、追踪问题、解决问题。
 
  • 七大安全功能:密钥检测、静态应用安全测试(SAST)、动态应用安全扫描(DAST)、容器镜像扫描、依赖项扫描、License合规、模糊测试;
  • 全员参与:研发工程师、测试工程师、运维工程师、安全工程师均参与其中,互相协作,共建安全。
  • 安全流程自动化:将安全最佳实践集成到DevOps工作流中,通过流水线自动化执行,迅速提升认知,形成反馈闭环。
 
 
三步完成 DevSecOps 配置
低学习成本和心智负担
 
只要熟悉极狐GitLab CI 的使用,就可以快速上手,仅需几行代码,就可以收获一个开箱即用的 DevSecOps。
 
 
  • Step 1 导入:极狐GitLab DevSecOps 七大安全功能都有各自的 Template,用户各取所需,导入即可;
  • Step 2 自动识别:自动识别提交代码的语言,进行扫描;
  • Step 3 MR:漏洞报告直接显示在 Merge Request 中。
 
更进一步,极狐GitLab 还提供了 UI 配置, 即使不熟悉安全功能的 Template,也可以低门槛轻松上手。
 
如下图 SAST 配置,填写字段后,点击「创建合并请求」,即可自动生成 MR,查看结果。
 
 
漏洞详情一目了然,高效杜绝代码安全隐患
 
以往工作流程中,安全工程师测试后,将漏洞报告发送到工作群,请研发工程师逐个修改。但研发工程师只看到了漏洞,而具体的漏洞所在的位置等信息全然不知,修复起来十分低效和繁琐。
 
极狐GitLab 提供的漏洞详情和报告如下图,清晰展示了漏洞所在项目、在哪个文件的第几行、漏洞级别等信息;针对需要修复的漏洞,安全工程师一键「创建议题」,研发工程师即可 “对症下药” 开始追溯和修复漏洞,高效明了。
 
 
支持自定义配置,灵活匹配用户需求
 
每个扫描器有不同的配置, 在极狐GitLab 中,可以通过 Variables 来自定义配置,来达到定制部分扫描配置的目的。