DevOpsDays 是一个全球知名的系列技术会议品牌,内容涵盖了软件开发、自动化、测试、安全、组织文化以及 IT 运营的社区会议等。DevOpsDays 由 DevOps 之父 Patrick Debois 先生创办,组织中汇聚了互联网、金融以及各行各业的 DevOps 实践者,通过分享、交流彼此先进的技术思想、理念和业内最佳实践,各界精英和行业内顶尖专家以行动推动了 DevOps 在全球范围的落地。在过去十年的发展中,DevOpsDays 以城市为单位迅速席卷全球,当之无愧地成为了 DevOps 圈中最具影响力的国际盛会。
在 2021 届 DevOpsDays Tokyo 大会上,众多 DevOps 领域大咖们带来了精彩的主题分享。DevOps 之父 Patrick Debois 也在线上为参会者答疑,分享最具价值的 DevOps 实践。CODING 资深技术专家、布道师——周纪海也受邀参与大会并在线上以 DevSecOps 工具与实践为议题进行分享。
以下为周纪海在 DevOpsDays Tokyo 上分享的演讲内容——《 DevSecOps 在大型银行中的落地实践》
DevSecOps 概念、诞生缘由及优势简介
DevSecOps 是 Gartner 在 2012 年就提出的概念,其原始术语是" DevOpsSec "。2017 年 RSA 峰会之后,DevSecOps 开始成为世界热门话题。DevSecOps 基于和延续 DevOps 的理念,其设计与执行仍然处于 Agile 的框架之下。DevSecOps 的目标是将安全嵌入到 DevOps 的各个流程中去(需求,架构,开发,测试等),从而实现安全的左移,让所有人为安全负责,将安全性从被动转变为主动,最终让团队可以更快,更安全地开发出质量更好的产品。
- 传统模式下,在整个研发流程(需求,开发和测试)完成之后,在上线前需要进行安全评审。因此整个交付周期就是研发时长加上安全评估的时长
- DevOps 模式下,通过自动化,敏捷开发,团队协作。微服务设计等 DevOps 理念将整个研发阶段的时长缩短了,从而减少了交付周期。但是,由于传统的 DevOps 模式没有考虑安全,因此上线前的安全评审时长并没有因此改变。这里可以清晰的看出,整个研发流程的瓶颈是在上线前的安全评审阶段。
- DevSecOps 模式下,由于无感地左移了上线前安全评审的部分工作到开发团队,使得安全评估阶段的时长变短,从而进一步缩短了交付周期。
DevSecOps 可以给研发效能提供诸多好处,主要表现在三个方面:
- 更快 - DevSecOps 通过自动化安全工具扫描,无感地左移了部分传统模式中在上线前最后阶段进行的安全扫描工作,使得整个交付周期变得更短,交付速度因此变得更快。
- 控制风险 - DevSecOps 减少了开发团队对安全部门/团队的依赖,通过安全左移让开发团队具备发现和修正部分安全隐患和漏洞的能力。
- 节省成本 - DevSecOps 由于在 SDLC 前期阶段发现并且修正安全隐患和漏洞,避免了传统模式中在上线前最后阶段进行安全扫描发现高危安全漏洞后进行的返工,从而从流程上节省了成本。
DevSecOps 在实际落地中所面临的挑战
在 DevSecOps 实际落地中面临了诸多挑战,其中以技术挑战和人文挑战最为典型。一方面,软件开发是一个复杂的过程,需要 DevSecOps 提供相应的自动化工具支持,但由于 DevSecOps 是个全新的理念,市场上可以选择的工具较少;另一方面,人们对于信息安全的重视,推行 DevSecOps 后开发人员额外增加的工作量,以及管理层的支持与否都成为 DevSecOps 是否能够顺利落地的关键因素。不过,即使没有前者的阻碍,现阶段开发人员关于信息安全知识的储备较为缺乏,面对安全漏洞时无法顺利修复,也为 DevSecOps 的落地带来了极大的阻力。
DevSecOps 中常用的安全工具种类
- 静态应用安全工具(SAST):SAST 是从代码层面进行扫描安全漏洞。它的好处是可以精准定位,发现具体某一行代码有漏洞,同时容易被程序员所接受。但是这种工具的缺点是误报率非常高。
- 动态应用安全工具(DAST):DAST 更多的是通过模拟黑客对端口和站点进行攻击,尝试获取信息。这类工具的优点是扫描范围非常广,误报率不是特别高;缺点也非常明显,就像测试一样,需要人力去写相关代码去模拟黑客攻击,对运维同学的安全知识要求比较高,因为需要把场景模拟出来。同时,也容易产生一些脏数据。
- 交互式应用安全工具(IAST):在应用里面插入 IAST,或者是通过代理截取流量,可以分析系统在运营过程中是不是有安全漏洞。优点是扫描精准、误报率低。缺点是在更新工具的同时,服务器需要重启。
- 第三方组件成分分析(SCA):前 3 种安全工具更多的是对自己写的代码的保障,从端口层面保证自己开发的产品是安全的。然而不可避免的是在开发过程中会引入第三方的插件工具, FOSS 工具是为了保证别人写的代码的安全性。
总的来说,SAST 和 SCA 主要应用在开发阶段,DAST 和 IAST 则应用在测试阶段,安全工具在 DevSecOps 全生命周期中的分布请参照下图:
DevSecOps 的实施与运营模型
构建 DevSecOps 体系是 DevSecOps 项目的最终目标,为实现这一目标,DevSecOps 实施模型为我们的实践提供了以下几点思路:
- 第一步是采用 DevSecOps 工具发现应用程序的漏洞。并将安全工具集成到 CI/CD 流水线中,实现自动化。最终将漏洞扫描的结果在仪表盘生成可视化结果或以报告形式通知到用户。
- 第二步是为开发人员提供培训,使他们有足够的技能来修复漏洞。
- 在引入 DevSecOps 工具并为开发团队提供培训之后,DevSecOps 的最终目标是让每个人都拥有 DevSecOps 的意识,并在团队中建立 DevSecOps 文化。此外,每个开发团队都希望至少有一位具有高级应用程序安全技能的“安全专家”,能够帮助团队修复棘手的漏洞,并培训其他团队成员。
在了解 DevSecOps 项目的目标之后,DevSecOps 运行模型提供了一个关于如何执行 DevSecOps 实现的解决方案。它定义了以下几个不同角色的职责:
- DevSecOps 负责人 - 负责人的职责是推动 DevSecOps 项目,推广 DevSecOps 文化,帮助开发团队建立 DevSecOps 文化。连接开发团队和安全团队,收集开发团队的反馈,并提供给安全团队。
- 开发团队 - 将 DevSecOps 工具集成到 CI/CD 流水线中,在仪表板上实现安全扫描结果可视化。接受 DevSecOps 培训,学习足够的应用安全知识,有足够的技能修复漏洞。在实际项目和日常工作中使用 DevSecOps 工具和知识,逐步改变他们的思维方式,并在团队中建立 DevSecOps 文化。
- 安全团队 - 他们主要是提供 DevSecOps 工具以及应用安全培训。如有需要,可提供咨询服务。
以上为 2021 DevOpsDays 东京站的内容分享。